Page 1 of 1
vba เปิดไฟล์ใหม่
Posted: Fri Nov 06, 2015 11:04 pm
by sutham
ผมได้สร้างไฟล์ 2 ไฟล์ไว้ในโฟลเดอร์เดียวกัน คือ
1. PPFIVE2558 2. PPFIVETitle
โดยใช้ชื่อโฟลเดอร์ ว่า PPFIVE'2558 V.III ซึ่งสร้างไว้ในไดร์ D
ซึ่งมีการทำงาน ดังนี้
เปิดไฟล์ที่ชื่อว่า PPFIVETitle แล้วทำการเลือกไดร์ ในเซลล์ B3 แล้วคลิ๊กปุ่ม เปิดไฟล์ เพื่อเปิดไฟล์ที่ชื่อว่า PPFIVE2558 โดย code ที่ผมปรับจากการบันทึกแมโครเป็นดังนี้
Code: Select all
Sub Macro1()
Dim msg As Integer
On Error GoTo lineerror:
ChDir Range("b3").Value & "\PPFIVE'2558 V.III"
Workbooks.Open Filename:=Range("b3").Value & "\PPFIVE'2558 V.III\PPFIVE2558.xlsm"
Exit Sub
lineerror:
msg = MsgBox("ไม่พบเส้นทางฐานข้อมูล")
End Sub
ปัญหาที่พบคือ หากรันแมโครจากในเครื่องที่ผมทำไฟล์นี้เอง แมโครก็รันได้ปกติ แต่เมื่อผม copy โฟลเดอร์นี้ไปไว้เครื่องอื่นแมโครจะทำงานไม่ได้
จึงอยากได้คำชี้แนะว่าสาเหตุเกิดจากเหตุใด และจะต้องปรับ code อย่างไรครับ ขอบคุณครับ

Re: vba เปิดไฟล์ใหม่
Posted: Sat Nov 07, 2015 7:01 am
by snasui

เอาเครื่องหมาย
' ในชื่อ Folder ออกไปก่อนแล้วทดสอบดูใหม่ครับ
Re: vba เปิดไฟล์ใหม่
Posted: Sat Nov 07, 2015 8:51 am
by sutham
ขอบคุณครับ
แสดงว่าในการตั้งชื่อโฟลเดอร์ไม่ควรมีเครื่องหมาย ' ใช่หรือไม่ครับ แล้วถ้าเป็นการเว้นวรรคจะส่งต่อแมโครด้วยหรือไม่ครับ
Re: vba เปิดไฟล์ใหม่
Posted: Sat Nov 07, 2015 8:54 am
by snasui

ชื่อ Folder สามารถวรรคได้ แต่หากไม่ประกอบด้วยเครื่องหมายต่าง ๆ จะทำให้ลดปัญหาการเข้าถึง Folder นั้นด้วยการเขียนโปรแกรมได้ครับ
Re: vba เปิดไฟล์ใหม่
Posted: Sat Nov 14, 2015 10:20 pm
by sutham
รบกวนอีกนิดครับ ตอนนี้ผมยังแก้ปัญหาไม่ได้เลยครับ
คือ พอผม copy ไปทับไฟล์เก่าที่เคยมีในเครื่องอื่น code ที่ผมเขียนเพื่อเปิดไฟล์ใหม่ error ทุกครั้ง ทั้งๆที่เป็นข้อมูลชุดเดียวกัน
ผมเลยตั้งข้อสงสัยว่า ตอนที่ผมเริ่มต้นเขียน code ผมใช้ office 2010 แต่เครื่องที่ผมเอาไปเปิดเป็น office 2007 ประเด็นนี้จะเกี่ยวกันหรือไม่ครับ ขอคำชี้แนะด้วยครับ
Re: vba เปิดไฟล์ใหม่
Posted: Sat Nov 14, 2015 11:14 pm
by sutham
หลังจากที่ผม copy ไฟล์จากเครื่องแม่ (คือ เครื่องที่ผมสร้างไฟล์) ไปวางทับในเครื่องอีกเครื่องหนึ่งครับ
โดย code ที่ผมเขียนเมื่อกดปุ่มตกลง คือ
Code: Select all
Sub go_database()
Dim FilePath As String
FilePath = Range("e7").Value
ActiveWorkbook.Save
Workbooks.Open Filename:=FilePath <--- จะ error ตรงบรรทัดนี้
Exit Sub
End Sub
Re: vba เปิดไฟล์ใหม่
Posted: Sun Nov 15, 2015 10:55 pm
by snasui

