วิธีการใช้ ADOX กับข้อมูล Excel จาก Visual Basic หรือ VBA

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 303814 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

ส่วนขยายวัตถุข้อมูล ActiveX สำหรับภาษาของข้อกำหนดของข้อมูลและการรักษาความปลอดภัย (ADOX) ช่วยให้นักพัฒนาวัตถุข้อมูล ActiveX (ADO) ความสามารถที่จะแสดงอยู่ในข้อมูลการเข้าถึงวัตถุ (DAO) สำหรับใช้ฐานข้อมูล ตาราง เขตข้อมูล และวัตถุฐานข้อมูลอื่นโดยทางโปรแกรม หลังจากการวางจำหน่ายผู้ Microsoft OLE DB ให้สำหรับเวอร์ชันการ Jet 4.0 ซึ่งสนับสนุนโปรแกรมควบคุม ISAM ที่โปรแกรม Jet ที่ใช้กับฐานข้อมูลที่เดสก์ท็อปอื่นที่ไม่ใช่ Microsoft Access นักพัฒนา ADO ได้สามารถใช้ ADO และ ADOX กับสมุดงาน Microsoft Excel และแผ่นงาน

อย่างไรก็ตาม เนื่องจากแผ่นงาน Excel จะไม่มีฐานข้อมูลธรรมดา ADO มีข้อจำกัดบางเมื่อมีใช้กับ Excelโดยเฉพาะ วิธี ADOX จำนวนมากไม่ทำงาน หรือให้ผลลัพธ์ที่ไม่คาดคิดเมื่อพวกเขาจะใช้กับ Excelบทความนี้เอกสารจำนวนมากข้อจำกัดของ ADOX และ Excelสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADO กับ Excel คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
257819วิธีการใช้ ADO กับข้อมูล Excel จาก Visual Basic หรือ VBA
บทความนี้แบ่งออกเป็นส่วนที่ต่อไปนี้:

หมายเหตุ:: การทดสอบสำหรับบทความนี้ถูกทำบน Microsoft Windows 2000 Server Service Pack 2 (SP2) กับ Microsoft Data Access คอมโพเนนต์ (MDAC) 2.6 SP1, SP5 6 Visual Basic ของ Microsoft และ Microsoft Excel 2002 (XP) บทความนี้อาจไม่ยอมรับ หรือการกล่าวถึงความแตกต่างในลักษณะการทำงานที่ผู้ใช้อาจคำนึงถึง ด้วย Windows, MDAC, Visual Basic หรือ Excel รุ่นต่าง ๆ

ข้อมูลเพิ่มเติม

แค็ตตาล็อก ADOX

ในรูปแบบวัตถุ ADOX,แค็ตตาล็อกวัตถุฐานข้อมูลที่แสดงถึงหรือ ในกรณี ของ Excel สมุดงาน
  • คุณสามารถใช้การ ADOเชื่อมต่อสายอักขระการเชื่อมต่อหรือวัตถุเพื่อสร้าง หรือเปิดตัวแค็ตตาล็อกวัตถุ ตัวอย่างรหัสต่อไปนี้แสดงให้เห็นถึงวิธีการเปิด Book1.xls เป็น ADOX ข้อแค็ตตาล็อก:
    Dim cat As ADOX.Catalog
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    					
  • กระบวนการแค็ตตาล็อกวัตถุได้สร้างวิธีการ แต่ไม่จำเป็นลบวิธีการ

การสร้างการแค็ตตาล็อก

คุณไม่สามารถใช้ได้สร้างวิธีการ ADOXแค็ตตาล็อกวัตถุเพื่อสร้างสมุดงาน Excel ใหม่ ถ้าคุณพยายามที่จะทำเช่นนั้น คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
การดำเนินการไม่ได้รับการสนับสนุนสำหรับชนิดของวัตถุนี้
อย่างไรก็ตาม คุณสามารถ สร้างสมุดงาน Excel ใหม่ โดยการระบุชื่อแฟ้มสมุดงานใหม่สำหรับแค็ตตาล็อกของคุณ และ appending อย่างน้อยหนึ่งตารางไปยังแค็ตตาใหม่ล็อก โดยใช้เทคนิคต่าง ๆ ที่กล่าวถึงด้านล่าง วิธีนี้จะสร้างสมุดงานใหม่ ด้วยแผ่นเท่านั้นงานคุณได้สร้างเป็นตาราง ADOX ในอย่างอื่น หมายเลขเริ่มต้นของแผ่นงานเปล่าที่ระบุสำหรับสมุดงาน Excel ใหม่โดย Excelตัวเลือกกล่องโต้ตอบจะไม่สามารถเพิ่ม

ตาราง ADOX

ADOXตาราง:วัตถุที่สอดคล้องกับวัตถุ Excel (นั่นคือ แผ่นงานหรือช่วง) ที่สามารถทำหน้าที่เป็นคอนเทนเนอร์ของข้อมูลอย่างใดอย่างหนึ่ง

