: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 ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

สอบถามการค้นหาไฟล์ vba ครับ

#1

Post by lnongkungl »

คือผมต้องการค้นหาไฟล์ที่อยู่ในโฟลเดอร์ รับเข้า ครับ แต่ถ้าไม่เจอก็สร้างไฟล์ใหม่ตามชื่อที่กำหนดครับ
แต่พอลองรันดู มันไม่เกิดอะไรขึ้นเลย รบกวนอาจารย์เช็คโค๊ดให้ทีครับว่าต้องแก้ไขตรงไหน มันไม่ error หรือ อะไรเลย ผมเลย งง

Code: Select all

Public Sub find()
Dim fname As String
fname = Format(Now(), "yyyy")
Dim fpath As String
fpath = ActiveWorkbook.Path & "\รับเข้า"
If fname = "" Then
Workbook.Add Filename:=fpath & "\" & fname
End If
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#2

Post by snasui »

:D แนบไฟล์ตัวอย่างที่เขียน Code นี้ไว้แล้วมาด้วยจะได้สะดวกในการทดสอบและแนะนำครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: สอบถามการค้นหาไฟล์ vba ครับ

#3

Post by lnongkungl »

ไฟล์ครับ ผมเอารวมไปไว้ในปุ่ม save เลยครับ แต่ code save ผมยังไม่ได้เช็ค error เอาแค่ code ตรวจสอบไฟล์ก่อนครับ
Attachments
savefileเดิม.xlsm
(19.28 KiB) Downloaded 33 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#4

Post by snasui »

:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Dim fname As String
Dim fpath As String

