EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ขอบคุณครับ เดี๋ยวจะลองก่อน ถ้าติดปัญหาอะไรจะมาสอบถามเพิ่มเติมครับsnasui wrote: แนวทางในการเขียน Code คือต้องทราบว่า Workbook นั้นอยู่ใน Path ใดแล้วเขียน Code ให้เปิดไฟล์ วิธีการง่าย ๆ ให้บันทึก Macro สำหรับการเปิดไฟล์แล้วนำ Code มาปรับใช้ หากมีหลายไฟล์ก็ต้องใช้ Loop มาช่วยครับ
การอ้างอิงโดยไม่ต้องเปิดก็ได้เช่นกันเป็นการใช้ Code เขียนสูตรอ้างอิงข้ามไฟล์ที่ปิด ทำการคัดลอกสูตรนั้นไปวางยังตำแหน่งที่ต้องการ จากนั้น Copy สูตรและวางเป็น Value
อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
จากการทดลองวิธีการที่ 2 ที่อาจารแนะนำมาsnasui wrote: แนวทางในการเขียน Code คือต้องทราบว่า Workbook นั้นอยู่ใน Path ใดแล้วเขียน Code ให้เปิดไฟล์ วิธีการง่าย ๆ ให้บันทึก Macro สำหรับการเปิดไฟล์แล้วนำ Code มาปรับใช้ หากมีหลายไฟล์ก็ต้องใช้ Loop มาช่วยครับ
การอ้างอิงโดยไม่ต้องเปิดก็ได้เช่นกันเป็นการใช้ Code เขียนสูตรอ้างอิงข้ามไฟล์ที่ปิด ทำการคัดลอกสูตรนั้นไปวางยังตำแหน่งที่ต้องการ จากนั้น Copy สูตรและวางเป็น Value
อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
Code: Select all
Sub Macro3()
Dim smif As Integer
smif = Worksheet.Function.SumIfs('C:\Users\Yutthana.Kasemsuboon\Desktop\test-vba\[object.xlsx]aabb'!$D$2:$D$11),'C:\Users\Yutthana.Kasemsuboon\Desktop\test-vba\[object.xlsx]aabb'!$C$2:$C$11,Active.Worksheet.range("E5"),'C:\Users\Yutthana.Kasemsuboon\Desktop\test-vba\[object.xlsx]aabb'!$B$2:$B$11,Active.Worksheet.range("D5"))
End Sub