エクセルで記載したVBAマクロをVBSから起動しようとしてもうまく動作しません。
VBA単体で動かすときちんと動作しますが、VBSから起動するとどうもうまくいきません。
月初めにタスクで複数シートのある範囲のセルの値を消したいだけなのですが、ご教授いただけると助かります。
ExcelVBA(C:\hoge\hoge.xlsm)
sub 処理()
Dim i As Integer
For i =1 To 31
worksheets(i).select
range ("A1:B9").ClearContents
next i
End sub
VBS
Dim ExcelApp
Dim ExcelBook
Dim FilePath
FilePath = "C:\hoge\hoge.xlsm"
Set ExcelApp=CreateObject("Excel.Application")
Set ExcelBook= ExcelApp.Workbooks.Open(FilePath)
ExcelApp.ActiveWorkbook.Worksheets("1").select
ExcelApp.visible = false
ExcelApp.Run "処理()"
ExcelBook.Close True
ExcelApp.quit
Set ExcelApp=Nothing
Set ExcelBook=Nothing
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
Excel側のマクロについては、そのままにしておきますが、
VBS側は、2点気になる部分があります。
>ExcelApp.ActiveWorkbook.Worksheets("1").select
("1") というのは正しいですか。 Worksheets(1) ではありませんか?
Excel側のマクロが、i をインデックスとして使っているのなら、VBS側も同じ扱いのほうがよいです。(本来は不要のはずです)
そして、オブジェクトを作ったのですから、
それは、ExcelBook.Worksheets(1).Select
と同等の意味のはずです。
>ExcelApp.Run "処理()"
処理()というマクロが、標準モジュールにおいてあることが条件と、
動かない場合は、
ExcelApp.Run "'"&ExcelBook.Name& "'!処理()"
と、ブックから、まとめて呼び出したほうがよいです。
同名のプロシージャー・マクロがある時は、Module 名も付けます。
No.2
- 回答日時:
No,1の方と同じですが、マクロが
For i =1 To 31
worksheets(i).select
・・・
next i
なので
ExcelApp.ActiveWorkbook.Worksheets("1").select は 不要?
Set ExcelApp=CreateObject("Excel.Application")
ExcelApp.Workbooks.Open(FilePath)
ExcelApp.visible = True
ExcelApp.Run "処理()"
で一度、試してみれば
原因がわかれば
ExcelApp.visible = False に
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) バックグラウンドのプロセスのエクセルを閉じる方法 4 2022/05/12 15:39
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBA+VBSによる別インスタンスBookOpen時のVBSエラーに関して
Excel(エクセル)
-
バッチファイルファイル→VBS→エクセル マクロを有効にして起動
Excel(エクセル)
-
すでに開いているブックのマクロを起動させるvbsを教えてください
Visual Basic(VBA)
-
-
4
バッチファイルからVBA実行でエラー
Excel(エクセル)
-
5
Application.Runエラー(1004)
Excel(エクセル)
-
6
VBS Bookを閉じるコード
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
VBscriptでEXCELを起動
その他(プログラミング・Web制作)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
ステートメントの末尾が不正です
Windows Vista・XP
-
11
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
12
VBscriptが起動しない?
Microsoft ASP
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
MSアクセスのマクロ・モジュールを実行
その他(プログラミング・Web制作)
-
15
vbsからのExcelマクロ呼び出しの際に保存ダイアログが表示されてしまう
その他(プログラミング・Web制作)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
VBSで起動したアプリが前面表示しない
Visual Basic(VBA)
-
18
vbsでExcelのシートをコピーするには
その他(プログラミング・Web制作)
-
19
On ErrorでエラーNoが0
Visual Basic(VBA)
-
20
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
EXCELのVBAでRange("A1:C4")を...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
Excel VBAからAccessマクロを実...
-
非表示の列をすべて削除するマクロ
-
ExcelVBAでPDFを閉じるソース
-
エクセルのマクロをセルの値に...
-
ピボットテーブルでの毎回可変...
-
ExcelのVBA。public変数の値が...
-
wordを起動した際に特定のペー...
-
TERA TERMを隠す方法
-
エクセルマクロ自動更新
-
エクセルに張り付けた写真のフ...
-
有効数字N桁のマクロについて
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報