Page 1 of 1

การเรียกใช้งาน Workbook โดย VBA

Posted: Thu Jan 04, 2018 5:16 pm
by eyepop99
ถ้าผมต้องการเรียก ใช้workbook ที่ไม่ได้เปิดอยู่ควรจะใช้ syntax อย่างไรครับเข้าใจว่าจะต้องนำไปแทนค่าในตัวแปรที่เป็น workbook
โดยเริ่มจาก
Dim wb as workbook
set wb = workbook("workbookname.xlx")

แต่กรณีเบื้องต้นจะต้องเปิด workbook นั้นๆขึ้นมาก่อน
ถ้าต้องการจะอ้างถึงโดยไม่ต้องเปิดจะต้องใช้อย่างไรครับ
รวมถึงการเรียกใช้ sheet ของ workbook ที่ปิดอยู่ และอ้างถึงcell ภายใน workbook ด้วยครับ

Re: การเรียกใช้งาน Workbook โดย VBA

Posted: Thu Jan 04, 2018 7:40 pm
by snasui
:D แนวทางในการเขียน Code คือต้องทราบว่า Workbook นั้นอยู่ใน Path ใดแล้วเขียน Code ให้เปิดไฟล์ วิธีการง่าย ๆ ให้บันทึก Macro สำหรับการเปิดไฟล์แล้วนำ Code มาปรับใช้ หากมีหลายไฟล์ก็ต้องใช้ Loop มาช่วยครับ

การอ้างอิงโดยไม่ต้องเปิดก็ได้เช่นกันเป็นการใช้ Code เขียนสูตรอ้างอิงข้ามไฟล์ที่ปิด ทำการคัดลอกสูตรนั้นไปวางยังตำแหน่งที่ต้องการ จากนั้น Copy สูตรและวางเป็น Value

อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ

Re: การเรียกใช้งาน Workbook โดย VBA

Posted: Fri Jan 05, 2018 10:22 am
by eyepop99
snasui wrote::D แนวทางในการเขียน Code คือต้องทราบว่า Workbook นั้นอยู่ใน Path ใดแล้วเขียน Code ให้เปิดไฟล์ วิธีการง่าย ๆ ให้บันทึก Macro สำหรับการเปิดไฟล์แล้วนำ Code มาปรับใช้ หากมีหลายไฟล์ก็ต้องใช้ Loop มาช่วยครับ

การอ้างอิงโดยไม่ต้องเปิดก็ได้เช่นกันเป็นการใช้ Code เขียนสูตรอ้างอิงข้ามไฟล์ที่ปิด ทำการคัดลอกสูตรนั้นไปวางยังตำแหน่งที่ต้องการ จากนั้น Copy สูตรและวางเป็น Value

อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
ขอบคุณครับ เดี๋ยวจะลองก่อน ถ้าติดปัญหาอะไรจะมาสอบถามเพิ่มเติมครับ

Re: การเรียกใช้งาน Workbook โดย VBA

Posted: Fri Jan 05, 2018 1:28 pm
by eyepop99
snasui wrote::D แนวทางในการเขียน 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



Re: การเรียกใช้งาน Workbook โดย VBA

Posted: Fri Jan 05, 2018 1:40 pm
by logic
ลองบันทึกมาโคร เปิดไฟล์ เขียนสูตร แล้วดูโค้ดจะแม่นยำกว่าครับ

อย่าลืมว่าได้คำตอบแล้วก็ให้ใช้โค้ดคัดลอกแล้ววางแบบค่าครับ