提问人:AzureSkye 提问时间:9/14/2023 更新时间:9/14/2023 访问量:36
如何修复从 Access 保存 xlsx 文件时的“错误 1004”?
How can I fix 'Error 1004' when saving xlsx files from Access?
问:
我有一个简单的脚本,但不知道为什么它不起作用。
每次运行它时,我都会收到运行时错误 1004,“无法访问文件”。突破:
wb.SaveAs Filename:=strFilePath, FileFormat:=xlWorkbookDefault
我正在尝试覆盖原始文件,因为我需要先更正它的内部格式,然后才能将其导入 Access。尝试导入的 *.xlsx 文件缺少 docProp 文件夹。可悲的是,我无法控制生成它们的系统,所以我无法解决这个问题。
完整脚本:
Sub ReformatXLSX(strFilePath)
Dim appExcel As Excel.Application
Dim wb As Excel.Workbook
Set appExcel = New Excel.Application
Set wb = appExcel.Workbooks.Open(strFilePath)
wb.SaveAs Filename:=strFilePath, FileFormat:=xlWorkbookDefault
wb.Close
Set appExcel = Nothing
End Sub
或者,如果有人知道如何在没有 TransferSpreadsheet 的情况下导入文件,我很想尝试一下。
答:
1赞
taller
9/14/2023
#1
根本原因是无法覆盖文件。SaveAs
可以使用代码片段进行小的改进。但这并不能解决问题。
该代码使用 Access VBA 运行。请将 Excel VBA const 更改为其值 (51) 或 。xlWorkbookDefault
Excel.xlWorkbookDefault
wb.SaveAs Filename:=strFilePath, FileFormat:=51
您可以使用Excel VBA即时窗口获取该值。
? xlWorkbookDefault
51
或
Microsoft 参考文档:
评论
0赞
AzureSkye
9/14/2023
刚刚试过了。不幸的是,我仍然遇到同样的错误。:(
1赞
taller
9/14/2023
wb.SaveAs Filename:=strFilePath
不能使用相同的文件名另存为。为什么不直接使用?你要改变Excel文件格式吗?例如,将 XLS 转换为 XLSXwb.Save
2赞
FunThomas
9/14/2023
@taller_ExcelHome:你的最后一条评论(“你不能另存为...”)是这个问题的真正答案,你应该把它写进你的答案中。
0赞
AzureSkye
9/14/2023
这是更正答案:SaveAs 无法覆盖文件。我没想到 Save 可以工作并修复丢失的 docProps,但它确实做到了。谢谢!(请编辑您的答案,以便我将其标记为正确:))
评论