: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

vba เปิดไฟล์ใหม่

#1

Post 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 อย่างไรครับ ขอบคุณครับ :P
Attachments
PPFIVE'2558 V.III.rar
(25.4 KiB) Downloaded 25 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 เปิดไฟล์ใหม่

#2

Post by snasui »

:D เอาเครื่องหมาย ' ในชื่อ Folder ออกไปก่อนแล้วทดสอบดูใหม่ครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#3

Post by sutham »

ขอบคุณครับ :thup:
แสดงว่าในการตั้งชื่อโฟลเดอร์ไม่ควรมีเครื่องหมาย ' ใช่หรือไม่ครับ แล้วถ้าเป็นการเว้นวรรคจะส่งต่อแมโครด้วยหรือไม่ครับ
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 ชื่อ Folder สามารถวรรคได้ แต่หากไม่ประกอบด้วยเครื่องหมายต่าง ๆ จะทำให้ลดปัญหาการเข้าถึง Folder นั้นด้วยการเขียนโปรแกรมได้ครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#5

Post by sutham »

รบกวนอีกนิดครับ ตอนนี้ผมยังแก้ปัญหาไม่ได้เลยครับ
คือ พอผม copy ไปทับไฟล์เก่าที่เคยมีในเครื่องอื่น code ที่ผมเขียนเพื่อเปิดไฟล์ใหม่ error ทุกครั้ง ทั้งๆที่เป็นข้อมูลชุดเดียวกัน
ผมเลยตั้งข้อสงสัยว่า ตอนที่ผมเริ่มต้นเขียน code ผมใช้ office 2010 แต่เครื่องที่ผมเอาไปเปิดเป็น office 2007 ประเด็นนี้จะเกี่ยวกันหรือไม่ครับ ขอคำชี้แนะด้วยครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#6

Post 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
Attachments
error1.png
error1.png (119.21 KiB) Viewed 411 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 เปิดไฟล์ใหม่

#7

Post by snasui »

:D ลองแนบไฟล์ที่มีปัญหามาดูกันครับ

ทำเป็นตัวอย่าง ลบข้อความสำคัญทิ้งไปก่อนครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#8

Post by sutham »

ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป
Attachments
error2.png
error2.png (9.56 KiB) Viewed 398 times
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#9

Post 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
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 เปิดไฟล์ใหม่

#10

Post by snasui »

sutham wrote:ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป
:D ชื่อไฟล์มีเครื่องหมาย ' ลองเปลี่ยนชื่อไฟล์เป็นแบบอื่น ไม่ควรมีอักขระพิเศษครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#11

Post by sutham »

snasui wrote:
sutham wrote:ผมลองทดสอบไฟล์เนื่องเป็นการ copy ไฟล์ที่ใช้ชื่อเดียวกัน แล้ววางทับไฟล์เดิมที่มีอยู่ ซึ่งสาเหตุที่ทำให้ vba หาไฟล์ไม่เจอน่าจะเป็นเพราะการวางทับไฟล์เดิมหรือไม่ครับ เนื่องจากพอลองเปิดไฟล์ที่วางทับลงไป excel จะมีการแจ้งเตือน ดังรูป
:D ชื่อไฟล์มีเครื่องหมาย ' ลองเปลี่ยนชื่อไฟล์เป็นแบบอื่น ไม่ควรมีอักขระพิเศษครับ
ถึงแม้ว่าไฟล์นั้นเป็นไฟล์ที่เปิดครั้งแรกเหรอครับ แต่ไฟล์ที่ต้องการเปิดไม่มีอักขระพิเศษ เหตุใดจึงเปิดไฟล์นั้นไม่ได้ละครับ (ยังสงสัยครับ) :)
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 เปิดไฟล์ใหม่

#12

Post by snasui »

:D ผมยังไม่ได้ทดสอบและหาสาเหตุ เพียงแต่ต้องการขจัดสิ่งที่น่าจะเป็นปัญหาออกให้หมดก่อน ไม่คำนึงว่าจะเปิดครั้งแรกหรือครั้งที่สองพัน ลองตามที่ผมบอกแล้วรายงานผลว่าได้หรือไม่ได้อย่างไร จะได้ช่วยแก้ไขปัญหาต่อไปครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#13

Post by sutham »

ครับ ได้ผลอย่างไร จะแจ้งให้ทราบครับ ถามต่ออีกนิดครับ ว่าตอนที่เขียน code vba ตัวอักษรพิมพ์เล็ก / ใหญ่ ต้องตรงกันหรือไม่ครับ
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 เปิดไฟล์ใหม่

#14

Post by snasui »

:D VBA จะเขียนตัวเล็กหรือใหญ่ก็ได้ ไม่จำเป็นต้องตรงตามตัวเล็กใหญ่ครับ
sutham
Member
Member
Posts: 118
Joined: Thu Nov 17, 2011 1:54 pm

Re: vba เปิดไฟล์ใหม่

#15

Post by sutham »

ผมลองแล้วครับ ปรับชื่อโฟลเดอร์และชื่อไฟล์ไม่ให้มีอักขระพิเศษ พอ copy ไปทับไฟล์เดิมที่อยู่ในอีกเครื่อง vba ก็ยัง error ครับ
ไฟล์ใหม่ที่ผมปรับชื่อไฟล์แล้วครับ
ขอโทษครับที่ต้องใช้ลิงค์ครับ :)
http://gg.gg/3wcux
Attachments
error4.png
error4.png (112.16 KiB) Viewed 380 times
error5.png
error5.png (19.46 KiB) Viewed 380 times
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: vba เปิดไฟล์ใหม่

#16

Post by bank9597 »

:)

ทดสอบแล้วครับ ใช้งานได้ปกติ

ลองกำหนดชื่อ Wookbook, Worksheet ให้ชัดเจนครับ

เช่น FilePath =Workbooks("").Sheet("").Range("E7").value
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
Post Reply