excel - 将工作表导出为 csv
问题描述
我正在尝试将我的 Excel 文件中的工作表导出为 csv。
我收到错误
对象工作簿的方法 SaveAs 失败`
在我的SaveAs
线上。
我注意到此代码创建了一个新工作簿,它有几个空白的默认工作表选项卡,这会导致问题吗?
Public Sub ExportWorksheetAndSaveAsCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Set shtToExport = ThisWorkbook.Worksheets("Load check data") 'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False 'Possibly overwrite without asking
Path = ThisWorkbook.Sheets("Input").Range("B15") & "estload_" & ThisWorkbook.Sheets("Input").Range("F1") & ".csv"
Debug.Print Path
wbkExport.SaveAs Filename:=Path, FileFormat:=xlCSV, CreateBackup:=True
Application.DisplayAlerts = True
wbkExport.Close SaveChanges:=False
End Sub
编辑以排除 WbkExport 变量,替换为 ThisWorkbook 和 ActiveWorkbook。
Public Sub ExportWorksheetAndSaveAsCSV()
Dim wbkExport As Workbook
Dim shtToExport As Worksheet
Dim Path As String
Set shtToExport = ThisWorkbook.Worksheets("Load check data") 'Sheet to export as CSV
'Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Application.DisplayAlerts = False 'Possibly overwrite without asking
Path = ThisWorkbook.Sheets("Input").Range("B15") & "estload_" & ThisWorkbook.Sheets("Input").Range("F1") & ".csv"
Debug.Print Path
ActiveSheet.SaveAs Filename:=Path, FileFormat:=xlCSV, CreateBackup:=True
Application.DisplayAlerts = True
'wbkExport.Close SaveChanges:=False
解决方案
前面的评论是正确的。一个简单的程序是:
Public Sub ExportWorksheetAndSaveAsCSV()
'Simple copy of sheet content as csv file
Dim NameSheet As String
Dim PathNameCsv As Variant
'Change names & Output Path
NameSheet = "MySheet"
PathNameCsv = "D:\Documents\MyCsv"
Set shtToExport = ThisWorkbook.Worksheets(NameSheet) 'Sheet to export as CSV
Application.DisplayAlerts = False 'Possibly overwrite without asking
shtToExport.SaveAs Filename:=PathNameCsv, FileFormat:=xlCSV, CreateBackup:=True
Application.DisplayAlerts = True
'When saving the sheet as csv, _
'by default its name is changed to the name of the csv.
'Here you restore your name
With shtToExport
.Name = NameSheet '
End With
End Sub
推荐阅读
- java - 如何从 onClick 中传递参数
- python-3.x - ModuleNotFoundError:没有名为“ez430”的模块
- c# - 将访问多值字段列迁移到 C#
- ios - Swift • CloudKit • 各种 NSMergePolicy 对象之间有什么区别?
- postgresql - 如何将表中的值放入postgresql平台中的多边形函数中?
- python - 即使文本属性存在,Slack API chat.postMessage 也出现错误“no_text”
- list - SwiftUI 列表动画看起来很奇怪
- django - 维护 Django 应用程序的子集以及完整的应用程序
- sharepoint - 表单字段修改日期
- ios - 在异步后台线程上运行 CADisplayLink 的正确方法?