これは動作するはずです。 アクセスファイルへのパスを入力することを忘れないでください。
Sub test()
Dim p As String 'path of access file
Dim dbConn As Object, dbData As Object
Dim ws As Worksheet 'worksheet where results will be pasted
Dim s As String 'text searched
Dim sql As String 'select statement
Dim cs As String 'connection string
Dim v As Variant 'stores query result
s = Worksheets("Sheet1").Cells(1, 1)
Set ws = Worksheets("ALL")
sql = "SELECT Qn_No, Categories, Page_Text " & _
"FROM MyTable " & _
"WHERE Categories = '" & s & "' OR " & _
"Page_Text = '" & s & "'"
'################################
cs = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & p & ";Persist Security Info=False;"
Set dbConn = CreateObject("ADODB.Connection")
Set dbData = CreateObject("ADODB.Recordset")
dbConn.ConnectionString = cs
dbConn.Open
With dbData
.ActiveConnection = dbConn
.Source = sql
.LockType = 1
.CursorType = 2
.Open
End With
'Connection to access ready
'###############################
On Error GoTo NoRecords 'no records
v = dbData.GetRows
On Error GoTo 0
'v is zero based array, an records are transposed
'Handle it as you wish
ws.Cells(1, 1).Resize(UBound(v, 1) + 1, UBound(v, 2) + 1).Value = v
GoTo Quitter
'######################
NoRecords:
MsgBox ("No Records Found")
Quitter:
dbData.Close
Set dbData = Nothing
dbConn.Close
Set dbConn = Nothing
End Sub
本当に良いフレーズが必要です。あなたに必要なものはあまり明確ではありません。 – Kelaref
@Kelarefこれを調べてくれてありがとう、私はアクセスの1つのテーブルでレコードを検索し、Excelで出力を得る必要があります。ユーザーが「マネーマーケット」としてテキストを入力すると、マクロは1つのテーブルデータの2つの特定の列に「マネーマーケット」が表示されているレコードセットの出力をフェッチする必要があります。 – Manish