fname = Format(Now(), "yyyy")
fpath = Dir(ActiveWorkbook.Path & "\ÃѺà¢éÒ\" & fname & ".xlsx")
Application.DisplayAlerts = False
If fpath = "" Then
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & _
        "\" & fname & ".xlsx", FileFormat:=xlOpenXMLWorkbook
End If
Application.DisplayAlerts = True
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: สอบถามการค้นหาไฟล์ vba ครับ

#5

Post by lnongkungl »

ขอบคุณครับ อาจารย์ ผมอาจจะอธิบายไม่ค่อยเข้าใจ มันเลยยังไม่ตรงกับ concept เท่าไรครับ เด๋วผมลองเอาไปปรับดูก่อนครับ ติดตรงไหนแล้วเดี๋ยวมาถามอีกทีครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#6

Post by snasui »

lnongkungl wrote:ขอบคุณครับ อาจารย์ ผมอาจจะอธิบายไม่ค่อยเข้าใจ มันเลยยังไม่ตรงกับ concept เท่าไรครับ เด๋วผมลองเอาไปปรับดูก่อนครับ ติดตรงไหนแล้วเดี๋ยวมาถามอีกทีครับ
:D คำว่า "เด๋ว" ผิดกฎการใช้บอร์ด ขอให้งดใช้ภาษาแชทเนื่องจากมีผู้เข้ามาศึกษาจากหลายประเทศ การแปลหน้าเว็บอาจจะทำให้ความหมายผิดไปจากที่ควรจะเป็นครับ
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: สอบถามการค้นหาไฟล์ vba ครับ

#7

Post by lnongkungl »

ขออภัยครับ รีบพิมพ์ไปหน่อย
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#8

Post by OOjaoQQ »

อาจารย์ช่วยดู code ที่ผมเขียนหน่อยครับ มันติดดีบักครั้งแรก แล้วค่อยทำงานได้ครับ
กรอก พ.ศ. ในช่อง B2 ครับ ถ้าเจอไฟล์ จะเปิดไฟล์ ถ้าไม่เจอ จะเปิด Filebase แล้ว save as ตามชื่อ ที่ค้นหาครับ
มันเหมือนไม่สมบูรณ์ครับ ถ้าอาจารย์เห็นว่าตรงไหน ควรเพิ่ม หรือ แก้ กรุณาแนะนำด้วยนะครับ ขอบคุณครับ

Private Sub cmbSearch_Click()
Dim FilePath As String ' ¡Ó˹´ µÑÇá»Ã ª×èÍ Path ·Õèà¡çºä¿Åì
Dim fileName As Variant ' ¡Ó˹´ µÑÇá»Ã ª×èÍä¿Åì
Dim fileNameBase As Variant ' ¡Ó˹´ µÑÇá»Ã ª×èÍä¿Åìµé¹©ºÑº
Dim fileNameSearch As Variant ' ¡Ó˹´ µÑÇá»Ã ª×èÍä¿Åì·Õè¤é¹ËÒ
Dim strmsgbox As String ' ¡Ó˹´ µÑÇá»Ã msgbox
fileNameSearch = Sheet1.Range("B2").Value ' ´Ö§ª×èÍä¿Åì·Õè¤é¹ËÒÁÒà¡çºã¹µÑÇá»Ã
FilePath = "D:\Data" ' ·Õèà¡çºä¿Åì
fileName = Dir(FilePath & "\*.xlsm") ' ä¿Åìáá
fileNameBase = Dir(FilePath & "\*.xlsm") ' ä¿Åìµé¹©ºÑº ª×èÍ
' ==== µÃǨÊͺÇèÒÁÕä¿ÃìËÃ×ÍäÁè
Do Until fileName = "" ' µÃǨÊͺä¿Å·ÕÅÐä¿Åì
If fileName = Trim(fileNameSearch & ".xlsm") Then ' ¶éÒà¨Íä¿Åì·Õè¤é¹ËÒ
Workbooks.Open (fileNameSearch & ".xlsm")






Exit Sub ' ¨º¡Ò÷ӧҹ
fileName = Dir() ' àÅ×è͹ä¿Åì¶Ñ´ä»
End If
fileName = Dir() ' àÅ×è͹ä¿Åì¶Ñ´ä»
Loop
' ==== ¶éÒäÁèãËéÊÃéÒ§ä¿ÃìãËÁè
'Workbooks.Open (fileNameBase) 'à»Ô´ - ä¿Åìµé¹©ºÑº
Dim MyFile As Variant
MyFile = Dir(FilePath & "\Filebase.xlsm")
Workbooks.Open (MyFile)
'Workbooks.Open (fileNameBase)
Dim fileSaveName As Variant
ActiveWorkbook.SaveAs fileName:=fileNameSearch ' Save ä¿Åìµé¹©ºÑº µÒÁª×èÍ ·Õè¤é¹ËÒ
ActiveWorkbook.Close '»Ô´ä¿Åì
strmsgbox = msgbox(fileNameSearch & " ¶Ù¡ÊÃéÒ§àÃÕºÃéÍÂáÅéÇ...¤ÃѺ!!", , "á¨é§àµ×͹")
End Sub
Attachments
Filebase.xlsm
(11.18 KiB) Downloaded 21 times
Test seach.xlsm
(21.56 KiB) Downloaded 22 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#9

Post by snasui »

:D กรุณาโพสต์ Code ให้แสดงเป็น Code ดูตัวอย่างในกฎการใช้บอร์ดข้อ 5 ด้านบน จะได้สะดวกในการอ่านและคัดลอกไปทดสอบครับ

หากมีภาษาไทยใน Code ให้สลับคีย์บอร์ดเป็นภาษาไทยก่อนแล้วค่อยคัดลอกมาวางในช่องความเห็น

กรณีเป็นคำถามที่ไม่เกี่ยวข้องกับกระทู้เดิมให้ตั้งกระทู้ขึ้นมาใหม่ครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#10

Post by OOjaoQQ »

ขอโทษครับ อาจารย์ช่วยดู code ที่ผมเขียนหน่อยครับ มันติดดีบักครั้งแรก แล้วค่อยทำงานได้ครับ
กรอก พ.ศ. ในช่อง B2 ครับ ถ้าเจอไฟล์ จะเปิดไฟล์ ถ้าไม่เจอ จะเปิด Filebase แล้ว save as ตามชื่อ ที่ค้นหาครับ
มันเหมือนไม่สมบูรณ์ครับ ถ้าอาจารย์เห็นว่าตรงไหน ควรเพิ่ม หรือ แก้ กรุณาแนะนำด้วยนะครับ ขอบคุณครับ





Private Sub cmbSearch_Click()
Dim FilePath As String
Dim fileName As Variant
Dim fileNameBase As Variant
Dim fileNameSearch As Variant
Dim strmsgbox As String
fileNameSearch = Sheet1.Range("B2").Value
FilePath = "D:\Data"
fileName = Dir(FilePath & "\*.xlsm")
fileNameBase = Dir(FilePath & "\*.xlsm")
Do Until fileName = ""
If fileName = Trim(fileNameSearch & ".xlsm") Then
Workbooks.Open (fileNameSearch & ".xlsm")


Exit Sub
fileName = Dir()
End If
fileName = Dir()
Loop

Dim MyFile As Variant
MyFile = Dir(FilePath & "\Filebase.xlsm")
Workbooks.Open (MyFile)

Dim fileSaveName As Variant
ActiveWorkbook.SaveAs fileName:=fileNameSearch
ActiveWorkbook.Close
strmsgbox = msgbox(fileNameSearch & " ถูกสร้างเรียบร้อยแล้ว...ครับ!!", , "แจ้งเตือน")
End Sub
Attachments
Test seach.xlsm
(19.14 KiB) Downloaded 19 times
Filebase.xlsm
(10.92 KiB) Downloaded 20 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#11

Post by snasui »

:D โพสต์ Code ให้เแสดงเป็น Code ด้วย ทบทวนสิ่งที่ผมแจ้งไปตามโพสต์ #9 อีกครั้งครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#12

Post by OOjaoQQ »

อีกครั้งครับ ขอโทษครับ อาจารย์ช่วยดู code ที่ผมเขียนหน่อยครับ มันติดดีบักครั้งแรก แล้วค่อยทำงานได้ครับ
กรอก พ.ศ. ในช่อง B2 ครับ ถ้าเจอไฟล์ จะเปิดไฟล์ ถ้าไม่เจอ จะเปิด Filebase แล้ว save as ตามชื่อ ที่ค้นหาครับ
มันเหมือนไม่สมบูรณ์ครับ ถ้าอาจารย์เห็นว่าตรงไหน ควรเพิ่ม หรือ แก้ กรุณาแนะนำด้วยนะครับ ขอบคุณครับ


Code: Select all

Private Sub cmbSearch_Click()
Dim FilePath As String
Dim fileName As Variant
Dim fileNameBase As Variant
Dim fileNameSearch As Variant
Dim strmsgbox As String
fileNameSearch = Sheet1.Range("B2").Value
FilePath = "D:\Data"
fileName = Dir(FilePath & "\*.xlsm")
fileNameBase = Dir(FilePath & "\*.xlsm")
Do Until fileName = ""
If fileName = Trim(fileNameSearch & ".xlsm") Then
Workbooks.Open (fileNameSearch & ".xlsm")


Exit Sub
fileName = Dir()
End If
fileName = Dir()
Loop

Dim MyFile As Variant
MyFile = Dir(FilePath & "\Filebase.xlsm")
Workbooks.Open (MyFile)

Dim fileSaveName As Variant
ActiveWorkbook.SaveAs fileName:=fileNameSearch
ActiveWorkbook.Close
strmsgbox = msgbox(fileNameSearch & " ถูกสร้างเรียบร้อยแล้ว...ครับ!!", , "แจ้งเตือน")

Attachments
Test seach.xlsm
(19.14 KiB) Downloaded 32 times
Filebase.xlsm
(10.92 KiB) Downloaded 27 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#13

Post by snasui »

:D ปรับ Code การเปิดไฟล์ใหม่เป็นด้านล่างครับ

Workbooks.Open (FilePath & "\" & MyFile)
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#14

Post by OOjaoQQ »

อาจารย์ครับ พอแก้ Code ตามที่อาจารย์ แนะนำ Code ที่ search file ไม่ทำงานครับ
1.jpg
1.jpg (32.05 KiB) Viewed 400 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#15

Post by snasui »

:D ถ้าทำงานมันจะให้ผลเป็นอย่างไรครับ

ภาพการฟ้องที่แนบมาหมายถึงไฟล์นั้นมีอยู่แล้ว หากต้องการ Save ทับไฟล์เดิมให้คลิก Yes ครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#16

Post by OOjaoQQ »

ถ้าเจอไฟล์ ให้เปิดไฟล์ ถ้าไม่เจอ ให้เปิด file base แล้ว save ตามชื่อที่ค้นหาครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#17

Post by snasui »

:D Code นั้นมันก็ทำเช่นอธิบายมาครับ

มันไม่เจอ Filebase.xlsm มันจึงไม่เปิด และมันจะ Save ไฟล์ปัจจุบันเป็นตามชื่อที่กำหนดในเซลล์ B2 แต่พบว่ามีไฟล์ชื่อนั้นอยู่แล้วจึงฟ้องขึ้นมา ลองทบทวนสิ่งที่ผมอธิบายไปว่าตรงตามนั้นหรือไม่

สิ่งสำคัญอย่างหนึ่งสำหรับการใช้ Code คือการตรวจสอบการทำงานของ Code ที่ละบรรทัดได้ด้วยการ Debug วิธีการคือ คลิกลงไปใน Code นั้นแล้วกดแป้น F8 ซ้ำ ๆ ลองตรวจสอบดูว่าผิดพลาดในบรรทัดไหน ขั้นตอนไหน ช่วยแจ้งบรรทัดนั้น ขั้นตอนนั้นมาครับ
OOjaoQQ
Member
Member
Posts: 36
Joined: Sun Mar 11, 2018 11:44 am

Re: สอบถามการค้นหาไฟล์ vba ครับ

#18

Post by OOjaoQQ »

บรรทัดนี้ครับ ที่ผมเขียนแล้วมันไม่ทำงาน ถ้าเจอไฟล์ต้องเปิดไฟล์ อาจารย์กรุณาแนะนำด้วยครับ ต้องปรับ code อย่างไร
2.jpg
2.jpg (46.64 KiB) Viewed 391 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามการค้นหาไฟล์ vba ครับ

#19

Post by snasui »

:D Code บรรทัดนั้นหมายถึง หากมีไฟล์ในเซลล์ B2 ให้เปิดขึ้นมา หากไม่เปิดขึ้นมาแสดงว่าไม่มีชื่อไฟล์ในเซลล์ B2 ใน Path ที่กำหนดใน Code ครับ

ให้ตรวจสอบว่ามีไฟล์ชื่อเดียวกับค่าในเซลล์ B2 ใน Path ที่ให้ไว้ใน Code หรือไม่ หากมีจะต้องเปิดขึ้นมา ในเครื่องผมสามารถทำงานได้ปกติครับ
Post Reply