Page 1 of 1

vba สร้างไฟล์ไม่ให้ซ้ำ ภายใต้รูปแบบชื่อไฟล์ "650601-aaa-bbb.xlsm"

Posted: Sat Jun 18, 2022 6:43 am
by 10idlnw
ผมมีไฟล์ 2 ไฟล์ ไฟล์แรก(สร้างใบรับรถ.xlsm) ใช้สร้างไฟล์ใหม่ ที่ Copy โครงสร้างมาจากไฟล์ที่มีอยู่แล้ว(00000000-insname-carid.xlsm) โดยมีเงื่อนไขว่า ขื่อไฟล์จะต้องประกอบด้วยข้อมูล 3 ส่วน โดยใช้ - คั่นไว้ เพื่อให้ไฟล์ใหม่ใช้ในการอ้างอิงไปใช้ในไฟล์ใหม่นั้น จึงจำเป็นต้องตั้งชื่อไฟล์ในรูปแบบนี้

และทำให้มีคำถามตามว่า ต้องใช้คำสั่ง vba ใด เพื่อตรวจสอบชื่อไฟล์ทั้งหมดในโฟล์เดอร์ที่เก็บไฟล์เหล่านี้(ในตัวอย่างคือโฟลเดอร์ TestEx) โดยเงื่อนไขสำคัญจะอยู่ตรง ชื่อไฟล์ส่วนแรก(ที่เป็นชุดตัวเลข) ว่าจะต้องไม่ซ้ำกัน หากซ้ำจะไม่สามารถสร้างไฟล์ใหม่ได้ โดยไม่ให้ความสำคัญในชื่อไฟล์ส่วนที่ 2 และ 3 ว่าจะซ้ำกันหรือไม่(สำคัญคือชื่อไฟล์ส่วนแรกที่เป็นชุดตัวเลขเท่านั้นต้องไม่ซ้ำ) และต้องการให้ลำดับในช่อง D3 เพิ่มขึ้นทีละ +1 โดยอ้างอิงจากไฟล์ที่ถูกสร้างไปก่อนหน้า ผมจะต้องปรับสูตรในไฟล์ สร้างใบรับรถ.xlsm อย่างไรให้เหมาะสมครับ (ส่วนไฟล์ 00000000-insname-carid.xlsm ไม่เกี่ยวข้อง ผมอัปขึ้นเพื่อใช้ copy ประกอบตัวอย่างเท่านั้นนะครับ)

ผมแนบไฟล์ตัวอย่างทั้งชุดให้อาจารย์และเพื่อนๆในบอร์ดช่วยตรวจสอบให้ใต้กระทู้นี้ครับ ขอบคุณครับ
2022-06-18_6-07-34.jpg

Re: vba สร้างไฟล์ไม่ให้ซ้ำ ภายใต้รูปแบบชื่อไฟล์ "650601-aaa-bbb.xlsm"

Posted: Sat Jun 18, 2022 8:05 am
by snasui
:D วิธีการตรวจสอบว่ามีชื่อไฟล์อยู่แล้วหรือไม่ใช้ Statement นี้ได้ครับ

if dir("c:\TestEx\00000000*") <> "" then msgbox "This file already exists"

โดย c:\TestEx\ คือ Folder และ 00000000* คือชื่อไฟล์ใด ๆ ก็ตามที่ขึ้นต้นด้วย 00000000

Re: vba สร้างไฟล์ไม่ให้ซ้ำ ภายใต้รูปแบบชื่อไฟล์ "650601-aaa-bbb.xlsm"

Posted: Sat Jun 18, 2022 10:43 pm
by 10idlnw
ขอบคุณครับ ทดสอบดูแล้วใช้ได้ครับอาจารย์

Re: vba สร้างไฟล์ไม่ให้ซ้ำ ภายใต้รูปแบบชื่อไฟล์ "650601-aaa-bbb.xlsm"

Posted: Sun Jun 19, 2022 12:13 am
by 10idlnw
ลองไปลองมาได้แล้วครับ