我正试图从通过导出访问子表单而创建的excel文件中删除一列。
我使用以下vba代码执行导出。导出的文件包含五列。
Private Sub CmdExporter_Click()
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy
Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")
With xlapp
.Workbooks.Add
.ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:= _
False
.Cells.Select
.Cells.EntireColumn.AutoFit
.Visible = True
.Range("o1").Select
End With
End Sub
有人可以帮助我调整代码,以便在导出Excel文档时删除最后一列(第5列)吗?
答案 0 :(得分:1)
您可以使用Range.Delete
删除单元格。您的子版本的精炼版本为:
Private Sub CmdExporter_Click()
' Create Excel app
Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")
With xlapp
.Visible = True ' show Excel app
' Create new workbook in Excel
Dim xlWorkbook As Object
Set xlWorkbook = .Workbooks.Add
End With
' Get a reference to the workbook's first sheet
Dim xlSheet As Object
Set xlSheet = xlWorkbook.worksheets(1)
' Copy access data - done just before paste to reduce chance of clipboard being changed before paste
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdCopy
xlSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False ' Paste the data
xlSheet.UsedRange.EntireColumn.AutoFit ' Auto fit column width
' Option 1: Delete last column
xlSheet.UsedRange.Columns(xlSheet.UsedRange.Columns.Count).EntireColumn.Delete
' OR Option 2: Delete 5th column
xlSheet.UsedRange.Columns(5).EntireColumn.Delete
End Sub
答案 1 :(得分:0)
在线上有许多示例显示了如何delete an Excel column using Access VBA。哪种最适合您取决于您拥有的东西和想要做的事情。
如果没有关于您的数据或所需的“最终目标”的更多具体信息,建议您使用一种专门用于从Access到Excel导出数据的方法会更容易。
例如,一行代码:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table1", "x:\myOutputFile.xlsx", True, "myWorksheet"
...创建(或更新,如果存在并关闭)Excel文件x:\myOutputFile.xlsx
,创建(或更新,如果存在)具有表{的内容的名为myWorksheet
的工作表{1}}。 (对于部分数据集,您可以指定查询名称而不是表名称。)
DoCmd.TransferSpreadsheet
method (Access)