重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
指定した時間になったらファイルコピー
を実現するにはどうしたらよいのですか。

下記のコードは作成しましたが、だめです。
しかもExcelの標準モジュールに記載

AフォルダにあるTestBook.xlsxを
Bフォルダにコピーする

Sub kk()
Dim Fso As Object
Dim A As stirng
Dim B As stirng
Set Fso = CreateObject("FileSystemObject")
Dim jikan As Date
Dim str As String

A = "Desktop\A\TestBook.xlsx"
B = "Desktop\B"

'変数にシステム時刻を代入
jikan = Time

'9:00~12:00
If jikan >= "19:45" Then
If Fso.FileExist(A) = True Then
Fso.CopyFile A, B
End If
End If
End Sub


eいろいろ検索などしましたらバッチファイル
というものがたくさんでてきました。

やり方おしえてくれませんでしょうか


バッチファイル・VBA・その他
おしえてくれませんでしょうか

質問者からの補足コメント

  • へこむわー

    Dim A As stirng
    Dim B As stirng

    スペルまちがえです。
    失礼いたしました。

      補足日時:2020/08/27 20:04
  • へこむわー

    Sub kk()
    Dim Fso As Object
    Dim A As String
    Dim B As String
    Set Fso = CreateObject("Scripting.FileSystemObject") ' まちがえてました。
    Dim jikan As Date
    Dim str As String

    A = "Desktop\A\TestBook.xlsx"
    B = "Desktop\B\"
    '変数にシステム時刻を代入
    jikan = Time
    '9:00~12:00
    If jikan >= "20:32" Then
    Fso.CopyFile A, B
    End If
    End Sub
    このままじっこうするとファイルはコピーされますが、
    時間になっても全くです。

      補足日時:2020/08/27 20:34
  • これはもしかしてVBSですか

      補足日時:2020/08/27 23:17
  • 検索したらVBSで
    やる方法見つけましたが
    そなコードはたんにダブルクリックで
    実行するだけ

      補足日時:2020/08/27 23:19

A 回答 (4件)

こんばんは、


一回VBAから離れましょう。
windowsのタスクスケジューラに.batファイルを登録する方法が簡単です。

windowsのタスクスケジューラについては、こちらがわかり易いかな?
https://pc-automation.tech/wp/run-task-at-the-ti …

バッチファイルについては、
https://www.petitmonte.com/windows/auto_backup_b …

>A = "Desktop\A\TestBook.xlsx"
>B = "Desktop\B\"
>Fso.CopyFile A, B

これは、

setlocal
copy /Y C:\Users\XXX\Desktop\A\testBook.xlsx C:\Users\XXX\Desktop\B\testBook.xlsx

endlocal

\XXXは、ユーザー名
メモ帳で作成し拡張子 .batで適当な場所に保存すればOK、このファイルをスケジューラに登録します。

登録前にテストする場合は、ダブルクリックで確認できます。

ちなみにVBAでも実行した状態を続ければ出来そうですが、、、他の事がExcelで出来なくなりますよね。
    • good
    • 0
この回答へのお礼

一回VBAから離れましょう。
わたしもそう思いました。
調べると、VBSかバッチですね
ありがとうございました。

お礼日時:2020/08/28 18:47

VBA出する意味がわからんが。


適当なbat作っておいてタスクスケジューラーで起動すればよいだけでは。
    • good
    • 1
この回答へのお礼

ありがとうございました。参考に致します。

お礼日時:2020/08/28 18:46

#2


Application.OnTime 
、ありましたね。。
>ちなみにVBAでも実行した状態を続ければ出来そうですが、、、他の事がExcelで出来なくなりますよね。
正しくない内容ですので、撤回して、お詫びします。
    • good
    • 0

OnTime を使います。



Option Explicit

Sub Test()
Application.OnTime #11:18:00 PM#, "kk"
End Sub

Sub kk()
Dim Desktop As String
With CreateObject("WScript.Shell")
Desktop = .SpecialFolders("Desktop")
End With
With CreateObject("Scripting.FileSystemObject")
.CopyFile Desktop & "\A\TestBook.xlsx", Desktop & "\B\"
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2020/08/28 19:23

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