【发布时间】:2017-05-10 17:55:13
【问题描述】:
我有一个包含多个工作表的 Excel 工作簿,每个客户 1 个。在我的代码中,我试图将每个单独的客户工作表保存为自己的 excel 文件。但是,.SaveAs 命令在循环中第二次触发时会中断。任何指针都会很棒。
Dim SchedWorksheet As Worksheet
Dim SchedWorkbook As Workbook
Dim SchedName As String
Set SchedWorkbook = ActiveWorkbook
Set SchedWorksheet = ActiveSheet
Application.DisplayAlerts = False
For Each Worksheet In SchedWorkbook.Sheets
If Worksheet.Name = "Instructions" Or Worksheet.Name = "Invoice_Items"
Or Worksheet.Name = "Customers" Or _
Worksheet.Name = "Terms" Or Worksheet.Name = "Dilution_Type" Or
Worksheet.Name = "Approval_Status" Or _
Worksheet.Name = "Carriers" Then
GoTo NextSched
End If
If Worksheet.Name = "Invoices" Then
'basicScheduleFileName is global set at beginning of program
SchedName = basicScheduleFileName & "ALL"
Else
SchedName = Worksheet.Name
End If
'payoutFileName is global set at beginning of program
Worksheet.SaveAs Application.ActiveWorkbook.Path & "\" & payoutFileName
& "\Basic Schedule" & "\" & SchedName, xlOpenXMLWorkbook
NextSched:
Next Worksheet
第二次迭代的错误如下: 运行时错误 1004 '应用程序定义的或对象定义的错误'
我还尝试使用 SchedWorksheet 对象代替 Worksheet 运行此循环,并在第二次迭代中得到错误“对象_Worksheet 的方法 .SaveAs 失败”。
问题 我的程序中的代码与他前面的代码非常相似,该代码采用类似的数据集并使用 exportAsFixedFormat 调用将每个工作表保存为 PDF。 .xlsx 是否有等价物? (.csv 也可以)
【问题讨论】:
-
"...第二次中断..." - 你有错误吗?什么错误?
-
是的,很抱歉没有将其包含在 OP 中:“运行时错误 1004 应用程序定义或对象定义错误”
-
您在哪里/如何声明和定义
payoutFileName。还有,SchedName第一次运行,第二次运行是什么? -
还有
basicScheduleFileName是什么? -
尝试将“.xlsx”添加到您的 SchedName 的末尾