<前提条件>
・パソコンを常に起動している(シャットダウンはしない)
・TEST.xlsにマクロ作成済

<お聞きしたいこと>
・毎日指定時刻(15:30)にTEST.xlsを開き、登録されている
 マクロを自動で実行したい

<私の考え>
・TEST.xlsに下記マクロを登録しようと思っております。
 ただ、下記だけですと、「指定時刻にエクセルを開く」と、
 「毎日指定時刻に自動でマクロを実行する」ことができません。
 あまりマクロについて知識がないため、ご教示のほどよろしくお願いいたします。

Sub 指定時刻にマクロを実行する()
Application.OnTime TimeValue("15:30:00"), _
"MSGBOX", _
TimeValue("00:00:30")
End Sub

Sub MSGBOX()
msgbox"TEST"
End Sub 

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>パソコンを常に起動している(シャットダウンはしない)


Excelも常時起動しておけるのなら、この様な方法も

Sub 指定時刻にマクロを実行する()
  Application.OnTime TimeValue("15:30:00"), "MSGBOX", TimeValue("00:00:30")
End Sub

Sub MSGBOX()
  Dim myDate As Date

  MSGBOX "TEST"

  myDate = DateValue(Now() + 1)
  '翌日のOnTimeセット
  Application.OnTime TimeValue("15:30:00") + (myDate), "MSGBOX", TimeValue("00:00:30")
End Sub
    • good
    • 2

#1様がおっしゃられているようにタスクを使うべきですね。


スタート→すべてのプログラム→アクセサリ→システムツール→タスク(XPの例)
そこで15:30にTEST.xlsを実行させてあとはオープンイベントでいいんじゃないでしょうか?

オープンイベントについては下記参照
http://office.microsoft.com/ja-jp/excel/HA010346 …
    • good
    • 2

Excelのマクロは、Excelが起動していてマクロを含むブックが読み込まれている状態でないと実行されません。

なので、Excelのマクロに何を書いても、Excelが起動していない状態からExcelを起動することはできません。
タスクスケジューラに登録するなど、別の方法を考えてください。
    • good
    • 2

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB2010で、TimeValue("00:00:00")の足し算がで

VB2010で、TimeValue("00:00:00")の足し算ができません。

調べたところ、TimeValu同士の足し算ができそうなのですが、うまくいきません。
以下のコードをどう修正したらよいでしょうか。
どなたか教えていただけませんでしょうか。
よろしくお願いします。


objTime="00:00:00"
objSearchTime = TimeValue(objTime) + TimeValue("00:00:59")
MsgBox(objSearchTime)

メッセージボックスの内容
00:00:0000:00:59

希望結果
00:00:59

Aベストアンサー

こちらはVB2008ですが
参考例
Dim T1 As DateTime = TimeValue("00:00:10")
Dim T2 As DateTime = TimeValue("00:00:59")
MessageBox.Show(TimeValue(T1.AddSeconds(T2.Second)))
出力結果 0:01:09

DateTime同士の足し算だとAddSecondsやAddMinutesのように分や秒といったデータに区切って行えばできますよ。

QSubとEnd Subについて

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate URL
objIE.Visible = True

Do Until objIE.Busy = False
WScript.sleep(250)
Loop

If objIE.document.URL = URL Then
BodyText = objIE.document.body.innerTEXT
AriNashi = InStr(1, BodyText, "Yahoo")
If AriNashi > 0 Then
Set objINPUT = objIE.document.getElementsByTagName("input")
objINPUT(0).value = LoginID
objINPUT(1).value = Password
objINPUT(2).Click
Else
msgbox "NO"
End If
Else
WScript.Echo " ダ メ" & Err.Description
End If
Set objIE = Nothing

VBScriptのSubとEnd Subについて教えて下さい。

Dim LogonID
Dim Password
Dim URL
Dim objIE
Dim objINPUT
Dim BodyText
Dim AriNashi

LogonID = "XXXXXXXX"
Password = "XXXXXXXXX"
URL = "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.ya..."

下記のようなプログラムはうまくいくのですがSubで囲むと何故か動作しなくなってしまいます。
使い方が間違っているのでしょうか?


Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ...続きを読む

Aベストアンサー

Subで囲むとプロシージャとなります。
プロシージャは他から呼び出されない限り、勝手に動作はしません。

Sub Hoge
'実体
End Sub

と書いたなら、プロシージャの外で
Call Hoge()
のようにプロシージャを呼び出してあげてください。

Q1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある

1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある場合、
すべてのファイルに一斉にA1セルに「a」という文字を反映させる場合の
VBAプログラムを教えていただけますでしょうか?
よろしくお願いいたします。

Aベストアンサー

フォルダ名を変更してから試してね
4行目の
mPath = "C:\tmp\"
「aaa」なら
mPath = "C:\aaa\"
に変更


Sub test()
Dim mPath As String
Dim nf As String
mPath = "C:\tmp\"
nf = Dir(mPath & ".xls")
Do While nf <> ""
Workbooks.Open Filename:=mPath & nf
Workbooks(nf).ActiveSheet.Range("a1").Value = "a"
Workbooks(nf).Close SaveChanges:=False
nf = Dir()
Loop
End Sub

簡単なコードにしてあるので、分らない所はヘルプで調べてね
参考まで

QSub-EndでConsole.Writeでコマンドプロンプト出力したい

VB.NET2003:WindowApplication の Sub~End で 出力Console.Write("***") としてもコマンドプロンプトウィンドウにでないで、.NETウィンドウのデバッグ欄にしか出ない。前もって何かを指定しなければならないのでしょうが全くわかりません。ConsoleApplication ではうまくいっていますが。初心者なのでよろしくお願いします。

Aベストアンサー

Windows Applicationは,コンソールを持ちません。
# AllocConsole API等を使えば,専用コンソールを持てますが。

コンソールへ出力したいのであれば,Console Applicationにする必要があります。
なお,Console ApplicationであってもWindows Formsを開く事は可能です。

Qsubプロシージャーですか?subステートメン

----------------
Sub test()

End Sub
----------------
は、subプロシージャーですか?subステートメントですか?

上記のコードの「Sub」にカーソルをあて、F1を押すとヘルプが立ち上がり「Sub ステートメント」と表示されますが、

挿入(I)→プロシージャー(P)を見ると画像のように「Subプロシージャー」となっています。

どちらが正しいのでしょうか?
どちらも正しいのでしょうか?

Aベストアンサー

Sub~という構文が「Subステートメント」。プログラミング言語では、ステートメントは「文」とも訳されます。
そのSub~End Subで定義した一連のものが「Subプロシージャ」。プロシージャは「手続き」とか言う意味。

だから、Subのヘルプを見ると、Subステートメントの書式などになってるし、
挿入→プロシージャでは、「手続き」とての一かたまりを挿入するから、End Subまでになる。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報