วันพุธที่ 15 กันยายน พ.ศ. 2553

การใช้งาน Excel : การอ้างถึงไฟล์ Excel ใน VBA

สวัสดีครับท่านผู้อ่าน How to excel บทความนี้เกิดจากความรับผิดชอบต่อท่านผู้อ่านในบทความเรื่อง การเปิดไฟล์ Excel ใน VBA ซึ่งการทำงานใน vba ส่วนใหญ่จะมีการอ้างถึงไฟล์ Excel ที่เปิดใช้งานอยู่ ซึ่งมีหลายวิธี เรามาทำความเข้าใจในแต่ละวิธีกันครับ

1. การอ้างถึง Workbooks หรือไฟล์ Excel ที่กำลังทำงานอยู่หรือกำลัง Focus เราจะใช้

ActiveWorkbook properties

ตัวอย่างการใช้งานเช่น

หลังจากการใช้งาน Excel บนWorkbooks เสร็จสิ้น หากต้องการปิด Workbooks โดยไม่บันทึก จะใช้คำสั่ง

ActiveWorkbook.Close False หมายถึงให้ปิด Workbooks ที่กำลัง Focus โดยไม่บันทึก

หากต้องการ บันทึกข้อมูลก่อนปิด จะใช้คำสั่ง


ActiveWorkbook.Close True หมายถึงให้ปิด Workbooks ที่กำลัง Focus โดยบันทึกก่อนปิดไฟล์

หากต้องการทราบชื่อหรือตำแหน่งของไฟล์ Excel หรือ Workbook ที่กำลัง Focus สามารถใช้คำสั่ง

ActiveWorkbook.Path  หมายถึงให้คืนค่าตำแหน่งที่เก็บไฟล์ Excel นี้กลับ
ActiveWorkbook.Name หมายถึงให้คืนชื่อไฟล์ Excel นี้กลับ
2.การอ้างถึง Workbooks หรือไฟล์ Excel ที่กำลังรัน โค้ด VBA เนื่องจาก โค้ด VBA ไม่ได้อยู่ใน Workbooks ที่กำลัง Focus เสมอไป เราจะใช้ ThisWorkbook property ในการอ้างถึง ตัวอย่างการใช้งาน เช่น
ThisWorkbook.Path
ThisWorkbook.Name
3.การอ้างถึง Workbooks หรือไฟล์ Excel ที่เปิดอยู่ทั้งหมดด้วยWorkbooks collection ตัวอย่างเช่น การแสดงชื่อ Workbooks ทั้งหมดที่เปิดลงใน ListBox1
Dim wb As Workbook For Each wb In Workbooks ListBox1.AddItem wb.Name Next wb
4.การอ้างถึง Workbooks หรือไฟล์ Excel แบบชัดแจ้ง (explicit name) เป็นการอ้างถึง Workbooks หรือไฟล์ Excel ด้วยชื่อ Workbooks หรือไฟล์ Excel นั่นเช่น หากต้องการปิดไฟล์ Excel ชื่อ Test.xls โดยไม่บันทึก เราจะใช้คำสั่งดังนี้
Workbooks(“Tesr.xls”).Close False
หรือหากต้องการ Focus หรือ Active ก็สามารถสั่งได้ดังนี้
Workbooks(“Tesr.xls”).Active
การอ้างถึงด้วยวิธีนี้สิ่งที่ควรระวังให้มากคือ ชื่อ Workbooks หรือไฟล์ Excel ที่อาจมีการเปลี่ยนแปลงได้ซึ่งจะทำให้เกิดความผิดพลาดในการะหว่างทำงานได้ (Run-time error)
5. การอ้างถึง Workbooks หรือไฟล์ Excel ด้วย Index Excel จะกำหนดค่า Index ให้กับ Workbooks หรือไฟล์ Excel ที่เปิด โดยกำหนดตามลำดับที่เปิดก่อนหลัง ดังนั้นหากต้องการอ้างถึง Workbooks หรือไฟล์ Excel ที่เปิดเป็นไฟล์แรก ก็จะอ้างถึงได้ดังนี้
Workbooks(1).Active
สิ่งที่ควรระวังในการอ้างถึงคือ Index ของ Workbooks หรือไฟล์ Excel ที่เปิด จะมีการเปลี่ยนแปลงหากมีการปิดไฟล์ โดยจะมีการจัดเรียง Index ใหม่ทุกครั้ง
ผมหวังว่าท่านผู้อ่านจะทำความเข้าใจกับการอ้างอิง Workbooks หรือไฟล์ Excel แบบต่างๆและหยิบเอาไปใช้ในการเขียนโค้ด VBA เพราะเราคงปฏิเสธไม่ได้ว่าในทางปฎิบัติเราคงต้องเจอไฟล์ Excel หรือ Workbooks ที่ทั้งเกี่ยวข้องกับการประมวลผลและไม่เกี่ยวข้องเปิดอยู่เต็มไปหมดบนคอมพิวเตอร์ของเราขณะรัน Macro หากเราเข้าใจในบทความนี้อย่างถ่องแท้ เราจะไม่หลงทางไปเข้าไปอ่านข้อมูลผิดไฟล์ครับ เดี๋ยวบทความต่อไปมาทำความเข้าใจกับการอ้างถึง Worksheets ใน VBA ซึ่งมีความสำคัญมากเช่นกันครับ สวัสดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Yahoo bot last visit powered by  Ybotvisit.com