解決済みの質問
Win/XP エクセル2002使用です。
VBSからエクセルのマクロを有効にして立ち上げたいのですが、
上手くいきません。
バッチファイル側
cd /D c:\
C:\***.vbs
exit /B
VBS側
'エクセル起動
Set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\***"
WshShell.Run "C:\***\***.xls",3
WScript.Sleep(5000)
WshShell.SendKeys("E") '←マクロを有効にする
WScript.Sleep(5000)
WshShell.SendKeys("U") '←データソースへのリンクを更新
エクセル側(マクロ)
Sub Auto_open()
Application.OnTime TimeValue("13:00:00"), "Action"
End Sub
Sub Action()
・・・(省略)・・・
End Sub
-----------------------------
また、エクセルマクロは、VBSではなく手動で立ち上げますと、
問題なく時間になった時(13時)に作動します。
VBSのRunメソッドが、
エクセルマクロの
Application.OnTime を待たずに走ってしまうことで、
エクセルマクロが無効になってしまっているのではないか?
もしくは、データ更新のための
sendkey("U")によって
マクロが無効になってしまっているのはないか?
と思っています。
恐れ入りますが、
よろしくアドバイスの程お願いします。
投稿日時 - 2008-03-04 12:47:07
こんにちは。
VBS を使うなら、Excel のインスタンスを作り、Workbooks.Open で
ブックを開けばマクロのセキュリティー警告は表示されません。
# Open メソッドの第二引数でリンクの更新も指定できますし
SendKeys を使った方法より確実ですよ。一例です。
REM ■ Sample.bat ------------------------------------------
cd /D c:\
C:\test.vbs
exit /B
' // ■ VBS --- C:\test.vbs --------------------------------
Dim xlApp
Dim xlWbk
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
' // Memo: Workbooks.Open Filename, UpdateLinks ...
' // リンクを更新させて開く
Set xlWbk = xlApp.Workbooks.Open("C:\test.xls", True)
' // ■ Excel --- C:\test.xls -------------------------------
' // ThisWorkbook Module ( Auto_Open 不可では不可)
Private Sub Workbook_Open()
Application.OnTime Now() + TimeValue("00:00:03"), "Action"
End Sub
' // Standard Module
Sub Action()
MsgBox "Hellow!", vbInformation
End Sub
投稿日時 - 2008-03-04 14:07:19
1人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
#1 です。失礼。下記意味不明なことを口走ってますが、、
> ' // ThisWorkbook Module ( Auto_Open 不可では不可)
Auto_Open ではなく、ThisWorkbook の Workbook_Open を使って下さい
との意味です。
投稿日時 - 2008-03-04 14:12:26
お礼
KenKen_SP 様 早速のご回答ありがとうございます。
むっちゃ速! です(^・^)
ご教授いただいた上に、速い、確実!
最高です。 快調に動きだしました。
今後ともよろしくお願いします。
本当にありがとうございました。
投稿日時 - 2008-03-04 15:56:38