:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#1

Post by eyepop99 »

ถ้าผมต้องการเรียก ใช้workbook ที่ไม่ได้เปิดอยู่ควรจะใช้ syntax อย่างไรครับเข้าใจว่าจะต้องนำไปแทนค่าในตัวแปรที่เป็น workbook
โดยเริ่มจาก
Dim wb as workbook
set wb = workbook("workbookname.xlx")

แต่กรณีเบื้องต้นจะต้องเปิด workbook นั้นๆขึ้นมาก่อน
ถ้าต้องการจะอ้างถึงโดยไม่ต้องเปิดจะต้องใช้อย่างไรครับ
รวมถึงการเรียกใช้ sheet ของ workbook ที่ปิดอยู่ และอ้างถึงcell ภายใน workbook ด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30751
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#2

Post by snasui »

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

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

อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#3

Post by eyepop99 »

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

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

อีกวิธีใช้ Statement ของ SQL เข้ามาช่วยดึงข้อมูลในไฟล์ที่ปิดอยู่ เป็นวิธีการที่ยากขึ้นไปอีกระดับ หากยังไม่คล่องกับ VBA ยังไม่ควรเลือกทำวิธีนี้ครับ
ขอบคุณครับ เดี๋ยวจะลองก่อน ถ้าติดปัญหาอะไรจะมาสอบถามเพิ่มเติมครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

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

#4

Post 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


User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

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

#5

Post by logic »

ลองบันทึกมาโคร เปิดไฟล์ เขียนสูตร แล้วดูโค้ดจะแม่นยำกว่าครับ

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