【问题标题】:Ms Access: Export subform to Excel, remove hidden columnsMs Access:将子表单导出到 Excel,删除隐藏的列
【发布时间】:2017-08-12 23:29:01
【问题描述】:

我在 MS Access 中有一个带有过滤子表单的表单,其中包含控制隐藏列的复选框。我设法将过滤后的子表单导出到 excel,但隐藏的列被保留并显示在 excel 文件中。

如何只将可见列导出到 excel 文件中?

我正在使用 MS-Access 2007。 到目前为止我要导出的代码:

Private Sub btn_export_Click()

On Error GoTo errHandler
Dim qdf As QueryDef
DoCmd.DeleteObject acQuery, "qryTemp"

Set qdf = CurrentDb.CreateQueryDef("qryTemp", Me.Results_Subform.Form.RecordSource)

DoCmd.OutputTo acOutputQuery, "qryTemp", acFormatXLS, "C:\TEST_Export.xls", True
exitHandler:
Exit Sub

errHandler:
If Err.Number = 7874 Then
    Resume Next
Else
    MsgBox Err.Number & " - " & Err.Description
    Resume exitHandler
End If
End Sub

【问题讨论】:

  • 您可以将相同的隐藏属性应用于 excel 中范围的列,因此如果第 1,3 和 5 列隐藏在子表单中,从逻辑上讲,您将在 Excel 中隐藏/删除它们。可能会输出一些代码,或者打开 excel 粘贴表单记录集并应用相同的隐藏/删除逻辑。
  • 为输出写一个新的查询。

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


【解决方案1】:

有点像……

Dim x As Excel.Application
Dim r As Recordset
Dim w As Excel.Worksheet
Dim l As Long
Dim c As New Collection

Set r = Me.Recordset
Set x = New Excel.Application
x.Visible = 1

If x.Workbooks.Count = 0 Then x.Workbooks.Add

Set w = x.Worksheets(1)

For l = 0 To r.Fields.Count - 1
    If Me.Controls(r.Fields(l).Name).ColumnHidden Then
        c.Add l + 1
    End If
    w.Range("a1").Offset(0, l).Value = r.Fields(l).Name
Next l

w.Range("a2").CopyFromRecordset r

For Each i In c
    w.Columns(i).Hidden = True
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多