2017-04-16 137 views
3

我有一個非常簡單的宏。我基本上每月都會爲我爲活躍成員自願參加的俱樂部獲得數據轉儲。我創建該文件中幾個單獨的XLS工作簿,然後我需要轉換爲.csvExcel VBA - 獲取運行時錯誤1004 - 無法訪問文件

下面是代碼樣本:

' convert Poker 

Workbooks.Open fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/xlsx/Poker.xlsx" 
ChDir _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv" 
ActiveWorkbook.SaveAs fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv/Poker" & 
".csv" _ 
, FileFormat:=xlCSV, CreateBackup:=False 
ActiveWorkbook.Saved = True 
ActiveWindow.Close 


' convert Potluck 

Workbooks.Open fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/xlsx/Potluck.xlsx" 
ChDir _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv" 
ActiveWorkbook.SaveAs fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv/Potluck" & 
".csv" _ 
, FileFormat:=xlCSV, CreateBackup:=False 
ActiveWorkbook.Saved = True 
ActiveWindow.Close 

' convert Pub_Night 

Workbooks.Open fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV 
Files/Current_Month/xlsx/Pub_Night.xlsx" 
ChDir _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv" 
ActiveWorkbook.SaveAs fileName:= _ 
"/Users/birdsdeanger/Documents/CLUB/CSV Files/Current_Month/csv/Pub_Night" & 
".csv" _ 
, FileFormat:=xlCSV, CreateBackup:=False 
ActiveWorkbook.Saved = True 
ActiveWindow.Close 

我運行的宏的這一部分,並得到了以下錯誤:

sample error msg

如果我放棄在這一點上宏,手動保存,作爲csv文件到正確的目錄,並隨後將其刪除,然後重新運行宏...宏將創建的CSV正確的目錄(撲克),並在下一個炸彈(potluck)。

我會用第二個文件(potluck)重複這個過程(手動保存爲csv,從目錄中刪除文件)再次運行宏,前兩個文件創建就好了,它會彈出第三個(pubnight)...

任何有關正在發生什麼或如何修復代碼的建議?我必須每月創建18個這樣的文件,並且希望能夠處理我的自動化中的錯誤,以便在我運行這個瘋狂的事情時不會撕掉我的頭髮。

+0

不是問題的原因(據我所知),但你爲什麼要做'ChDir'?他們不應該被需要,因爲你完全符合所有的文件名。順便說一句 - 這是爲了[excel-vba-mac]而不是[excel-vba]? – YowE3K

+0

IIRC,當您保存爲CSV文件時,它只保存一張工作表,可能是ActiveSheet。有可能當您打開工作簿時,ActiveSheet不正確?也許是一張空白紙? –

+0

是的,它是[excel-vba-mac]。我已經經歷了一些宏的迭代,並且在某些時候我添加了ChDir來解決另一個問題。儘管如此,我會嘗試一個沒有它的版本。 – Birdsdeanger

回答

0

我沒有答案,但我首先要做的一件事就是從用戶端記錄一個宏,它將執行相同的操作。然後,我會將我的代碼與從錄製的宏生成的代碼進行比較,以查看是否可以執行任何錯誤,或者如果我使用正確的函數或屬性來滿足需要。

我這樣做了很多時間,通常我會很快發現錯誤。

祝你好運!

0

將所有工作表導出到已分離的CSV文件。相應地修改!

Sub ExportSheetsToCSV() 
    Dim xWs As Worksheet 
    Dim xCSVFile As String 

    For Each xWs In Application.ActiveWorkbook.Worksheets 
     xWs.Copy 
     xTextFile = CurDir & "\" & xWs.Name & ".csv" 
     Application.ActiveWorkbook.SaveAs Filename: = xCSVFile, FileFormat: = xlCSV 
     Application.ActiveWorkbook.Saved = True 
     Application.ActiveWorkbook.Close 
    Next 
End Sub 
相關問題