Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : 指定なし)
ファイルのコピー コピー先ファイルのシートが真っ白に
投稿日時: 20/02/16 16:32:02
投稿者: tarima

共有フォルダ内にExcelファイルを作成、他ファイルからデータを取込、様々な処理後、保存、別名でファイルのコピーを作成。
これを一度に平均10ファイルほど処理します。ファイルはすべて1シート/1ファイルです。
毎回エラーにはならず正常終了します。しかし、いくつかのコピー先ファイルのシートが真っ白で何もデータがないという現象が時々発生します。全ファイル正常に作成できる時と、処理したファイルのうちいくつかのコピー先ファイルが真っ白の場合があります。もう一度同じ処理を実行すると全部正常に作成されたりします。
コピー元ファイルは必ず正常に処理されており、コピー先ファイルもファイル自体は必ず作成されます。
しかし、中身が真っ白であるということが時々発生します。法則はわかりません。
何か原因に思い当たる方がいらっしゃいましたら、教えてください。
現在は再度実行するという対応です。
 
ファイルのコピー処理の抜粋は以下です。
実際はエラー処理が入っていますが、エラーにはなりません。
 
Sub subCopyFile(pstrSrcPath As String, pstrDestPath As String)
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Dim f As Object
  Set f = FSO.GetFile(pstrSrcPath)
  f.Copy Destination:=pstrDestPath
End Sub

回答
投稿日時: 20/02/16 17:51:39
投稿者: takesi

ファイルコピーは非同期だから
コピー完了前に次の処理にいってないかな?
 
  Do
        If Dir(pstrDestPath) <> "" Then Exit Do
        DoEvents
    Loop
 
でもすこしたいそうなきがする。
Wbを2つひらいてcopyして閉じるでよいような
[191347] シートを共通ファイルのブックへコピペする際のURLが正しくない?
 
Sheets("test").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)

投稿日時: 20/02/16 18:35:14
投稿者: tarima

コピー先ファイルは必ず作成されております。中身がないものが時々できてしまいます。
コピー先ファイルは後日使用するもので処理の中では開きませんし使用しません。
 
URLとは何のことでしょうか。
 

takesi さんの引用:
ファイルコピーは非同期だから
コピー完了前に次の処理にいってないかな?
 
  Do
        If Dir(pstrDestPath) <> "" Then Exit Do
        DoEvents
    Loop
 
でもすこしたいそうなきがする。
Wbを2つひらいてcopyして閉じるでよいような
[191347] シートを共通ファイルのブックへコピペする際のURLが正しくない?
 
Sheets("test").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)

回答
投稿日時: 20/02/16 19:37:39
投稿者: takesi

先の投稿破棄してください。
 
だめかもしれませんが、修正してみてください。
わたしには、これ以上のことはわかりません。
 
Sub subCopyFile(pstrSrcPath As String, pstrDestPath As String)
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Dim f As Object
  Set f = FSO.GetFile(pstrSrcPath)
  f.Copy Destination:=pstrDestPath
 DoEvents
End Sub
 

投稿日時: 20/02/16 23:21:55
投稿者: tarima

takesi様
ご回答を頂きありがとうございます。
Copyのあとに、DoEventsを入れるということですね。
出勤しましたら早速試してみます。