• ベストアンサー

定時に立ち上がるエクセルを自動で閉じさせたい!

いつも「ある時間になるとエクセルが立ち上がり、 手動で保存する」という作業をしております。 時間は決まっているので、なんとかそのエクセルに 自動で名前(出来れば日付)をつけて保存させたいのです。 立ち上がっているエクセル自体に操作(例えばプロシージャ を追加)は出来ません。 WHSやVBS?なんかの存在はしっているのですが・・・ よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.3

こんなスクリプトでどうでしょう。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate("Microsoft Excel") WScript.Sleep 100 WshShell.SendKeys "%" WScript.Sleep 100 WshShell.SendKeys "{ENTER}" WScript.Sleep 100 WshShell.SendKeys "A" WScript.Sleep 100 WshShell.SendKeys month(date) & day(date) WScript.Sleep 100 WshShell.SendKeys "{ENTER}" これで日付のついたファイル名で保存されます。

heimdal
質問者

補足

ありがとうございます。 感激です。 もう一つよろしいでしょうか? 実際保存するときは0時を過ぎています。 そこで、一日前の日付を取得してファイル名に したいのですが可能でしょうか? よろしくお願いします。

その他の回答 (3)

  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.4

えーと、それは簡単な話で(朝飯前)、 WshShell.SendKeys month(date) & day(date)を WshShell.SendKeys month(date) & day(date-1)に するだけです。 実際にお腹がすいています。!!

heimdal
質問者

お礼

おかげさまで解決しました。 ありがとうございました。

  • toshi_ho
  • ベストアンサー率42% (71/168)
回答No.2

既にエクセルが起動している状態で、次のスクリプトを実行すると セルにaaaが入力されます。(拡張子VBSで保存して、実行してください) Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate("Microsoft Excel") WScript.Sleep 100 WshShell.SendKeys "aaa" 同じことをするのでも次のような記述も可能です。 'C:\test\test.xlsを開いた状態で Set excel = GetObject("C:\test\test.xls") excel.ActiveSheet.Cells(1,1) = "aaa" URLを参考に一度作ってみてください。 WSHは、アプリケーションを制御できるので色々 試してみて下さい。

参考URL:
http://www.roy.hi-ho.ne.jp/mutaguchi/bbs/index.shtml
heimdal
質問者

補足

toshi_ho様 ありがとうございます。 確かにaaaは入力されました。 で、どうすればいいんですか? aaaが入力されるのと、エクセルを捕まえて 名前をつけて保存という作業に接点が見つかりません。 よろしくお願いします。

  • rantarou
  • ベストアンサー率33% (2/6)
回答No.1

次のようなマクロを別ファイルで作ってみてはどうですか? X = Workbooks.Count For I = 1 To X If Workbooks(I).Name = ブック名 Then Workbooks(I).Sheets(1).Activate       exit for else end if next ActiveWorkbook.SaveAs Filename:=ブック名 ActiveWorkbook.Close

heimdal
質問者

お礼

ありがとうございます。 参考にさせていただきます。

関連するQ&A

専門家に質問してみよう