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

问题描述 投票:1回答:2

我试图从导出访问子窗体创建的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列)吗?

excel vba access-vba ms-access-2016
2个回答
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

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的表,其中包含表Table1的内容。 (对于部分数据集,您可以指定查询名称而不是表名。)


更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.