2016-11-16 8 views
0

PDFファイルを実行して作成するマクロがあります。マクロが実行されるたびに、PDFが生成されます。私は、レポートの最後のバージョン(1日3回実行)をフォルダタイトル「過去のレポート」に移動したいと思います。私は以下のスクリプトで遊んでいますが、それは私のためには機能しません。アクティブレポートフォルダには、作成された最新のPDFのみが含まれます。生成されたPDFをネットワークドライブの新しいフォルダに移動

誰でも助けてもらえますか?必要に応じてさらに情報を追加することを嬉しく思います。

Public Sub transferFile() 
On Error GoTo nextIt 

Set fileSystemObject = CreateObject("Scripting.FileSystemObject") 
PDFPath = "D:\####\Pinging Program\Active Report\" 
pastPDFPath = "D:\####\Pinging Program\Past Reports" 
sSourceFile = PDFPath & Dir(PDFPath & "*.pdf") 
sDestinationFile = "D:\####\Pinging Program\Past Reports" 

'move file 
If Dir(sSourceFile) <> "" Then 
    fileSystemObject.moveFile sSourceFile, sDestinationFile 
End If 

nextIt: 

End Sub 
+0

「On Error GoTo nextIt」を削除してエラーをチェックできますか? –

+1

'sSourceFile = PDFPath&Dir(PDFPath&" * .pdf ")'でどういうことを期待していますか? 'sSourceFile'を出力すると、' 'D:\ #### \ Pinging Program \ Active Report \" ' –

+2

@VictorMoraes - ' sSourceFile = PDFPath&Dir(PDFPath& "* .pdf")のみが返されるので、 '' sSourceFile'を 'PDFPath'ディレクトリ内にある最初の' .pdf'ファイルの名前(パスを含む)に設定します。 (そのディレクトリに** ** ** .pdf'ファイルがない場合、 'PDFPath'と同じ値を返しますが、そのディレクトリに少なくとも1つの' .pdf'ファイルがあれば、 – YowE3K

答えて

2

宛先フォルダに最終スラッシュがありません。将来の提案として、Victorが提案したようにエラー処理をバイパスしていなければ、エラーをもっと分かりやすくすることができました。あなたのコードは次のようになります:

Public Sub transferFile() 


Set fileSystemObject = CreateObject("Scripting.FileSystemObject") 
PDFPath = "C:\test\Active Report\" 
pastPDFPath = "C:\test\Past Reports" 
sSourceFile = PDFPath & Dir(PDFPath & "*.pdf") 
sDestinationFile = "C:\test\Past Reports\" 

'move file 
If Dir(sSourceFile) <> "" Then 
    fileSystemObject.moveFile sSourceFile, sDestinationFile 
End If 

End Sub 

私はそれをテストして、期待通りに動作しました。よろしく、

関連する問題