สวัสดีตอนเช้าครับท่านผู้อ่าน How to excel บทความนี้ยังเป็นการนำเสนอ Excel utility สำหรับเตรียมพร้อมในการสร้างระบบการประเมินผลด้วย KPI ที่ผมได้นำเสนอเป็น Serie ค้างไว้ เนื่องด้วยอยากปูพื้นฐานถึงที่มาที่ไปของการทำงานในระบบการประเมินผลของเรา Excel utility ในบทความนี้ขอกล่าวถึงการเปิดไฟล์ Excel ครับ เนื่องด้วยหากท่านผู้อ่านย้อนกลับยัง Serie ระบบการประเมินผลด้วย KPI ท่านจะเห็นว่า เราจำเป็นต้องเข้าไปอ่านข้อมูลการประมวลผล KPI ของ KPI ระดับต่างๆดังแสดงในภาพที่ 1
ภาพที่ 1 ลักษณะการเข้าถึงข้อมูลผลการชี้วัด KPI
สิ่งแรกที่ต้องทำในการเข้าไปอ่านข้อมูลและดึงข้อมูลมาเก็บที่ไฟล์ Excel (สรุปผล KPI.xls) ก็คือต้องทำการเปิดไฟล์ก่อนครับ เริ่มจากสร้างปุ่มกด Worksheets ของไฟล์ สรุปผล KPI.xls สำหรับเรียกใช้งาน Macro และสร้าง Macroในการเปิดไฟล์ สมมุติให้ชื่อว่า ImportData_Click ซึ่งมีรายละเอียดดังนี้ครับ
Sub ImportData_Click()
Dim cur As Integer
Dim actWBName As String
actWBName = ActiveWorkbook.Name
With Application.FileDialog(msoFileDialogOpen)
.Title = "Select File"
.AllowMultiSelect = False
.Show
Workbooks.Open (.SelectedItems(1))
cur = Workbooks.Count
Workbooks(cur).Activate
‘ Do some thing
Workbooks(cur).Close
Workbooks(actWBName).Activate
End With
End Sub
สามารอธิบายการทำงานของ VBA โค้ดได้ดังนี้ครับ
Dim cur As IntegerDim actWBName As String
กำหนดตัวแปร cur สำหรับเก็บตำแหน่งของ workbooks ล่าสุด กำหนดตัวแปร actWBName สำหรับเก็บชื่อไฟล์ Excel ที่เรียกใช้งาน Macro
actWBName = ActiveWorkbook.Name
เก็บชื่อไฟล์ Excel ที่กำลังใช้งานอยู่ไว้ในตัวแปร actWBName
With Application.FileDialog(msoFileDialogOpen)
เรียก Dialog สำหรับเปิดไฟล์ด้วยฟังก์ชัน FileDialog และกำหนดโหมดเปิดไฟล์ด้วยตัวแปร msoFileDialogOpen
.Title = "Select File"
.AllowMultiSelect = False
.Show
กำหนดข้อความใน Title ของDialog เป็น Select File
กำหนดให้ผู้ใช้งานสมารถเลือกเปิดไฟล์ได้ไฟล์เดียวหรือหลายไฟล์ด้วย properties AllowMultiSelect ในตัวอย่างนี้กำหนดให้เลือกได้ไฟล์เดียว (False)
สั่งให้แสดงDialogด้วย properties Show
เมื่อ ถึงคำสั่งในบรรทัดนี้ Excel จะแสดง Dialog สำหรับเปิดไฟล์ ดังแสดงในภาพที่ 2
ภาพที่ 2 Dialog สำหรับเปิดไฟล์
Workbooks.Open (.SelectedItems(1))
cur = Workbooks.Count
Workbooks(cur).Activate
‘ Do some thing
Workbooks(cur).Close
เปิดไฟล์ Excel ที่เลือก (.SelectedItems(1)) ด้วยคำสั่ง Open ของ object Workbooks
เก็บตำแหน่งไฟล์ Excel ล่าสุดที่เปิดไว้ (ตำแหน่งไฟล์ Excel ที่เราเปิดนั่นแหล่ะครับ) เพื่อใช้อ้างอิง Workbooks โดยเก็บไว้ที่ตัวแปร cur
Active ไฟล์ Excel ที่เปิดล่าสุดผ่านการอ้างอิงเพื่อเตรียมเข้าไปอ่านหรือทำงานในไฟล์ Excel นั้น
ดำเนินการภายในไฟล์ Excel ที่ Active
เมื่อเสร็จแล้วปิดไฟล์ Excel ที่ Active ด้วยคำสั่ง Close
Workbooks(actWBName).Activate
End With
ทำการกำหนดให้ไฟล์ Excel ที่เรียกใช้งาน Macro นี้ Activate โดยผ่านการอ้างอิงด้วยชื่อไฟล์ ในตัวแปร actWBName
จบแล้วครับสำหรับการเปิดไฟล์ Excel ก่อนเข้าไปอ่านข้อมูลหรือกระทำการใดๆ หวังว่าคงเป็นประโยชน์กับท่านผู้อ่านนะครับ สวัสดีครับ
5 ความคิดเห็น:
จาก VBA โค้ดที่ผมได้นำเสนอไป หากให้การใช้งาน Excel สมบูรณ์มากขึ้นเราต้องตรวจจับการแสดง Dialog เปิดไฟล์เพื่อป้องการความผิดพลาดกรณีผู้ใช้งานกดปุ่ม ยกเลิก หรือ Cancel โดยปรับเงื่อนไขการ Show Dialog ดังนี้
if .Show = false Then Exit Sub
เท่านี้ก็ป้องกันการเกิด Run time error กรณีที่ผู้ใช้กดปุ่ม ยกเลิก หรือ Cancel ได้แล้วครับ
สวัสดีครับ
การป้องกันความผิดพลาดหากผู้ใช้เลือกไฟล์ประเภทอื่นๆที่ไม่ตรงกับการทำงานของ VBA ที่เีรากำหนดขึ้น เราสามารถกำหนดการกรองชนิดของไฟล์ที่จะเปิดได้ ให้ท่านผู้อ่านแทรก โค้ด VBA ใต้บรรทัด
.Title = "Select File"
ด้วยโค้ดดังนี้
.Filters.Clear
.Filters.Add "MS Excel(*.xls)", "*.xls"
.Filters.Add "MS Excel(*.xlsx)", "*.xlsx"
เป็นการกำหนดให้ Dialog เปิดไฟล์ของเรากรองให้แสดงเฉพาะไฟล์ Excel และ Excel 2007 เท่านั้น
พี่ค่ะเราสามารถใช้ code นี้เปิด file งานอย่างอื่นที่ไม่ใช่ excel ได้ไหมค่ะ
หมายถึงว่าเปิดไฟล์อื่นด้วย excel รึป่าวครับ
ขอบคุณมากๆ ครับ เป็นประโยชน์มากๆ
แสดงความคิดเห็น