Excel VBA - 获取运行时错误1004 - 无法访问文件
问题描述:
我有一个非常简单的宏。我基本上每月都会为我为活跃成员自愿参加的俱乐部获得数据转储。我创建该文件中几个单独的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
我运行的宏的这一部分,并得到了以下错误:
如果我放弃在这一点上宏,手动保存,作为csv文件到正确的目录,并随后将其删除,然后重新运行宏...宏将创建的CSV正确的目录(扑克),并在下一个炸弹(potluck)。
我会用第二个文件(potluck)重复这个过程(手动保存为csv,从目录中删除文件)再次运行宏,前两个文件创建就好了,它会弹出第三个(pubnight)...
任何有关正在发生什么或如何修复代码的建议?我必须每月创建18个这样的文件,并且希望能够处理我的自动化中的错误,以便在我运行这个疯狂的事情时不会撕掉我的头发。
答
我没有答案,但我首先要做的一件事就是从用户端记录一个宏,它将执行相同的操作。然后,我会将我的代码与从录制的宏生成的代码进行比较,以查看是否可以执行任何错误,或者如果我使用正确的函数或属性来满足需要。
我这样做了很多时间,通常我会很快发现错误。
祝你好运!
答
将所有工作表导出到已分离的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
不是问题的原因(据我所知),但你为什么要做'ChDir'?他们不应该被需要,因为你完全符合所有的文件名。顺便说一句 - 这是为了[excel-vba-mac]而不是[excel-vba]? – YowE3K
IIRC,当您保存为CSV文件时,它只保存一张工作表,可能是ActiveSheet。有可能当您打开工作簿时,ActiveSheet不正确?也许是一张空白纸? –
是的,它是[excel-vba-mac]。我已经经历了一些宏的迭代,并且在某些时候我添加了ChDir来解决另一个问题。尽管如此,我会尝试一个没有它的版本。 – Birdsdeanger