การสร้างตาราง

คุณสามารถใช้ ADOX เพื่อสร้างตารางใหม่ใน Excel เนื่องจากคุณไม่สามารถสร้างตารางไม่ มีการสร้างคอลัมน์ยัง ตัวอย่างของรหัสที่ปรากฏในการ "คอลัมน์ ADOX"ส่วน
  • การสร้างตาราง ADOX ใหม่สร้างแผ่นงานใหม่และช่วงที่มีชื่อใหม่บนแผ่นงานใหม่ ด้วยชื่อที่ระบุ ช่วงที่มีชื่อใหม่ขยายขอบเขตเฉพาะส่วนหัวคอลัมน์ ตัวอย่าง ถ้าคุณสร้างตาราง (แผ่นงาน) ชื่อ MyTable กับคอลัมน์ที่สอง ช่วงที่มีชื่อ MyTable ซึ่งถูกกำหนดเป็น MyTable ! $ A $ 1: $ B $ 1 นอกจากนี้ถูกสร้างขึ้น
  • คุณสามารถระบุชื่อของตารางที่มีช่องว่าง อย่างไรก็ตาม ADOX แทนว่างได้ ด้วยการขีดล่างในชื่อแผ่นงานและช่วงที่คุณสร้าง
  • แผ่นงานใหม่ถูกสร้างเป็นแผ่นงานสุดท้ายในสมุดงาน ต่อหมายเลขเริ่มต้นของแผ่นงานที่ว่างที่ระบุไว้ในตัวเลือก Excel สำหรับสมุดงานใหม่
  • ถ้าคุณพยายามที่จะสร้างตารางใหม่เมื่อสมุดงานที่เปิดใน Excel อยู่ คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    ข้อผิดพลาดที่ไม่ระบุ
  • ถ้าคุณพยายามที่จะสร้างตารางที่มีคอลัมน์ที่ไม่มีกำหนด มันปรากฏขึ้นเพื่อที่สำเร็จ แต่ใน fact สิ่งใดที่ถูกสร้างขึ้น
  • ถ้าคุณพยายามที่จะเปลี่ยนชื่อของตารางมีอยู่แล้ว คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    การดำเนินการไม่ได้รับการสนับสนุนสำหรับชนิดของวัตถุนี้

การลบตาราง

คุณไม่สามารถใช้ ADOX เพื่อลบตาราง (แผ่นงาน) หรือช่วงใน Excel ในการตั้งชื่อว่า ADOX สร้างหรือไม่
  • ถ้าคุณพยายามที่จะลบแผ่นงาน (MyTable $), มันปรากฏขึ้นให้สำเร็จ โดยไม่มีข้อผิดพลาด แต่แผ่นงานที่ยังคงอยู่ในสมุดงาน คุณสามารถเรียกได้ลบmethod repeatedly without error, but it has no effect.
  • If you try to delete the range (MyTable), it appears to succeed without error, but the range remains in the workbook. However, if you try to delete the range a second time, you receive error 3265:
    Item cannot be found in the collection corresponding to the requested name or ordinal.
  • If you try to delete a named range, it leaves the named range definition intact, but any data in the range is deleted.

ADOX Columns

ADOX columns correspond to the columns or fields in a database and neatly correspond to the columns of an Excel worksheet.

ADO Data Types Used with Excel

ADO recognizes six data types in an Excel datasource that you can use to create columns:

  • adDouble, type 5
  • adDate, type 7
  • adCurrency, type 6
  • adBoolean, type 11
  • adVarWChar, type 202
  • adLongVarWChar ("memo"), type 203

