: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

VBA เปิดไฟล์ xlsx กับ xls

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Jirawat namrach
Member
Member
Posts: 136
Joined: Mon Dec 12, 2022 5:05 pm
Excel Ver: 2016

VBA เปิดไฟล์ xlsx กับ xls

#1

Post by Jirawat namrach »

รบกวนสอบถามหน่อยครับ พอดีว่าในโฟลเดอร์มีทั้งไฟล์เก่า และ ใหม่ (xlsx และ xls) ถ้าต้องการเปิดไฟล์ที่พบ ไม่ว่าจะเป็น นามสกุลอะไร ต้องแก้ไข Code ยังไงครับ ทดลองปรับเป็น ".xl*" หรือ ".xlsx", "xls" หรือ ".xlsx" ; "xls" ก็ไม่ได้ (หาข้อมูลในเน็ต) รบกวนด้วยครับ

Code: Select all

Set sbook = Workbooks(nbook.Sheets("Bom").Range("b1") & ".xlsx")
User avatar
snasui
Site Admin
Site Admin
Posts: 30796
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA เปิดไฟล์ xlsx กับ xls

#2

Post by snasui »

:D จะใช้คำสั่ง Set เช่นนั้นได้ก็ต่อเมื่อ Workbook นั้นเปิดอยู่ แต่หากยังไม่เปิดจะต้องกำหนด Path ของไฟล์นั้นก่อนและ Set ค่าให้กับ sbook โดยการเปิดไฟล์ตาม Path นั้น

ทางเลือกในการกำหนดค่าให้กับไฟล์ที่จะเปิด สามารถใช้ dir เข้ามาช่วยเพื่อระบุชื่อไฟล์ที่คล้ายกันที่พบเป็นลำดับแรก เช่นด้านล่างครับ

Code: Select all

dim fp as string
fp = dir(Workbooks(nbook.Sheets("Bom").Range("b1") & ".xl*"))
if fp <> "" then set sbook = workbooks.Open(fp)
Jirawat namrach
Member
Member
Posts: 136
Joined: Mon Dec 12, 2022 5:05 pm
Excel Ver: 2016

Re: VBA เปิดไฟล์ xlsx กับ xls

#3

Post by Jirawat namrach »

ต้องขอโทษอาจารย์ที่อธิบายไม่ครบครับ ลักษณะงานคือจะเปิดไฟล์ก่อน แล้วจะดึงข้อมูลจากไฟล์ที่เปิดอยู่ แต่ติดตรงที่บางไฟล์ที่เปิดเป็นไฟล์เก่า (xls) ทำให้ไม่พบไฟล์เพราะผมกำหนดเป็น xlsx พอจะมีแนวทางสำหรับไฟล์ที่เปิดอยู่แล้วบ้างมั้ยครับ ที่ทำไฟล์ที่เปิดอยู่จะเป็น xls หรือ xlsx ก็สามารถดึงข้อมูลได้
User avatar
snasui
Site Admin
Site Admin
Posts: 30796
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA เปิดไฟล์ xlsx กับ xls

#4

Post by snasui »

:D เมื่อเปิดไฟล์ให้เก็บค่านั้นไว้ในตัวแปรสักตัวแล้วค่อยนำมาใช้ภายหลังครับ

ไม่ทราบว่าเปิดไฟล์นั้นด้วยวิธีไหน มี Code ที่เกี่ยวข้องกับการเปิดไฟล์นั้นหรือไม่ หากไม่มี เช่นเป็นการเปิดด้วย Manual หากต้องการจะทราบชื่อไฟล์นั้นจะต้อง Loop เข้าไปตรวจสอบและเก็บชื่อไฟล์นั้นเอาไว้เพื่อใช้ในภายหลัง

การสอบถามลักษณะนี้จะตอบให้เฉพาะเจาะจงได้ยาก ตอบได้แต่เพียงกว้าง ๆ ซึ่งจำเป็นจะต้องเข้าใจหลักการเขียน Code มาเป็นอย่างดีก่อนจึงจะสามารถนำไปประยุกต์เพื่อหาคำตอบเองได้ครับ
Jirawat namrach
Member
Member
Posts: 136
Joined: Mon Dec 12, 2022 5:05 pm
Excel Ver: 2016

Re: VBA เปิดไฟล์ xlsx กับ xls

#5

Post by Jirawat namrach »

ไฟล์นี้ ผมสามารถใช้งานได้ปกติครับ แต่มีไฟล์ที่เป็นนามสกุล xls เลยอยากหาวิธีเขียน Code ให้ครอบคลุมการใช้งาน โดยไฟล์ที่เปิดไว้ จะต้องเป็นชื่อเดียวกับช่อง K1 ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30796
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA เปิดไฟล์ xlsx กับ xls

#6

Post by snasui »

:D ตัวอย่าง Code อ่านสิ่งที่ผมตอบไว้ด้านบนประกอบด้วย เพราะ Code นี้ทำตามสิ่งที่อธิบายเอาไว้ครับ

Code: Select all

'Other code
If Range("K1").Value = "" Then Exit Sub

For Each wb In Workbooks
   If InStr(ThisWorkbook.Worksheets("listrep").Range("k1").Value, _
        VBA.Split(wb.Name, ".")(0)) Then
        Set up = Workbooks(wb.Name)
        Exit For
    End If
Next wb
If up Is Nothing Then Exit Sub
'Set up = Workbooks(ThisWorkbook.Sheets("listrep").Range("k1") & ".xlsx")
'Other code
Jirawat namrach
Member
Member
Posts: 136
Joined: Mon Dec 12, 2022 5:05 pm
Excel Ver: 2016

Re: VBA เปิดไฟล์ xlsx กับ xls

#7

Post by Jirawat namrach »

ขอบคุณครับอาจารย์
Post Reply