- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将启用宏的 Excel 工作簿另存为 csv 文件,覆盖旧的文件(下面我必须更改文件夹和工作表的名称,但这似乎不是问题) .
Sub SaveWorksheetsAsCsv()
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
SaveToDirectory = "\MyFolder\"
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Sheets("My_Sheet").Copy
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
ActiveWorkbook.Close SaveChanges:=False
ThisWorkbook.Activate
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
Application.AlertBeforeOverwriting = True
End Sub
有时会失败
Runtime Error 1004: method saveas of object _workbook failed**)
调试器指出:
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
我用谷歌搜索,尝试过的一些解决方案是:
不过,它可能会连续正确运行最多 50-60 次,然后在某个时候再次失败。
任何建议,除了停止使用 VBA/Excel 来完成此任务,这很快就会发生,但我现在不能。
编辑:感谢德古斯塔夫的建议解决了。我只对 Degustaf 的建议代码做了两处更改:
ThisWorkbook.Sheets
而不是 CurrentWorkbook.Sheets
FileFormat:=6
而不是 FileFormat:=xlCSV
(显然更强大不同版本的 Excel)Sub SaveWorksheetsAsCsv()
Dim SaveToDirectory As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
Dim TempWB As Workbook
Set TempWB = Workbooks.Add
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
SaveToDirectory = "\\MyFolder\"
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
ThisWorkbook.Sheets("My_Sheet").Copy Before:=TempWB.Sheets(1)
ThisWorkbook.Sheets("My_Sheet").SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=6
TempWB.Close SaveChanges:=False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True
Application.AlertBeforeOverwriting = True
End Sub
最佳答案
我通常发现 ActiveWorkbook
是这些情况下的问题。我的意思是,不知何故,您没有选择该工作簿(或任何其他工作簿),并且 Excel 不知道该怎么做。不幸的是,由于 copy
不返回任何内容(复制的工作表会很好),这是解决此问题的标准方法。
因此,我们可以将其视为如何将此工作表复制到新工作簿,并获取对该工作簿的引用。我们可以做的是创建新的工作簿,然后复制工作表:
Dim wkbk as Workbook
Set Wkbk = Workbooks.Add
CurrentWorkbook.Sheets("My_Sheet").Copy Before:=Wkbk.Sheets(1)
Wkbk.SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
Wkbk.Close SaveChanges:=False
或者,在这种情况下还有更好的方法:WorkSheet
支持 SaveAs
方法。无需复制。
CurrentWorkbook.Sheets("My_Sheet").SaveAs Filename:=SaveToDirectory & "My_Sheet" & ".csv", FileFormat:=xlCSV
如果工作簿保持打开状态,但您的代码中已包含该工作簿,我会警告您稍后将工作簿重新保存为其原始名称。
关于excel - 尝试将 XLSM 保存为 CSV 时出现 "method saveas of object _workbook failed"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967762/
我正在尝试将 Excel 转换中的 XML 保存为 newDoc,这是一个 MSXML2.DOMDocument,但是每当我运行我的代码时,它都会突出显示 .SaveAs 并说找不到方法或数据成员。我
实现 FileFilter 参数必须使用逗号分隔的描述器对,后跟文件扩展名。 fileName = _ Application.GetSaveAsFilename( _ InitialFileName
我希望能够在 Angular 组件中创建和下载文件。为了做到这一点,我正在使用 FileSaver.js。即使我已将它导入到我的组件中,我还是在控制台中收到此错误: ERROR TypeError:
我正在实现一个应用程序,该应用程序在 AutoCAD 的 ObjectARX 界面中使用 COM 来自动执行绘图操作,例如打开和另存为。 根据文档,我应该能够调用 AcadDocument.SaveA
我想要: 使用模板工作簿进行数据操作 将此工作簿的副本另存为 .xlsx(SaveCopyAs 不允许您更改文件类型,否则就太好了) 继续显示原始模板(不是“另存为”模板) 使用SaveAs 完全符合
当用户打开此工作簿时,我想强制他们立即将文件另存为新文件。对话框打开,但它只会让您将其另存为“所有文件”。 Dim Workbook_Orig As Variant Workbook_Orig
我正在尝试将 .xls 文件转换为 .xlxs 我尝试了此代码的许多变体,但每次我遇到此错误消息时: Exception lors de l'appel de « SaveAs » avec « 2
我在使用 saveas 保存图形时遇到了一些奇怪的行为。你应该能够用这个重现它: %just plot a line: plot(1:10); legend('line 1') %find the l
在这一段代码中,Excel总是提示:“文件已存在,是否要覆盖?” Application.DisplayAlerts = False Set xls = CreateObject("Excel.App
在 outlook 中,我在收件箱等文件夹中有各种 DocumentItems,我试图在拖放事件中将它们保存到文件系统。 代码如下: for (var i = 1; i <= _application
使用 C# 编写一个方法,从工作簿中取出单个工作表并将其另存为 HTML。 我正在使用 MSDN 中描述的 Worksheet.SaveAs 方法. 但是,当我查看输出时,它已经消失并保存了工作簿中的
当我传递 olMHTML 时,它以 .msg 扩展名保存它,但如果我将扩展名更改为 .mht,它就可以完美地用作 mht 文件,如果我不这样做,我将无法打开扩展名为 .msg 的文件。如果我将它保存为
我正在尝试在我的 C#/Winforms 应用程序中使用 MS Excel Interop 从 excel 文件创建一个 csv 文件。 我在下面的代码中的 SaveAs 方法上遇到了这个错误。 'T
我有一个用于上传任何类型文件的 Controller 。它的浓缩版是 [HttpPost] public ActionResult Index (HttpPostedFileBase
扩展名为 *.docm 的模板报告将显示给用户,他将对其进行修改,然后单击保存按钮。我想将修改后的文档写入指定文件夹中的 accessionID.docm。对象 FileFormat = 必须是什么?
首先,这是我的代码: private Shoe ProcessForm(Shoe shoe, HttpPostedFileBase image) { try { sho
我正在使用 上传文件(图片)在代码隐藏中我使用 UploadedFile.SaveAs("C://Path...")将图像保存在服务器上。 这是我的完整代码: protected void btnA
我正在尝试使用以下代码将 excel 文件保存到网络驱动器中。 问题是,如果网络不可访问,则会出现运行时错误。 你能帮助如何修改代码吗 - 如果网络可访问,则将文件保存在给定的网络驱动器上 - 如果没
我正在尝试使用下面的 saveas() 函数将 excel 工作表输出到 xltext 文件。该文件生成良好,但数字具有特殊格式#,###.00。输出为“1,000.00”,而不仅仅是 1,000.0
我正在尝试使用从 ASP.Net Core Web 应用程序调用的 OpenXMLPowerTools v4.5.3.2、DocumentFormat.OpenXML v2.9.1 动态生成 Exce
我是一名优秀的程序员,十分优秀!