0

CSV ファイルにリンクされているデータベースがあります。データベースの名前はAllInformationで、path = some_pathに保存されています。AllInformationには、パラメーターを使用したクエリ ( MyQuery という名前)あります。その名前は[Current date]で、後者の型は date です。

1) Excel VBA コードからデータベース - AllInformationに接続するにはどうすればよいですか (私は Excel 2007 を使用しています)。データベースAllInformationにはパスワードがありません。2)設定されたパラメータ[現在の日付]を使用してクエリ - MyQueryを実行するにはどうすればよいですか? 3) MyQueryの結果をExcel シートにコピーするにはどうすればよいですか?

CSV ファイルを直接検索すると非常に時間がかかるため、これが必要です。MyQueryは必要なものを 4 分で見つけますが、CSV ファイルで VBA を介して直接検索するには約 1 時間かかります。

回答ありがとうございます。

4

2 に答える 2

0

Access 2007 X.accdbファイルを照会して、Excel VBAからこれを解決しました:

'
' Variables:
'   i: counter
'   j: counter
'   nFlds: number of fields in the query
'   nMax: maximum number of records to be exported, 0=no limit
'   strQry: query name
'
'   objApp: Access.Application
'   qdf: QueryDef
'   rst: Recordset
'
Function daoDoQuery()
'
  Dim i, j, nFlds, nMax, strQry
'
  Dim objApp, qdf
  Dim rst As DAO.Recordset
'
  Set objApp = CreateObject("Access.Application")
  objApp.OpenCurrentDatabase "some_path\AllInformation.accdb"
'
' get Recordset:
'
  strQry = "MyQuery"
  Set qdf = objApp.CurrentDb.QueryDefs(strQry)
'
' here [Current date] is entered:
'
  qdf.Parameters(0).Value = Now()
  Set rst = qdf.OpenRecordset(dbOpenDynaset)
'
  If (rst.EOF) Then
    Set rst = Nothing
    daoDoQuery = 0
    Exit Function
  End If
'
  nFlds = rst.Fields.Count
'
' create a new Excel Workbook to write results:
'
  i = 1
  Application.ScreenUpdating = False
  Workbooks.Add
  For j = 1 To nFlds
    With Cells(i, j)
      .Font.Bold = True
      .Font.Size = 12
      .Value = rst.Fields(j - 1).Name
    End With
  Next
'
  nMax = 50
  i = i + 1
'
  Do While (Not rst.EOF)
    '
    For j = 1 To nFlds
      Cells(i, j).Value = rst(j - 1)
    Next
    '
    rst.MoveNext
    i = i + 1
    If (nMax > 0) Then
      If (i > nMax) Then
        Exit Do
      End If
    End If
  Loop
'
  Application.ScreenUpdating = True
'
  rst.Close
  Set rst = Nothing
  Set qdf = Nothing
  Set objApp = Nothing
'
  daoDoQuery = 1
'
End Function

これで作業が完了し、新しい Excel ワークブックが作成され、最初のワークシートが結果のリストとして表示されます。

daoDoQuery
于 2013-10-28T17:17:41.527 に答える