我试图从导出访问子窗体创建的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列)吗?
您可以使用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
网上有很多例子说明如何使用delete an Excel column using Access VBA。哪一个最适合您取决于您拥有什么以及您想要做什么。
如果没有关于您的数据或所需“最终目标”的更多具体信息,我建议您可以更容易地使用专门用于从Access到Excel导出数据的方法之一。
例如,一行代码:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table1", "x:\myOutputFile.xlsx", True, "myWorksheet"
...创建(或更新,如果存在并关闭)Excel文件x:\myOutputFile.xlsx
,创建(或更新,如果它存在)一张名为myWorksheet
的表,其中包含表Table1
的内容。 (对于部分数据集,您可以指定查询名称而不是表名。)
DoCmd.TransferSpreadsheet
method (Access)