สวัสดีตอนเช้าครับท่านผู้อ่าน 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 ก่อนเข้าไปอ่านข้อมูลหรือกระทำการใดๆ หวังว่าคงเป็นประโยชน์กับท่านผู้อ่านนะครับ สวัสดีครับ
จาก 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 รึป่าวครับ
ตอบลบขอบคุณมากๆ ครับ เป็นประโยชน์มากๆ
ตอบลบ