2017-06-22 76 views
0

我想準備一個代碼,打開文件夾中的所有文件,檢查打開的文件中的工作表的名稱,並根據該工作表的名稱,將它保存到一個新的文件夾中。但是,當我試圖添加IF語句來檢查表名是否存在時,它告訴我這個方法不存在。有人能夠建議一個更合適的方法嗎?VBA保存在新目錄根據工作表名稱

Dim MyFile As String 
MyPath = "Q:\Folder Name1\Folder Name2\Folder Name3\Folder Name4\" 
MyFile = Dir(MyPath) 
Do While MyFile <> "" 
If MyFile Like "*.xlsx" Then 
Workbooks.Open MyPath & MyFile 

Dim ws1 As Worksheet 
Set ws1 = Sheets("Adult_Return") 

If ws1.Exists Then 

ChDir "Q:\Folder Name1\Folder Name2\Folder Name3\Folder Name4\Return" 
ActiveWorkbook.SaveAs Filename:=MyFile & ".xlsx" 

Else 

ChDir "Q:\Folder Name1\Folder Name2\Folder Name3\Folder Name4\Single" 
ActiveWorkbook.SaveAs Filename:=MyFile & ".xlsx" 

謝謝。

回答

0

創建一個函數:

Function SheetExists(wb As Workbook, sheetName As String) 

    Dim ws As Worksheet 
    SheetExists = False 
    For Each ws In wb.Sheets 
     If UCase(ws.Name) = UCase(sheetName) Then 
      SheetExists = True 
      Exit Function 
     End If 
    Next ws 

End Function 

這樣稱呼它:

Dim wb As Workbook 
Set wb = Workbooks.Open(MyPath & MyFile) 
If SheetExists(wb, "Adult_Return") Then 
... 

順便說一句:你沒有做chdir,只是把在另存爲路徑:

wb.SaveAs "Q:\Folder Name1\Folder Name2\Folder Name3\Folder Name4\Single\" & MyFile & ".xlsx 

並且:不要忘記關閉工作簿!

相關問題