Excel VBA - 获取运行时错误1004 - 无法访问文件

时间:2017-04-16 08:53:34

标签: excel vba excel-vba csv

我有一个非常简单的宏。我基本上每月为一个我自愿参加活跃会员的俱乐部获得数据转储。我从该文件创建了几个单独的xls工作簿,然后我需要将其转换为.csv

以下是代码示例:

' 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,从目录中删除文件)再次运行宏,前两个文件创建得很好,它会弹出在第三个(发布之夜)......

有关正在进行的操作或如何修复代码的任何建议?我必须每月创建18个这样的文件,我想从我的自动化中解决这些问题,所以当我运行这个疯狂的东西时,我不会撕裂我的头发。

2 个答案:

答案 0 :(得分:0)

我没有答案,但我首先要做的一件事就是从用户端录制一个会做同样事情的宏。然后,我会将我的代码与从录制的宏生成的代码进行比较,看看我是否可以做任何错误,或者我是否使用正确的函数或属性来满足我的需要。

我这么做很多时间,通常很快就会发现错误。

祝你好运!

答案 1 :(得分: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