Columns in General

  • You can append additional columns to a previously created table as long as the table does not contain any rows of data.
  • You can specify column names that include spaces.
  • ADOX always creates column headings that are preceded by a single quotation mark ('), for example, 'F1, 'Col1, 'Col2. However, this does not appear to cause a problem later because the name is retrieved without the quotation mark.

Creating Columns When Creating a Table

Creating columns works best when it is done at the same time that a new table is created using ADOX.

The following code creates a new table (worksheet) that contains two columns (one numeric and one text):
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    Set tbl = New ADOX.Table
    tbl.Name = "TestTable"
    Set col = New ADOX.Column
    With col
        .Name = "Col1"
        .Type = adDouble
    End With
    tbl.Columns.Append col
    Set col = Nothing
    Set col = New ADOX.Column
    With col
        .Name = "Col2"
        .Type = adVarWChar
    End With
    tbl.Columns.Append col
    cat.Tables.Append tbl
				

Creating Columns in an Existing Worksheet

Appending columns to a pre-existing, empty worksheet generates unusual results. When the first ADOX column is appended to the table's Columns collection, ADOX first creates a column header named F1 in Column A of the worksheet and then creates the new ADOX column header in Column B of the worksheet. Thus, ADOX code that appends two new columns results in three column headers. If you try to delete this unwanted, first column from the Columns collection before you append the first ADOX column, it appears to succeed, but the unwanted column is created nonetheless.

Deleting Columns

You cannot delete a column from an ADOX table in Excel.
  • If the column has no data, this appears to succeed without error, but the column and column header remain.
  • If the column contains data, the delete operation fails with the following error message:
    Invalid operation.

Changing the Data Type of an Existing Column

After a column has been appended to a table, if you try to set its .Type property to a different data type, you receive the following error message:
Operation is not allowed in this context.

Adding Data to Excel Tables and Columns

When you are testing ADO code with Excel in the Visual Basic design environment, the first time that you run a recordset operation, you may receive the following error message:
เลือกลำดับ collating ที่ไม่ได้รับการสนับสนุน โดยระบบปฏิบัติการ
You can disregard this error message; this error does not occur after the application is compiled.สำหรับข้อมูลเพิ่มเติม โปรดคลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
246167PRB: Collating ข้อผิดพลาดลำดับ ADODB เปิดชุดระเบียนเวลาแรกกับ Excel XLS

Adding Data to Excel Columns That Are Created by ADOX

เมื่อคุณใช้ ADO แทรก หรือปรับเปลี่ยนข้อมูลในตารางและคอลัมน์ที่คุณสร้างใน Excel ที่ใช้ ADOX, ADO respects ชนิดของข้อมูลที่คุณระบุไว้สำหรับคอลัมน์เหล่านั้น ถึงแม้ว่าจะไม่ล้างที่เก็บข้อมูลนี้
  • ค่าสายอักขระข้อความทั้งหมดจะถูกเก็บไว้ก่อนหน้า โดยเครื่องหมายใบเสนอราคาเดียวกัน อย่างไรก็ตาม นี้ไม่ปรากฏขึ้นเพื่อทำให้เกิดปัญหาในภายหลังได้เนื่องจากค่าถูกเรียก โดยไม่มีเครื่องหมายใบเสนอราคา
  • ถ้าคุณพยายามที่จะแทรกเป็นสายอักขระข้อความลงในคอลัมน์ที่ถูกกำหนดเป็นตัวเลข หรือตัวเลขลงในคอลัมน์ข้อความ คุณได้รับข้อความแสดงข้อผิดพลาด 80040e21:
    สร้างการดำเนินการขั้นตอนหลายข้อผิดพลาด ตรวจสอบแต่ละค่าสถานะ

การเพิ่มข้อมูลไปยังคอลัมน์ Excel ปกติ

เมื่อคุณใช้ ADO แทรก หรือปรับเปลี่ยนข้อมูลในแผ่นงาน Excel หรือช่วงที่จะไม่มีสร้าง หรือปรับเปลี่ยนโดยใช้ ADOX ไม่มีข้อจำกัดจะใช้กับชนิดของข้อมูลที่คุณสามารถแทรก
  • สายอักขระข้อความจะถูกเก็บไว้ โดยไม่มีเครื่องหมายการเสนอราคาหนึ่งข้างต้น
  • หมายเลขปรากฏชิดซ้าย ใน Excel 2002 หมายเลขจะถูกตั้งค่าสถานะ ด้วยสมาร์ทแท็กที่เตือน "หมายเลขที่เก็บไว้เป็นข้อความ" ซึ่งอาจทำให้เกิดปัญหาในภายหลังเมื่อคุณกำลังทำงานกับข้อมูล โดยเฉพาะอย่างยิ่งถ้าข้อมูลได้ถูกเก็บไว้ใน Excel สำหรับการวิเคราะห์เป็นตัวเลข

การใช้สร้าง SQL, ALTER และใบแจ้งยอดที่ตัดทิ้ง

คุณสามารถเรียกใช้คำสั่ง Microsoft SQL ข้อมูลคำจำกัดความภาษา (DDL) เช่นสร้าง ALTER และปล่อยเทียบกับวัตถุฐานข้อมูลของ Excel ผ่าน ADO ข้อเชื่อมต่อเมื่อต้องการ yield ผลลัพธ์เดียวกันเป็นวิธี ADOX สอดคล้องกันที่อธิบายข้างต้น

บทสรุป

  • ADOX เหมาะกับ Excel เมื่อตารางใหม่ และต้องการสร้างคอลัมน์ของทั้งหมดขึ้นในเวลาเดียวกัน
  • ado เหมาะกับข้อมูลของ Excel เมื่อข้อมูลนั้นถูกเก็บในแผ่นงานที่สร้างขึ้นโดยใช้ ADOX

คุณสมบัติ

หมายเลขบทความ (Article ID): 303814 - รีวิวครั้งสุดท้าย: 10 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Keywords: 
kbdatabase kbhowto kbiisam kbmt KB303814 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:303814

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com