Page 1 of 1

code มีปัญหาครับ

Posted: Mon Feb 04, 2019 11:24 am
by yodpao.b

Code: Select all

Sub MacroSaveAs_Filename()
''''''''''''''''''''''''''
    Dim i, jcount As Integer
    i = 6
    jcount = 0
    Do While Sheet1.Cells(i, 1).Value <> ""
        i = i + 1
        jcount = jcount + 1
    Loop
    Sheet1.Cells(2, 4) = jcount
''''''''''''''''''''''''''''''''''''
    'SAVE ชื่อ และ ตั้งชื่อ Folder ตาม Excel
    Dim xlsName, folderName, path, Co_name As String
    path = Application.ActiveWorkbook.path
'    xlsName = Sheets("Sheet1").Range("B6")
    xlsName = Sheet1.Cells(i - 1, 2).Text
'    folderName = Sheets("Sheet1").Range("B6")
    folderName = Sheet1.Cells(i - 1, 2).Text
'    Co_name = Sheets("Sheet1").Range("C6")
    Co_name = Sheet1.Cells(i - 1, 3).Text
    MkDir path & "\" & folderName                                                               'สร้าง Folder ชื่อ folderName ใน path
    
[background=]    Workbooks.Open Filename:=path & "\EX_book.xlsm"[/background]
'    Application.Run "path & " \ " & folderName & " \ " & xlsName & .xlsm!Sheet1.test", pathf = path
'    Application.Run "path & " \ " & folderName & " \ " & xlsName & .xlsm!Sheet1.test", folder = folderName
    ActiveWorkbook.Sheets("Log").Range("A1").Value = Co_name
    ActiveWorkbook.SaveAs Filename:=path & "\" & folderName & "\" & xlsName & ".xlsm", FileFormat:=52
    ActiveWorkbook.Close
    Call Shell("explorer.exe" & " " & path & "\" & folderName, vbNormalFocus)
    
    Workbooks.Open Filename:=path & "\First_Form.xlsm"
    ActiveWorkbook.SaveAs Filename:=path & "\" & folderName & "\" & xlsName & " First Form.xlsm", FileFormat:=52
    MsgBox "Please print this form and bring it to your first time audit"
End Sub
code ด้านล่าง บัคครับ อยู่ในแถบสีครับ

Code: Select all

Workbooks.Open Filename:=path & "\EX_book.xlsm"
ความหมายของ code คือ สั่งให้สร้างไฟล์และfolder โดยให้ตั้งชื่อไฟล์และfolder ตามเซลใน EXcel
คำถาม
เครื่องผม excel 2013 แต่เครื่องอื่น excel 2007
พอเปิดไฟล์ ขึ้นดังภาพด้านล่าง
rtys.PNG
rtys.PNG (23.91 KiB) Viewed 288 times
คลิก ok ไฟล์เปิด พอ Run code ก็ดีบัคตามด้านบนครับ

จำเป็นต้องส่งไฟล์ไหมครับ
มันใช้ 3 ไฟล์ครับ
ถ้าต้องการก็บอกได้ครับ
code ที่เห็นน้องที่ทำงานเขียนครับ

Re: code มีปัญหาครับ

Posted: Mon Feb 04, 2019 11:29 am
by yodpao.b
ขอโทษครับ ลืมบอก excel 2013 ใช้ได้ครับ แต่ 2007 ใช้ไม่ได้ครับ
พอจะแก้ไขให้ 2007 อ่านโคดได้ไหมครับ

Re: code มีปัญหาครับ

Posted: Mon Feb 04, 2019 8:16 pm
by snasui
:o ผมไม่มี 2007 ให้ทดสอบและ Debug ครับ :sg:

Re: code มีปัญหาครับ

Posted: Tue Feb 05, 2019 11:54 pm
by yodpao.b
เรียนอาจารย์ครับ
เริ่มใหม่นะครับ
ผมมีไฟล์ชุดหนึ่ง Run Excel 2010 และ 2013 ได้ครับ

จุดประสงค์คือต้องการ Run ที่ excel 97 , 2003 ,2010,2013

ในตอนนี้จึงทำขึันมาอีก 1 ชุด คือ Run ที่ excel 97 , 2003

ขั้นตอนการทำจากไฟล์ที่ใช้ Excel 2010 เป็น excel 97 , 2003
1.เปิดไฟล์ที่ใช้ Excel 2010
- ไฟล์ CreateNewProject
- ไฟล์ EX_book
- ไฟล์ First_Form
2.Save ทั้ง 3 ไฟล์ให้เป็น excel 97-2003
1.PNG
1.PNG (17.49 KiB) Viewed 268 times
3.แก้ code ในไฟล CreateNewProject ในส่วนของ โมดูลให้เป็น xls
จบขั้นตอน
ปัญหา
ที่นี้ลองนำไฟล์ที่ Save ใหม่ไปเปิดใน excel 2003 เปิดได้ ทำงานได้
ต่อจากนั้นนำไฟล์ชุด excel 2003 ไป Run ที่ excel 2010 ไม่สามารถ Run Code ได้
คำถาม
ช่วยแก้ code ในไฟล์ CreateNewProject ที่ใช้กับ excel 2003 ให้ Run excel 2010 ได้ไหมครับ
ขอบคุณครับ
ผมได้แนบไฟล์ขั้นตอนการทำงานและผลที่ได้มาให้ครับ
การทำงานของไฟล์
2.PNG
2.PNG (43.63 KiB) Viewed 268 times
3.PNG
3.PNG (73.69 KiB) Viewed 268 times

Re: code มีปัญหาครับ

Posted: Tue Feb 05, 2019 11:55 pm
by yodpao.b
ผมได้แนบไฟล์ขั้นตอนการทำงานและผลที่ได้มาให้ครับ

Re: code มีปัญหาครับ

Posted: Tue Feb 05, 2019 11:56 pm
by yodpao.b
ผมได้แนบไฟล์ชุดที่ใช้ใน excel 2003 ครับ

Re: code มีปัญหาครับ

Posted: Tue Feb 05, 2019 11:57 pm
by yodpao.b
ผมได้แนบไฟล์ชุดที่ใช้ใน excel 2010 ครับ

Re: code มีปัญหาครับ

Posted: Tue Feb 05, 2019 11:58 pm
by yodpao.b
ช่วยดูให้ด้วยครับ
ขอบคุณครับ

Re: code มีปัญหาครับ

Posted: Wed Feb 06, 2019 12:04 am
by yodpao.b
แนะนำเพิ่มเติม
อาจารย์เปิดไฟล์ใน ชุด excel 2010 จะทำงานได้ตามปกติครับ
แต่นำไฟล์ ใน ชุด excel 2003 จะ eeror ครับ

Re: code มีปัญหาครับ

Posted: Thu Feb 07, 2019 7:34 am
by snasui
:D จาก FileFormat:=52

จำเป็นต้องเปลี่ยน FileFormat ให้ตรงกับรุ่น Excel ที่ใช้ครับ

ดูเลขรุ่นได้ที่ https://www.rondebruin.nl/win/s5/win001.htm

Re: code มีปัญหาครับ

Posted: Fri Feb 08, 2019 1:39 pm
by yodpao.b
ขอโทษครับ ไฟล์ Exbook ที่ส่งอาจารย์ ด้านในไม่มี code อะไรเลย
พอผมนำไฟล์ทั้ง 3 ไป run ที่ทำงาน ทำงานได้เป็นปกติ ไฟล์Exbook เรียกได้

จึงสรุปได้ว่าไฟล์ Exbook ของเดิมที่มี code ไฟล์เสีย

แก้ไขโดยการ move ทั้ง ชีท และ form ไปที่ไฟล์ใหม่ ทำการ Saveไฟล์ใหม่

ขอบคุณครับ

Re: code มีปัญหาครับ

Posted: Wed Feb 20, 2019 3:14 pm
by yodpao.b
ขอเริ่มต้นใหม่นะครับ

ผมมีไฟล์หนึ่งชื่อ EX_book โดยมีอีกหนึ่งไฟล์ชื่อ CreateNewProject เป็นตัว สั่ง เปิด, Saveเปลี่ยนชื่อ และ ปิด

ไฟล์ทั้ง 2 อยู่ใน เซฟเวอร์
ปัญหา
เมื่อคนที่หนึ่งเข้าไปแก้ไข EX_book โดยใช้ไฟล์ชื่อ CreateNewProject เป็นตัว สั่ง เปิด โดยใช้ excel เวอร์ชั้น 2013 แล้ว Save ทุกอย่างทำงานได้ตามปกติ

แต่พออีกคนหนึ่งนำไฟล์ EX_book มาทำต่อ โดยใช้ไฟล์ชื่อ CreateNewProject เป็นตัว สั่ง เปิด เกิดปัญหา โดยใช้ excel เวอร์ชั้น 2007
เกิดปัญหาบัค

Code: Select all

Workbooks.Open Filename:=path & "\EX_book.xlsm"
ที่โคดนี้ครับ

ขั้นตอนการเกิดบัคดังนี้
1.เปิดไฟล์ CreateNewProject แล้วคลิก ใช่
1.JPG
1.JPG (17.38 KiB) Viewed 240 times
2.ทำตามหมายเลข 1
2.JPG
2.JPG (26.31 KiB) Viewed 240 times
3.ทำตามหมายเลข 5 6 7 ตามรูป
3.JPG
3.JPG (25.64 KiB) Viewed 240 times
และจะเห็น บัค ที่เกิดขึ้นครับ

ข้อสงสัยเมื่อ Save ไฟล์ชื่อ EX_book โดยใช้ excel เวอร์ชั้น 2007
แล้วจึงทำตามขั้นตอนการเกิดบัค(ด้านบน)
จะพบว่าสามารถทำงานได้ตามปกติ
ปัญหาคือคนบางคนอาจใช้เครื่อง excel เวอร์ชั้น 2017 ใช้งาน SAVE
พอ กลับมาใช้ excel เวอร์ชั้น 2007 โดยใช้ไฟล์ชื่อ CreateNewProject เป็นตัวสั่งให้ทำงาน
ผลจะกลับมา บัคเมื่อเดิมครับ

สรุปจะเกิด บัค เมื่อ แก้ไขไฟล EX_book ใน excel เวอร์ชั้น 2017 แล้ว SAVE
แล้วนำไฟล EX_book มาเปิดโดยใช้ฟล์ชื่อ CreateNewProject เป็นตัวสั่งให้ทำงานใน excel เวอร์ชั้น 2007 ครับ

ไฟล์ที่ใช้งาน 3 ไฟล์ครับ

Re: code มีปัญหาครับ

Posted: Wed Feb 20, 2019 3:15 pm
by yodpao.b
ไฟล์แนบ
สั่งมาพร้อมกันไม่ได้ครับ
ไฟล์ที่ใช้งาน 3 ไฟล์ครับ

Re: code มีปัญหาครับ

Posted: Wed Feb 20, 2019 6:07 pm
by snasui
:D เบื้องต้น แก้ไขตัวแปรที่ตั้งชื่อว่า path ในทุกตำแหน่งให้เป็นชื่ออื่นอย่าให้ไปซ้ำกับ Property ของโปรแกรม

สังเกตเมื่อ Assign ค่าให้กับตัวแปร path ด้วย path = Application.ActiveWorkbook.path ทำให้ .path ที่เป็น Property ของ ActiveWorkbook กลายเป็นอักษรตัวเล็กไปด้วย ที่ถูกจะต้องเป็น .Path ครับ

ผมไม่มี Excel 2007 ให้ทดสอบ หากยังติดปัญหาคงต้องผู้ที่มี Excel 2007 ช่วย Debug ให้ครับ :mrgreen:

Re: code มีปัญหาครับ

Posted: Thu Feb 21, 2019 10:06 am
by yodpao.b
เรียนอาจารย์ครับ แก้ code ตามที่บอก แต่ .Path พิมพ์เป็นตัวใหญ่แล้วครับ
แต่มันเด้งเป็นตัวเล็กเองครับ .path

แก้ไขตัวแปรที่ตั้งชื่อว่า path เป็น folderco แล้วครับ ดังนี้

Code: Select all

Public Sub MacroSaveAs_Filename()
''''''''''''''''''''''''''
    Dim i, jcount As Integer
    i = 6
    jcount = 0
    Do While Sheet1.Cells(i, 1).Value <> ""
        i = i + 1
        jcount = jcount + 1
    Loop
    Sheet1.Cells(2, 4) = jcount
''''''''''''''''''''''''''''''''''''
    'SAVE ª×èÍ áÅÐ µÑ駪×èÍ Folder µÒÁ Excel
    Dim xlsName, folderName, folderco, Co_name, in_charge As String
    folderco = Application.ActiveWorkbook.path
'    xlsName = Sheets("Sheet1").Range("B6")
    xlsName = Sheet1.Cells(i - 1, 2).Text
'    folderName = Sheets("Sheet1").Range("B6")
    folderName = Sheet1.Cells(i - 1, 2).Text
'    Co_name = Sheets("Sheet1").Range("C6")
    Co_name = Sheet1.Cells(i - 1, 3).Text
    in_charge = Sheet1.Cells(i - 1, 4).Text
    MkDir folderco & "\" & folderName                                                               'ÊÃéÒ§ Folder ª×èÍ folderName ã¹ folderco
    
    Workbooks.Open Filename:=folderco & "\EX_book.xlsm"
    
'    Application.Run "path & " \ " & folderName & " \ " & xlsName & .xlsm!Sheet1.test", pathf = path
'    Application.Run "path & " \ " & folderName & " \ " & xlsName & .xlsm!Sheet1.test", folder = folderName
    ActiveWorkbook.Sheets("Log").Range("A1").Value = Co_name
    ActiveWorkbook.Sheets("Log").Range("N19").Value = in_charge
    ActiveWorkbook.SaveAs Filename:=folderco & "\" & folderName & "\" & xlsName & ".xlsm", FileFormat:=52
    ActiveWorkbook.Close
    Call Shell("explorer.exe" & " " & folderco & "\" & folderName, vbNormalFocus)
    
    Workbooks.Open Filename:=folderco & "\First_Form.xlsm"
    ActiveWorkbook.SaveAs Filename:=folderco & "\" & folderName & "\" & xlsName & " First Form.xlsm", FileFormat:=52
    MsgBox "Please print this form and bring it to your first time audit"
End Sub
ถูกต้องไหมครับ ติดปัญหา .path มันไม่เป็นตัวใหญ่ครับ

Re: code มีปัญหาครับ

Posted: Thu Feb 21, 2019 9:15 pm
by snasui
:D เมื่อยังไม่เป็นตัวใหญ่ผมถือว่ายังเป็นปัญหาอยู่ครับ

Re: code มีปัญหาครับ

Posted: Thu Feb 21, 2019 11:51 pm
by yodpao.b
โพสต์ นี้ ยอมแพ้ครับ
และอาจารย์ก็ไม่มี excel 2007
ผมมีวิธีแก้ไขในใจอยู่ 2 แบบแล้วครับ
แบบที่ 1
คือ SAVE ไฟล EX_book ให้นามสกุลให้เป็น excel 2003 (.xls)
แก้ code
Workbooks.Open Filename:=path & "\EX_book.xlsm"
เป็น
Workbooks.Open Filename:=path & "\EX_book.xls"
แต่แบบนี้น้องที่ทำงานบอกว่าไม่ชอบเพราะว่า คุณสมบัติบางประการจะใช้ไม่ได้
ควรลีกเลี่ยง

แบบที่ 2 ไม่ให้ Save ทับชื่อ EX_book.xlsm
โดยรายละเอียดอยู่ใน โพสต์ "Excel : ไม่ต้องการให้ Save ทำอย่างไร"
https://www.snasui.com/viewtopic.php?f=3&t=14891