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
:D การทำเช่นนั้นต้องพึ่ง VBA ดูตัวอย่างตาม Link นี้ครับ http://msdn.microsoft.com/en-us/library ... e.10).aspx

Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel

Posted: Wed Sep 03, 2014 4:01 pm
by numilike
snasui wrote::D การทำเช่นนั้นต้องพึ่ง VBA ดูตัวอย่างตาม Link นี้ครับ http://msdn.microsoft.com/en-us/library ... e.10).aspx


ขอบคุณค่ะ จะลองทำดูนะคะ

Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel

Posted: Wed Sep 03, 2014 4:58 pm
by numilike
numilike wrote:
snasui wrote::D การทำเช่นนั้นต้องพึ่ง VBA ดูตัวอย่างตาม Link นี้ครับ http://msdn.microsoft.com/en-us/library ... e.10).aspx

ลองทำดูแล้ว ใช้วิธีที่ 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
:D เข้าเมนู Tools แล้ว Add Reference ตามภาพเข้ามาก่อนครับ

Re: อยากทราบวิธีการดึงชื่อตารางจาก Access มายัง Excel

Posted: Thu Sep 04, 2014 8:41 am
by numilike
snasui wrote::D เข้าเมนู 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