Page 1 of 1

คำถาม VBA ใช้ Query ดึงข้อมูลจากไฟล์ Excel อื่นๆ (XLSB)

Posted: Tue Jan 20, 2015 6:04 pm
by eieisung
ผมมีไฟล์ Excel ที่ใช้เป็นฐานข้อมูลใน format XLSB อยู่จำนวนหนึ่ง ในไฟล์มีชีท Data อยู่ และที่ชีท Data ติด password "123" อยู่ด้วย
ผมมีความจำเป็นต้องใช้ Query ดึงข้อมูลทั้งหมดออกมาด้วยคำสั่งดังนี้ครับ

Code: Select all

Dim conStr As String
Dim adbC As ADODB.Connection
Dim adrS As ADODB.Recordset

conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Excel.xlsb;Extended Properties=Excel 12.0;HDR=YES;"

       Set adbC = New ADODB.Connection
        With adbC
            .CursorLocation = adUseClient
            .Open conStr
            .CommandTimeout = 0
            Set adrS = .Execute("SELECT * FROM `Data$`")
        End With
        .
        .
        .
        .

adrS.Close
adbC.Close
Set adrS = Nothing
Set adbC = Nothing
***เมื่อสั่งให้ทำงาน Excel ฟ้อง Error แบบนี้ครับ
"Could not find installable ISAM"
พร้อมกับป้ายแถบสีใว้ที่ .Open conStr ครับ :o :o :o


ไม่ทราบว่ามันเป็นเพราะอะไร และต้องแก้ไขอย่างไรครับ
หรือหากมีแนวทางอื่นๆช่วยแนะนำหน่อยครับ


ส่วน References ที่ผมเพิ่มใว้มีดังนี้ครับ

Code: Select all

Visual Basic For Applications
Microsoft Excel 14.0 Object Library
OLE Automation
Microsoft Office 14.0 Object Library
Microsoft Forms 2.0 Object Library
Microsoft Access 14.0 Object Library
Microsoft Script Control 1.0
Microsoft Scriptlet Library
Microsoft ActiveX Data Objects 6.1 Library
Microsoft ActiveX Data Objects Recordset 6.0 Library

Re: คำถาม VBA ใช้ Query ดึงข้อมูลจากไฟล์ Excel อื่นๆ (XLSB)

Posted: Tue Jan 20, 2015 10:08 pm
by snasui
:D ลองปรับตัวแปร conStr เป็น ตามด้านล่างครับ

Code: Select all

conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Excel.xlsb;Extended Properties=""Excel 12.0;HDR=YES;"""

Re: คำถาม VBA ใช้ Query ดึงข้อมูลจากไฟล์ Excel อื่นๆ (XLSB)

Posted: Wed Jan 21, 2015 9:52 am
by eieisung
ขอบคุณครับ ตอนนี้การเชื่อมต่อไม่มี Error แล้ว
แต่ผมมีข้อสงสัยเพิ่มเติมเกี่ยวกับ Recordset ครับ

ตรงที่ว่า เมื่อสั่ง ".CopyFromRecordset adrS"
สามารถดึงข้อมูลออกมาได้ปกติ (มีข้อมูลประมาณ 80 Record)

แต่บรรทัดต่อมาผมจะนับข้อมูลใน Recordset โดยการสั่ง "adrS.RecordCount"
ปรากฏว่า ผลลัพธ์ที่ได้คือ -1 (ลบหนึ่ง)

คำถามคือ
ผมต้องแก้ไขอย่างไร เพื่อให้สามารถนับจำนวนข้อมูลที่มีอยู่ใน Recordset ได้
หรือถ้ามีวิธีการอื่นใด ที่สามารถใช้แทนกันได้ ช่วยแนะนำหน่อยครับ

Re: คำถาม VBA ใช้ Query ดึงข้อมูลจากไฟล์ Excel อื่นๆ (XLSB)

Posted: Wed Jan 21, 2015 10:27 pm
by snasui
:D ลองประยุกต์ใช้ตาม Link นี้ครับ https://msdn.microsoft.com/en-us/librar ... e.12).aspx

Re: คำถาม VBA ใช้ Query ดึงข้อมูลจากไฟล์ Excel อื่นๆ (XLSB)

Posted: Thu Jan 22, 2015 1:14 pm
by eieisung
ขอบคุณครับ