2017-03-21 23 views
0

私は、非表示の列を制御するチェックボックスを使用して、MS Accessでフィルタ処理されたサブフォームを持つフォームを持っています。私はフィルタリングされたサブフォームをExcelにエクスポートすることができましたが、非表示の列は保存され、Excelファイルに表示されます。Msアクセス:Excelにサブフォームをエクスポートし、非表示の列を削除します。

表示可能な列をExcelファイルにのみエクスポートするにはどうすればよいですか?

私がこれまでにエクスポートするMSアクセス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 
+0

あなたはの列に同じ隠されたプロパティを適用することができExcelでの範囲は、サブフォームに列1,3,5が隠れている場合、論理的にExcelで非表示/削除します。おそらくコード出力の出力が多すぎるか開いていると、フォームレコードセットが貼り付けられ、同じ非表示/削除ロジックが適用されます。 –

+0

出力の新しいクエリを作成します。 – Fionnuala

答えて

0

そうな何か...

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 
関連する問題