- ベストアンサー
Excelマクロ 自動実行
マクロをつかって指定時刻になったら、自動でマクロを起動させたいのですが、どうしたらいいですか? 毎日0:00にあるデータをコピーしてディレクトリを変更したいのです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
4です。余計な処理をさせてるので、こちらを :/ここから SET DT=%date:~-10% SET FNAME=%DT:~5,2%%DT:~8,2% MOVE C:\from\MEAS.TXT C:\to\MEAS%FNAME%.txt :/ここまで(空白はすべて半角です) 西暦+月+日+時+分+秒のときは :/ここから SET DT=%date:~-10% SET TM=%time:~-11% SET hh=%TM:~0,2% SET /a hh=%hh%+0 SET hh=00%hh% SET hh=%hh:~-2% SET FNAME=%DT:~0,4%%DT:~5,2%%DT:~8,2%%hh%%TM:~3,2%%TM:~6,2% MOVE C:\from\MEAS.TXT C:\to\MEAS%FNAME%.txt :/ここまで(空白はすべて半角です)
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 #3さんのご指摘のとおり、UWSC では、ファイル名の決め方とかは、スクリプトを書かなくてはなりませんが、VBAよりは、もう少し複雑な動きが可能ですね。ただ、マクロを組める人なら、簡単に、VBScript は書けるはずです。以下のコードはすぐに読めると思います。 >毎日0:00にあるデータをコピーしてディレクトリを変更したいのです。 なぜ、データのコピーで、Excelが出てくるのでしょうか?時間設定なら、VBSCriptなどを、タスクに入れればよいと思います。 >それとファイル名を毎回変えたいのですが >(例、MEAS01.TXT、MEAS02.TXT、...) ご質問のmeas01.txt の枝番が増えるというは、元の名前が同じで、枝番を増やすということなのか、はっきりしませんが、Excelを使わなくても、単に、メモ帳で、適当な名前を付けて、拡張子に、vbs を付ければよいのではありませんか。 ただし、元ファイルの決め方をどのようにしているのか、ご質問の内容では分かりません。元ファイルを探すのか、それとも、決められているのか、ということです。ここでは、いつも同じ名前で、元ファイルは決められたものとします。 なお、最初、MoveFileも考えましたが、万が一を考えて、コピーしてから、削除にしました。 初歩的な内容ですが、こんな風に考えてみました。 ------------------------------------ ''FileCopy.VBS CONST SRCE ="C:\Documents and Settings\YOURNAME\My Documents\AFold\" CONST DEST ="C:\Documents and Settings\YOURNAME\My Documents\BFold\" CONST fBASE ="MEA" CONST fEXT =".TXT" i =01 'スタートの枝番,枝番がない場合は、"" とする Set objFS =CreateObject("Scripting.FileSystemObject") i = FormatNum(i) If objFS.FileExists(SRCE & fBASE & i & fEXT) Then orgFn =SRCE & fBASE & i & fEXT dstfn = DEST & fBASE & i & fEXT Do While objFS.FileExists(dstfn) i = FormatNum(i + 1) dstfn = DEST & fBASE & i & fEXT Loop Set mf =ObjFS.GetFile(orgFn) mf.Copy(dstFn) ObjFS.DeleteFile(orgFn) Else MsgBox "元のファイルがありません。" End If '書式変換 Function FormatNum(num) num =CLng(num) If Len(num) = 0 Then num ="" ElseIf 2-Len(num)>0 Then num = String(2-Len(num),"0") & num Else num = num End if FormatNum = num End Function
- spnlight
- ベストアンサー率46% (15/32)
>COPY A:****.xls C:\***\***.xls は、コピーで、移動なら MOVE [ドライブ:][パス]送りファイル名 [ドライブ:][パス]受けファイル名 をになります。 >それとファイル名を毎回変えたいのですが >(例、MEAS01.TXT、MEAS02.TXT、...) 予測すると、毎日あるファイルを別の場所に移動したい。尚且つ、ファイル名が一緒なので、上書きされると困るからファイル名を変更して、移動したい。 で、よろしいですか? よろしければ、連番では無く、日付を付与して保存するパターンでどうでしょうか? ANo.2さんのタスクでの実行に加え、実行するバッチファイルを以下の様に記述する。 例: 送りファイルはCドライブのfromフォルダのMEAS.TXTとします。 受けファイルはCドライブのtoフォルダのMEAS0806.TXTとします。 SET DT=%date:~-10% SET TM=%time:~-11% SET hh=%TM:~0,2% SET /a hh=%hh%+0 SET hh=00%hh% SET hh=%hh:~-2% SET FNAME=%DT:~5,2%%DT:~8,2% MOVE C:\from\MEAS.TXT C:\to\MEAS%FNAME%.txt :/ここまで(空白はすべて半角です) 私は、西暦+月+日+時+分+秒(20080826191637)の様にしてます。 その場合は、以下の様に変更です SET FNAME=%DT:~0,4%%DT:~5,2%%DT:~8,2%%hh%%TM:~3,2%%TM:~6,2% 以上 大きなお世話かも知れませんが、参考までに
お礼
参考にさせていただきました。
- kokorone
- ベストアンサー率38% (417/1093)
#1です。 すみません。 UWSCというアプリです。 http://www.vector.co.jp/soft/win95/util/se115105.html BATファイルを作成しては?と思ったのですが、対象とするファイル 名が、毎回異なる場合などは、対応しにくいので、ExcelVBAで 作成するか、VBSなどで記述されることをお勧めします。 VBSの場合は、VBSでプログラミングしたものをタスク マネージャーに登録するという手順になります。 VBSについては、 http://sapporo.cool.ne.jp/avg/vbs/vbs01.html
- hallo-2007
- ベストアンサー率41% (888/2115)
>毎日0:00にあるデータをコピーしてディレクトリを変更したいのです。 エクセルで処理せずに タスクマネージャー で実行する時間とファイル名(****.BAT)を設定しておく 全てのプログラム アクセサリ システムツール タスクスケジューラ で設定できます。 実行するファイルは バッチファイルを作成しておく メモ帳などで作成します COPY A:****.xls C:\***\***.xls とか記述して ファイル名に ***.BAT と拡張子を.BAT と指定しておくと MS-DOSのコマンドで実行されます。 DOSのバッチファイルに代わりにエクセルでマクロ Private Sub Workbook_Open() ・・・ End Sub に記述しておく方法もありますが。 の2つ設定が必要です(エクセルを起動しておく必要がありません。パソコンは立ち上げておく必要はありますが)
補足
ファイルを切り取って移動する場合はどうなるのでしょうか? >COPY A:****.xls C:\***\***.xls コピー ファイル名 コピー先ファイル名 という解釈でよろしいのでしょうか? それとファイル名を毎回変えたいのですが (例、MEAS01.TXT、MEAS02.TXT、...) できますでしょうか?
- kokorone
- ベストアンサー率38% (417/1093)
http://www.vector.co.jp/magazine/softnews/060627/n0606273.html キー操作・マウス操作を記録させ、指定した時間に再生できます。 有料版もありますがフリー版で十分使えます。 Excelのマクロの記録のようなもので、上記ソフトでも再生時刻の指定 はできますが、Windows標準のタスクマネージャーに登録して実行する ことも可能です。
補足
リンク切れのようですが… なんという名前のソフトですか?
お礼
度々、ありがとうございます。
補足
ファイル名が変わらずにMEAS.TXTのままなのですが どうすればいいでしょうか?