如何删除通过导出访问子表单创建的Excel文档的列?

时间:2019-03-22 23:59:24

标签: excel vba access-vba ms-access-2016

我正试图从通过导出访问子表单而创建的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列)吗?

2 个答案:

答案 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}}。 (对于部分数据集,您可以指定查询名称而不是表名称。)


更多信息: