VBS からエクセルのマクロを起動したい

Anonymous
2011-10-27T15:23:29+00:00

VBSを利用してエクセルにてデータ整理をしたいと思っております.

やりたいことは以下の3点です.

1.デスクトップにあるVBSにファイルに読み込みたいファイルをD&Dしてフルパスを取得する

2.取得したフルパスをエクセルに記入する

3.記入されたフルパスを利用してデータ整理用マクロを起動する

1と2は以下のVBSで可能でした.

また,3で起動するVBAはエクセルから起動した場合は正常に起動します.

しかし,VBSにて1~3までをやろうとすると以下のようなエラーが出てしまいました.

****************************************************  エラー文

行:24  文字:1  エラー:マクロ

’(エクセルの入ってるディレクトリまでのパス)test.xlsm!test’を実行できません.このブックでマクロが使用できないか,またはすべてのマクロが無効になっている可能性があります.

コード: 800A03EC  ソース: Microsoft Excell

****************************************************

ちなみに2010のexcelを64bit,メモリ6GBのwindows7にて使用しております.

なにかお気づきの方がおりましたらアドバイスお願いします.

****************************************************  VBS本文

Dim Exl

Dim objExcelApp

Dim Exlname

Dim rngDest

Dim Arg

Dim I

Set Exl=Nothing

Set Arg=WScript.Arguments

Set Exl=GetObject(,"Excel.Application")

'Set Exlname=Exl.Name

'Set Exlname=WScript.FullName("Excel.Application")

With Exl

Set rngDest=.Worksheets("sheet1").Range("A1")

For I=0 To Arg.Count - 1

rngDest.Value=Arg(I)

Set rngDest=rngDest.Offset(1)

Next

End With

Exl.Run  ("(エクセルの入ってるディレクトリまでのパス)test.xlsm!test")

Set Exl=Nothing

Set rngDest=Nothing

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-10-28T14:17:13+00:00

今晩きぬあささんが出てこられないようなので、横から失礼します。

私も理屈はよく分かりませんが、次のようにすると動くようです。

つまり、マクロの入っているブックをあらかじめ同じExcelインスタンスで開いておいて、ブック名だけでRunをかけています。

Dim Exl

Dim objExcelApp

Dim Exlname

Dim rngDest

Dim Arg

Dim I

Dim wMacroBook

Set Arg = WScript.Arguments

Set Exl = getobject(,"Excel.Application")

Exl.Visible = True

set wMacroBook=exl.workbooks.open("C:\Users<>\vbstest.xlsm")

With Exl

    Set rngDest = .Worksheets("sheet1").Range("A1")

    For I = 0 To Arg.Count - 1

        rngDest.Value = Arg(I)

        Set rngDest = rngDest.Offset(1)

    Next

End With

exl.Run  "vbstest.xlsm!test"

Set Exl = Nothing

Set rngDest = Nothing

なお、GetObjectでやっておられますが、私の好みとしては、CreateObjectでExcelを起動し、

そのExcelからデータの入っているブックを開くようにます。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-10-29T09:37:19+00:00

    sakudaさん、フォロー有り難うございました(^^)

    昨夜は何故かネットが繋がらずAnswersを見ることができませんでした(^^;

    megu_meguさん、無事に解決されたようで何よりでした(*^^*)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-10-29T08:23:15+00:00

    y sakuda さん,返信ありがとうございます.

    記述された文章をそのままVBSファイルにして起動してみるときちんとマクロが動きました.

    何がいけなかったのか,自分の書いたプログラムと比較した結果,

    Exl.Run  ("(エクセルの入ってるディレクトリまでのパス)test.xlsm!test")

    Exl.Run  "test.xlsm!test"

    に書き換えることでエラー文が出なくなりました.

    また,CreateObjectにすると事前にエクセルを起動しなくてよいのですね...

    勉強になりました.ぜひ,使用させてもらいます.

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-10-28T08:07:05+00:00

    きぬあさ さん,返信ありがとうございます.

    早速Openメソッドを使用してみました.

    VBS初心者のため,インターネットからのパクリですが,

    以下のような文章を足してみました.

    Set Exl=CreateObject("Excel.Application")

    Exl.Visible = True

    Exl.Workbooks.Open "(エクセルの入っているパス)test.xlsm"

    実行してみると,エクセルが起動して,起動したブック内にD&Dしたファイルのフルパスが記入されましたが,上記と同じエラーで止まってしまいました......

    エクセルの設定がいけないのでしょうか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2011-10-28T01:45:40+00:00

    こんにちは。

    Runメソッドでマクロを実行する前に、WorkbooksコレクションのOpenメソッドでマクロが設定されたファイルを開いてみてはいかがでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません