:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
eieisung
Member
Member
Posts: 11
Joined: Thu Jul 24, 2014 11:40 am

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

#1

Post 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
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#2

Post 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;"""
eieisung
Member
Member
Posts: 11
Joined: Thu Jul 24, 2014 11:40 am

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

#3

Post by eieisung »

ขอบคุณครับ ตอนนี้การเชื่อมต่อไม่มี Error แล้ว
แต่ผมมีข้อสงสัยเพิ่มเติมเกี่ยวกับ Recordset ครับ

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

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

คำถามคือ
ผมต้องแก้ไขอย่างไร เพื่อให้สามารถนับจำนวนข้อมูลที่มีอยู่ใน Recordset ได้
หรือถ้ามีวิธีการอื่นใด ที่สามารถใช้แทนกันได้ ช่วยแนะนำหน่อยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#4

Post by snasui »

:D ลองประยุกต์ใช้ตาม Link นี้ครับ https://msdn.microsoft.com/en-us/librar ... e.12).aspx
eieisung
Member
Member
Posts: 11
Joined: Thu Jul 24, 2014 11:40 am

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

#5

Post by eieisung »

ขอบคุณครับ
Post Reply