snasui wrote:
แนวทางในการเขียน Code คือต้องทราบว่า Workbook นั้นอยู่ใน Path ใดแล้วเขียน Code ให้เปิดไฟล์ วิธีการง่าย ๆ ให้บันทึก Macro สำหรับการเปิดไฟล์แล้วนำ Code มาปรับใช้ หากมีหลายไฟล์ก็ต้องใช้ Loop มาช่วยครับ
การอ้างอิงโดยไม่ต้องเปิดก็ได้เช่นกันเป็นการใช้ Code เขียนสูตรอ้างอิงข้ามไฟล์ที่ปิด ทำการคัดลอกสูตรนั้นไปวางยังตำแหน่งที่ต้องการ จากนั้น Copy สูตรและวางเป็น Value
อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
จากการทดลองวิธีการที่ 2 ที่อาจารแนะนำมา
เริ่มจาก อ้างอิงจากชีตที่ปิด
1.ใช้สูตร โดยการอ้างอิ้งชีตที่เปิด
2.ปิดชีตที่อ้างอิ้ง
ผลลัพธ์
-หลังจากปิด แล้ว enter ที่สูตร ผลลัพธ์ที่ได้ ขึ้น #value
ลองใช้ worksheetfunction.sumifs()
และนำ สูตรที่ใช้ sumifs อ้างอิงชีตที่ปิด
เกิด error เนื่องจากมีเครื่องหมาย ' ซึ่งผิดsyntax และลอง ใช้ เครื่องหมาย " ครอบ เข้าไปข้อมูลอ้างอิงกลายเป็น text และผิด syntax เนื่องจากข้อมูลในfunction sumifs ต้องเป็น range
ไม่ทราบว่าจะต้องแก้ไขอย่างไรครับ
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