ลองแนบไฟล์ที่มีปัญหามาดูกันครับ
ทำเป็นตัวอย่าง ลบข้อความสำคัญทิ้งไปก่อนครับ
Re: vba เปิดไฟล์ใหม่
Posted: Sun Nov 15, 2015 11:16 pm
by sutham
ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป
Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 12:05 am
by sutham
ผมได้ลองจำลองไฟล์ไว้ในโฟลเดอร์ TestPPFIVE ครับ ก่อนอื่นผมต้องอธิบายการทำงานและสิ่งที่ต้องการ ดังนี้ครับ
ในโฟลเดอร์ TestPPFIVE จะมีโฟลเดอร์ย่อย 2 โฟลเดอร์ คือ
1. PPFIVE'2558 V.II มีไฟล์ที่ชื่อ PPFIVE'2558 v.II ผมสร้างเป็นไฟล์หลักครับ
2. PPFIVE2558VIII มีไฟล์ที่ชื่อ PPFIVE2558 เป็นไฟล์ที่ใช้ในการดำเนินการจัดทำข้อมูลทั้งหมด (ทำเป็นไฟล์ database)
ในการทำงานของโปรแกรม เนื่องจากผมเคยสร้างเวอร์ชั่นแรก ฉบับนี้เป็นฉบับปรับปรุง โดยที่ผู้ใช้สับสนในการ copy ฐานข้อมูล ผมเลยปรับแยกฐานข้อมูลออกมาเพื่อรองรับการ copy ไปใช้ในเครื่องอื่นๆ โดยเส้นทางการใช้โปรแกรมจะเป็นดังนี้ครับ
1. เปิดไฟล์ PPPIVE'2558 v.II จากนั้นจะทำการเลือกไดร์ในเซลล์ F9 ที่มีฐานข้อมูล คือ โฟลเดอร์ PPFIVE2558VIII
2. กดปุ่ม ตกลง เพื่อทำการเปิดไฟล์ตามเส้นทางข้อมูลในเซลล์ e7
ประเด็นปัญหา คือ เมื่อผมทำการ copy ไฟล์ทั้งหมดให้กับผู้อื่นไปใช้ในเครื่องอื่น เมื่อ copy ไฟล์ไปทับไฟล์เดิมที่มีอยู่ในเครื่อง code จะ error ตรง Workbooks.Open Filename:=FilePath
Code: Select all
Sub go_database()
Dim FilePath As String
FilePath = Range("e7").Value
ActiveWorkbook.Save
Workbooks.Open Filename:=FilePath <--- บรรทัดที่ error
Exit Sub
End Sub
รบกวนขอคำแนะนำด้วยครับ
ผมต้องโทษครับที่ต้องใช้ลิงค์ครับ
http://gg.gg/3wbag
Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 8:54 pm
by snasui
sutham wrote:ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป

ชื่อไฟล์มีเครื่องหมาย
' ลองเปลี่ยนชื่อไฟล์เป็นแบบอื่น ไม่ควรมีอักขระพิเศษครับ
Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 9:50 pm
by sutham
snasui wrote:sutham wrote:ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป

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

Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 9:58 pm
by snasui

ผมยังไม่ได้ทดสอบและหาสาเหตุ เพียงแต่ต้องการขจัดสิ่งที่น่าจะเป็นปัญหาออกให้หมดก่อน ไม่คำนึงว่าจะเปิดครั้งแรกหรือครั้งที่สองพัน ลองตามที่ผมบอกแล้วรายงานผลว่าได้หรือไม่ได้อย่างไร จะได้ช่วยแก้ไขปัญหาต่อไปครับ
Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 10:04 pm
by sutham
ครับ ได้ผลอย่างไร จะแจ้งให้ทราบครับ ถามต่ออีกนิดครับ ว่าตอนที่เขียน code vba ตัวอักษรพิมพ์เล็ก / ใหญ่ ต้องตรงกันหรือไม่ครับ
Re: vba เปิดไฟล์ใหม่
Posted: Mon Nov 16, 2015 10:09 pm
by snasui

VBA จะเขียนตัวเล็กหรือใหญ่ก็ได้ ไม่จำเป็นต้องตรงตามตัวเล็กใหญ่ครับ
Re: vba เปิดไฟล์ใหม่
Posted: Tue Nov 17, 2015 12:14 am
by sutham
ผมลองแล้วครับ ปรับชื่อโฟลเดอร์และชื่อไฟล์ไม่ให้มีอักขระพิเศษ พอ copy ไปทับไฟล์เดิมที่อยู่ในอีกเครื่อง vba ก็ยัง error ครับ
ไฟล์ใหม่ที่ผมปรับชื่อไฟล์แล้วครับ
ขอโทษครับที่ต้องใช้ลิงค์ครับ
http://gg.gg/3wcux
Re: vba เปิดไฟล์ใหม่
Posted: Tue Nov 17, 2015 8:22 pm
by bank9597
ทดสอบแล้วครับ ใช้งานได้ปกติ
ลองกำหนดชื่อ Wookbook, Worksheet ให้ชัดเจนครับ
เช่น FilePath =Workbooks("").Sheet("").Range("E7").value