3

以下の VBA コードを使用して、Access データシートの表示されている列だけを Excel にエクスポートしています。うまく機能しますが、ユーザーが各列でフィルター処理したものに基づいて、フィルター処理された行のみをエクスポートしたいと考えています。私はそれを行う方法を理解するためにいくつかの助けを使うことができます. どんな助けでも大歓迎です、lq

 Public Function ExportToExcel()
 On Error GoTo myErr

     Dim strDestFolder As String
     Dim strSQL As String
     Dim qdf As dao.QueryDef
     Dim ctl As Control
     Dim strRandomString As String

     strDestFolder = "MyDestinationPath"
     strRandomString = "AQueryDefName"

     For Each ctl In Me.Child.Form.Controls

         If Not ctl.ColumnHidden Then
             If Len(strSQL) = 0 Then
                 strSQL = "SELECT " & ctl.ControlSource & ", "
             Else
                 strSQL = strSQL & ctl.ControlSource & ", "
             End If
         End If

     Next ctl

     If Len(strSQL) > 0 Then
         strSQL = Left(strSQL, Len(strSQL) - 2)
         strSQL = strSQL & " FROM tblMyTableName WHERE Something = '" & Me.Something & "'"
     End If

     Set qdf = CurrentDb.CreateQueryDef(strRandomString, strSQL)

     DoCmd.OutputTo acOutputQuery, strRandomString, "MicrosoftExcel (*.xls)", strDestFolder & ".xls", True

 myExit:
     CurrentDb.QueryDefs.Delete strRandomString
     Exit Function
 myErr:
     MsgBox Err.Number & " - " & Err.Description, vbCritical, "VBA Error"
     Resume myExit
 End Function
4

1 に答える 1

1

サブフォームのfilterプロパティは、whereステートメントでの使用に適した行を返す必要があります。例えば:

([My subform].[ID] Not In (1,2,4,6))

ドロップダウンを選択していくつかの数字を選択すると返されます。また:

([My subform].[ID] In (719,720))
于 2012-09-15T19:27:00.243 に答える