MicrosoftのVBで悩む。

VBAの方からコピーしてきたマクロでエラーが起きました。
オブジェクトブラウザを使って原因を調べてみると、CreateObjectというメンバがVBA専用だったようです。Excelで代用する方法を教えてください。
バージョン:VB…6.0 Excel…2002

回答の条件
  • 1人50回まで
  • 登録:2012/06/23 16:09:04
  • 終了:2012/06/30 16:10:05

ベストアンサー

id:cx20 No.1

cx20回答回数604ベストアンサー獲得回数1072012/06/23 17:39:17

VBA でも VB6 でも CreateObject() メソッドは使用できます。
VBA 専用ということはありません。

以下は VBA / VB6 で、それぞれ CreateObject() を使用した場合の例になります。
(「Speech API」というコンポーネントを利用して「Hello」としゃべらせるサンプルです。)

  • VBA
' VBA での CreateObject() の使用例
Sub SayHello()
    Dim voice                      ' コンポーネント参照用変数の宣言
    Set voice = CreateObject("SAPI.SpVoice") ' コンポーネントの生成
    voice.Speak "Hello"            ' コンポーネントのメソッド呼び出し
End Sub
  • VB6
' VB6 での CreateObject() の使用例
Private Sub Command1_Click()
    Dim voice                      ' コンポーネント参照用変数の宣言
    Set voice = CreateObject("SAPI.SpVoice") ' コンポーネントの生成
    voice.Speak "Hello"            ' コンポーネントのメソッド呼び出し
End Sub

エラーメッセージが表示されるようでしたら、その内容を記載して頂けると解決策をご提示できるかもしれません。

  • 参考情報

■ ProgID - VBScript グループ
http://vbscript.g.hatena.ne.jp/keyword/ProgID

id:cx20

Excel VBA の関数を Excel ワークシートで使用したいという質問でしょうか?

単純に、Excel ワークシートで VBA の処理を呼び出したい場合であれば「ユーザー定義関数」を作成することで実現可能です。
基本的に、上記のサンプルの「Sub ~ End Sub」を「Function ~ End Function」に書き換えれば、Excel ワークシートから呼出し可能になります。

Function SayHello()
    Dim voice
    Set voice = CreateObject("SAPI.SpVoice")
    voice.Speak "Hello"
End Function

呼び出し側

=SayHello()

2012/06/27 20:25:14
  • id:cx20
    すみません。質問をよく理解できていなかったような気がしてきました。
    (Excel VBA → VB 6.0 に移植しようとしたときの話だと思っていました。)

    > VBAの方からコピーしてきたマクロでエラーが起きました。
    > :
    > Excelで代用する方法を教えてください。
    > バージョン:VB…6.0 Excel…2002

    もしかして、VB 6.0 というのは、Excel 2002 の VBA のバージョンで、
    やりたいことというのは、
    Excel VBA の関数を Excel ワークシートで使用したいという質問でしょうか?
  • id:kota_46ra
    質問にご回答ありがとうございました。

    いいえ、 [….vbe]などのファイルから Excel VBA にコピペしたところ、エラーとなったわけです。

    説明が不十分ですみませんでした

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません