snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#41
Post
by nisit2559 » Fri Nov 03, 2017 7:56 am
snasui wrote: ไม่เข้าใจครับ ชื่อไฟล์เก่าคือไฟล์ใด ช่วยอธิบายลงรายละเอียดของปัญหามาด้วยจะได้เข้าถึงปัญหาโดยเร็วครับ
คือว่าผมใช้โค้ดที่ปรับแล้วดังที่ส่งไปนะครับโดยต้องการให้มันเซฟชื่อไฟล์เป็นวันเดือนปีของวันที่ทำการเซฟโดยดึงเอาค่ามาจาก cell A2 Sheet1ครับแล้วมันเซฟมาเป็นชื่ออื่นซึ่งผมได้ทำการส่งชื่อไฟล์ที่มันเซฟมาให้แล้วผมอยากจะทราบวิธีการเปลี่ยนโค้ดให้มันเซฟไฟล์เป็นวันที่ให้ตามที่ต้องการได้ครับขอบคุณครับ
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#42
Post
by nisit2559 » Fri Nov 03, 2017 7:57 am
nisit2559 wrote: snasui wrote: ไม่เข้าใจครับ ชื่อไฟล์เก่าคือไฟล์ใด ช่วยอธิบายลงรายละเอียดของปัญหามาด้วยจะได้เข้าถึงปัญหาโดยเร็วครับ
คือว่าผมใช้โค้ดที่ปรับแล้วดังที่ส่งไปนะครับโดยต้องการให้มันเซฟชื่อไฟล์เป็นวันเดือนปีของวันที่ทำการเซฟโดยดึงเอาค่ามาจาก cell A2 Sheet1ครับแล้วมันเซฟมาเป็นชื่ออื่นซึ่งผมได้ทำการส่งชื่อไฟล์ที่มันเซฟมาให้แล้วผมอยากจะทราบวิธีการเปลี่ยนโค้ดให้มันเซฟไฟล์เป็นวันที่ให้ตามที่ต้องการได้ครับขอบคุณครับ
ส่วนชื่อไฟล์เก่าคือ boox1 ครับ
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#43
Post
by snasui » Fri Nov 03, 2017 6:56 pm
สรุปว่าต้องการจะ Save File ตามชื่อในเซลล์ที่กำหนด พร้อมกับวัน เดือน ปี แต่เมื่อมีการ Save จริงไม่เป็นไปตามที่กำหนด เช่นนี้ถูกต้องหรือไม่ครับ
หากเป็นเช่นนั้นจะต้องแก้ไข Code ที่ทำการ Save File ช่วยแนบไฟล์นั้นมาใหม่ จะได้ช่วยทดสอบให้ครับ
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#44
Post
by nisit2559 » Sat Nov 04, 2017 1:44 am
ใช่ครับนี้ครับไฟล์ใหม่
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#45
Post
by snasui » Sat Nov 04, 2017 7:47 am
จาก Code ด้านล่าง
Code: Select all
Sub saveflie()
'Workbooks("boox1.xlsx").SaveAs Filename:="D:\MMCT\data\" & Application.Text(Worksheets("Sheet1").Range("A2").Value, "ddmmyy") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
ในส่วนของ
Worksheets("Sheet1").Range("A2").Value
เป็นการนำค่าเซลล์ A2 ของ Sheet1 ของไฟล์โปรแกรมมาบันทึกเป็นชื่อไฟล์ใหม่ แต่ในเซลล์ดังกล่าวไม่มีค่าใด ๆ ไม่ทราบว่าที่ถูกต้องแล้วต้องการจะอ้างอิงจากเซลล์ใดของชีตใดของไฟล์ใดครับ
ช่วยแจ้งว่าในขั้นตอนการเปิดไฟล์ที่ Save ไว้ อ้างชื่อไฟล์ที่จะเปิดไว้อย่างไร ใช้ Procedure ใดในการเปิดไฟล์ครับ ลองลำดับวิธีการทำงานนี้ที่เป็นปัญหามาเป็นข้อ ๆ จะได้ทดสอบตามลำดับนั้น ตัดมาเฉพาะ Code ที่เกี่ยวข้องกับปัญหานี้ก็พอจะได้เข้าถึงปัญหาและข้อมูลได้โดยไวครับ
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#46
Post
by nisit2559 » Wed Nov 08, 2017 7:41 am
ถ้าใช้เซลล์ G46 ของชีต Calculation ครับจะใช้ได้ไหมครับและพอเซฟแล้วจากที่ตอนแรกเปิดไฟล์ boox1.xlsxก็ถูกเปลี่ยนเป็นชื่อไฟล์ที่ถูกเซฟเลยครับส่วนโค้ดที่เกี่ยนข้องก็จะเป็น
Code: Select all
If data_sheet1 = "" Then
Other Procedure.....If data_sheet2 = "" Then
Call copyfile1.... Other Procedure
Else
Call saveflie
End If
saveflie ก็ตามโค้ดเก่าเลยครับยังไม่ได้เปลี่ยนแปลงครับขอบคุณครับ
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#47
Post
by snasui » Wed Nov 08, 2017 6:34 pm
ไฟล์ที่แนบมาล่าสุดไม่พบว่ามีชีต Calculation ครับ
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#48
Post
by nisit2559 » Fri Nov 10, 2017 8:36 am
snasui wrote: ไฟล์ที่แนบมาล่าสุดไม่พบว่ามีชีต Calculation ครับ
มันไม่สามารแนบมาได้ครับไฟล์มันใหญ่เกินไปครับแต่ผมลองเปลี่ยนค่าในเซลล์ให้ A2 Sheet1 แล้วครับตามไฟล์ที่แนบมาเลยครับ
You do not have the required permissions to view the files attached to this post.
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#49
Post
by nisit2559 » Fri Nov 10, 2017 9:00 am
ผมลองดูแล้วครับถ้ากดรันโดยตรงมนจะได้ครับแต่ถ้าใช้การเปิดโดน job มันจะไม่ได้ครับไม่ทราบว่าเกี่ยวกับการที่ใช้การเปิดโปรแกรมเป็นตัวเรียกโค้ดมาหรือเปล่าครับ
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#50
Post
by snasui » Sat Nov 11, 2017 4:18 pm
nisit2559 wrote: snasui wrote: ไฟล์ที่แนบมาล่าสุดไม่พบว่ามีชีต Calculation ครับ
มันไม่สามารแนบมาได้ครับไฟล์มันใหญ่เกินไปครับแต่ผมลองเปลี่ยนค่าในเซลล์ให้ A2 Sheet1 แล้วครับตามไฟล์ที่แนบมาเลยครับ
ไม่จำเป็นต้องแนบไฟล์จริงมา แนบตัวอย่างมาก็พอ ตัดมาเฉพาะที่เกี่ยวข้อง อธิบายขั้นตอนการทำงาน ผมจะได้ทดสอบตามนั้นครับ
nisit2559 wrote: ผมลองดูแล้วครับถ้ากดรันโดยตรงมนจะได้ครับแต่ถ้าใช้การเปิดโดน job มันจะไม่ได้ครับไม่ทราบว่าเกี่ยวกับการที่ใช้การเปิดโปรแกรมเป็นตัวเรียกโค้ดมาหรือเปล่าครับ
ในการเปิดจาก Job เราจะให้ Code ทำงานเมื่อเปิดไฟล์เลยทันที การเปิดด้วย Job กับเปิดด้วย Manual ไม่ควรจะมีความแตกต่างกันครับ
กลับมาที่ปัญหาของการ Save ชื่อไฟล์ ยังมีปัญหาอยู่หรือไม่ อย่างไร แนบทุกไฟล์พร้อม Code ล่าสุดที่เป็นปัจจุบันมาพร้อมกันทีเดียว เฉพาะที่เกี่ยวข้องกับปัญหานั้น ช่วยลำดับหลักการทำงานและผลลัพธ์ที่ถูกต้อง ผมจะได้ช่วยทดสอบให้ได้ครับ
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#51
Post
by nisit2559 » Mon Nov 13, 2017 7:47 am
ใช่ครับคือต้อนผมกดรันในตัวหน้าที่เขียนโค้ดครับแล้วมันเซฟเป็นชื่อวันที่ได้แต่พอผมให้มันรันตอนเปิด Job แล้วพอเซฟมันจะเป็นชื่ออื่นครับ โดยหลักการทำงานคือผมจะให้มันดูค่าที่เซลล์ B1441 ก่อนว่ามีค่าไหมถ้าไม่มีให้ไปเงื่อนไขอื่นแต่ถ้ามีให้ทำการเซฟไฟล์ครับแล้วนี้เป็นโค้ดล่าสุดครับผมทำงานแค่ในไมโคร1อย่างเดียวครับตอนนี้
Code: Select all
Dim data_sheet1 As Variant
data_sheet1 = Workbooks("boox1.xlsx").Worksheets("sheet1").Range("b1441").Value....
Other code .... If data_sheet1 = "" Then.....Other code..... Else
Workbooks("boox1.xlsx").SaveAs Filename:="D:\MMCT\data\" & Application.Text(Worksheets("Sheet1").Range("A2").Value, "ddmmyy") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If....Other code
ครับ ส่วนไฟล์ Boox1ใช้อันนี้เลยครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#52
Post
by snasui » Mon Nov 13, 2017 7:49 pm
ตัวอย่างการปรับ Code ให้อ้างถึง Workbook เป้าหมายตอน Save ครับ
Code: Select all
'Other code
Else
Workbooks("boox1.xlsx").SaveAs Filename:="D:\MMCT\data\" & _
Application.Text(Workbooks("boox1.xlsx").Worksheets("Sheet1").Range("A2").Value, "ddmmyy") & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
'Other code
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#53
Post
by nisit2559 » Tue Nov 14, 2017 8:17 am
snasui wrote: ตัวอย่างการปรับ Code ให้อ้างถึง Workbook เป้าหมายตอน Save ครับ
Code: Select all
'Other code
Else
Workbooks("boox1.xlsx").SaveAs Filename:="D:\MMCT\data\" & _
Application.Text(Workbooks("boox1.xlsx").Worksheets("Sheet1").Range("A2").Value, "ddmmyy") & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
'Other code
ขอบคุณครับแล้วถ้าผมต้องการจะปิดไฟล์ที่เซฟมาใหม่ผมต้องอ้างworkbooksตัวใหม่อย่างไรครับถ้าชื่อมันเปลี่ยนไปเรื่อยๆหรือต้องกำหนดตัวแปรครับ
logic
Gold
Posts: 1506 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#54
Post
by logic » Tue Nov 14, 2017 9:38 am
nisit2559 wrote: ถ้าชื่อมันเปลี่ยนไปเรื่อยๆหรือต้องกำหนดตัวแปรครับ
ปกติผมใช้แบบนี้เลยครับ กำหนดตัวแปรให้กับไฟล์ใหม่
nisit2559
Member
Posts: 42 Joined: Mon Sep 04, 2017 1:45 pm
#55
Post
by nisit2559 » Wed Nov 15, 2017 3:36 pm
logic wrote: nisit2559 wrote: ถ้าชื่อมันเปลี่ยนไปเรื่อยๆหรือต้องกำหนดตัวแปรครับ
ปกติผมใช้แบบนี้เลยครับ กำหนดตัวแปรให้กับไฟล์ใหม่
ขอบคุณครับทำได้เรียบร้อยละครับ