- ベストアンサー
定時に立ち上がるエクセルを自動で閉じさせたい!
いつも「ある時間になるとエクセルが立ち上がり、 手動で保存する」という作業をしております。 時間は決まっているので、なんとかそのエクセルに 自動で名前(出来れば日付)をつけて保存させたいのです。 立ち上がっているエクセル自体に操作(例えばプロシージャ を追加)は出来ません。 WHSやVBS?なんかの存在はしっているのですが・・・ よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんなスクリプトでどうでしょう。 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}" これで日付のついたファイル名で保存されます。
その他の回答 (3)
- toshi_ho
- ベストアンサー率42% (71/168)
えーと、それは簡単な話で(朝飯前)、 WshShell.SendKeys month(date) & day(date)を WshShell.SendKeys month(date) & day(date-1)に するだけです。 実際にお腹がすいています。!!
お礼
おかげさまで解決しました。 ありがとうございました。
- toshi_ho
- ベストアンサー率42% (71/168)
既にエクセルが起動している状態で、次のスクリプトを実行すると セルに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は、アプリケーションを制御できるので色々 試してみて下さい。
補足
toshi_ho様 ありがとうございます。 確かにaaaは入力されました。 で、どうすればいいんですか? aaaが入力されるのと、エクセルを捕まえて 名前をつけて保存という作業に接点が見つかりません。 よろしくお願いします。
- rantarou
- ベストアンサー率33% (2/6)
次のようなマクロを別ファイルで作ってみてはどうですか? 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
お礼
ありがとうございます。 参考にさせていただきます。
補足
ありがとうございます。 感激です。 もう一つよろしいでしょうか? 実際保存するときは0時を過ぎています。 そこで、一日前の日付を取得してファイル名に したいのですが可能でしょうか? よろしくお願いします。