Page 1 of 1
อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Wed Sep 03, 2014 3:36 pm
by numilike
ใน Access มีตารางอยู่ 40 กว่าตารางค่ะ ต้องการดึงชื่อตารางมาแสดงบน Excel สามารถใช้อะไรดึงมาได้บ้างคะ
ลอง copy หรือ Import เข้า มันก็ไม่ได้ชื่อตารางอยู่ดีค่ะ
รบกวนผู้รู้ช่วยชี้แนะด้วยค่ะ ขอบคุณค่ะ
Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Wed Sep 03, 2014 3:53 pm
by snasui
Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Wed Sep 03, 2014 4:01 pm
by numilike
Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Wed Sep 03, 2014 4:58 pm
by numilike
ลองทำดูแล้ว ใช้วิธีที่ 2 OpenSchema
เกิด ERROR ตั้งแต่บรรทัดแรกเลยค่ะ
Code: Select all
Sub Macro1()
Dim cnnDB As ADODB.Connection
Dim rstList As ADODB.Recordset
Set cnnDB = New ADODB.Connection
cnnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=D:\PG\PG2.mdb;"
Set rstList = cnnDB.OpenSchema(adSchemaTables)
With rstList
Do While Not .EOF
If .Fields("TABLE_TYPE") <> "VIEW" Then
Debug.Print .Fields("TABLE_NAME") & vbTab & .Fields("TABLE_TYPE")
End If
.MoveNext
Loop
End With
cnnDB.Close
Set cnnDB = Nothing
End Sub
Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Wed Sep 03, 2014 7:59 pm
by snasui
เข้าเมนู Tools แล้ว Add Reference ตามภาพเข้ามาก่อนครับ
Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel
Posted: Thu Sep 04, 2014 8:41 am
by numilike
snasui wrote: เข้าเมนู Tools แล้ว Add Reference ตามภาพเข้ามาก่อนครับ
รันผ่านแล้วค่ะ ขอบคุณมากนะคะ
รันผ่านแล้ว แต่ข้อมูลไม่แสดง เลยคิดว่าน่าจะเป็นเพราะ Debug.Print
เลยแก้ไข โดยใช้ .Cells ตาม code ข้อมูลก็แสดงค่ะ
Code: Select all
Sub Macro1()
Dim row As Long
Set a = Workbooks("Read_PG.xls").Worksheets("Sheet1")
Dim cnnDB As ADODB.Connection
Dim rstList As ADODB.Recordset
Set cnnDB = New ADODB.Connection
cnnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=D:\PG\PG2.mdb;"
Set rstList = cnnDB.OpenSchema(adSchemaTables)
row = 2
With rstList
Do While Not .EOF
If .Fields("TABLE_TYPE") <> "VIEW" Then
' Debug.Print .Fields("TABLE_NAME") & vbTab & .Fields("TABLE_TYPE")
a.Cells(row, 1) = .Fields("TABLE_NAME")
row = row + 1
End If
.MoveNext
Loop
End With
cnnDB.Close
Set cnnDB = Nothing
End Sub