2017-09-22 14 views
0

VBAでバックアップスクリプトを作成しようとしていました。ファイルを開いた後でファイルを強制終了しようとしたときに、「ファイルが見つかりません」というエラーが表示され、バックアップが作成され、新しい名前で保存されます。ファイルが見つかりませんでした。VBA

Application.Workbooks.Open Old 
ActiveWorkbook.SaveAs Archive 
ActiveWorkbook.SaveAs New 

'If Len(Dir$(Old)) > 0 Then Kill Old 
If Len(Dir$(Old)) = 0 Then MsgBox ("bleuh") 
'Here is where I get the message "Bleuh" even though Old was just opened a few lines ago.. 

最初の行はうまく動作しますが、「Old」ファイルを強制終了するときにエラーが発生します。したがって、ファイルが存在するかどうかをテストしようとしました。結果はメッセージ "ブリュウ"でした。したがって、ファイルを開くことはできますが、数行後には見つかりません。誰もがこれを説明し、私を助けることができますか?

完全なコードはここにあります。

Sub UpdateAll() 
Dim Afk As String, J As String, NJ As String, Path As String, strFile As String, Old As String, Archive As String, New As String 
'Dim fso As Object 

Path = "C:\Users\Name\OneDrive - Company\Desktop\Testing backup" & "\" 

Year = Year(Date) 
VJ = Year 
NJ = Year + 1 


Application.ScreenUpdating = False 

'test for Afk (I define Afk for some additional functions that are not relevant for this problem) 
Afk = "ABA" 

'filenames 
Old = Path & ("Planning ") & VJ & Space(1) & Afk 
Archive = Path & ("Planning\Archive ") & VJ & Space(1) & Afk 
New = Path & ("Planning ") & NJ & Space(1) & Afk 

Application.Workbooks.Open Old 
ActiveWorkbook.SaveAs Archive 
ActiveWorkbook.SaveAs New 

If Len(Dir$(Oud)) > 0 Then Kill Old 
If Len(Dir$(Oud)) = 0 Then MsgBox ("bleuh") 
'Here is where I get the message "Bleuh" even though Old was just opened a few lines ago.. 

'Also tried 
'fso.CopyFile Old, Archive 'AND 
'FileCopy Old, Archive 

'in combination with: 

'Name Old As New 
' "SSDD" 

'Next 

Application.ScreenUpdating = True 

End Sub 
+1

は、あなたのファイル名の変数をその上に延長していますか? – braX

+1

私は 'Oud'にパスとファイル名をどこに割り当てるのか分かりません。 – Jeeped

+1

ファイルを最初に削除して、それがまだ存在するかどうかを検証しています...代わりに 'Select Case'を試してください... – Pspl

答えて

0

あなたのコードを分析した後、ファイルを開く必要がないことが分かりました。あなたはただそれを動かすだけです。だから、次のことを試してください。

Name Old as Archive 

これはトリックを行う必要があります...

+0

問題を解決することはできませんが、助けてくれてありがとう。私は同じエラー 'ファイルが見つかりません'を取得します。 – Eelco

+0

ファイルのパスと名前が本当に正しい場合、 'MsgBox Old'コマンドで確認できますか?ファイルが本当にあなたが指定したフォルダに入っていれば? – Pspl

+0

名前が正しいことをmsgboxで確認し、ファイルが指定されたフォルダにあるかどうかを視覚的にチェックしました。また、このファイルは、Application.Workbooks.Open Oldの行に表示されるので、ファイルのパスと名前が正しいことを確認しています – Eelco

関連する問題