2017-04-16 320 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 
相关问题