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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#1
Post
by cannoi » Fri Nov 26, 2010 10:58 am
ผมเป็นสมาชิกใหม่เข้ามาศึกษาที่นี่ได้หลายวันแล้วครับอยากรบกวนอาจารย์ให้ช่วยดังนี้
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ
snasui
Site Admin
Posts: 31167 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Fri Nov 26, 2010 1:37 pm
ส่งตัวอย่างไฟล์มาด้วยครับ
ทำตัวอย่างให้เห็นด้วยครับว่า สั่งให้บันทึกแล้วแต่ละไฟล์จะมีหน้าตาข้อมูลเป็นอย่างไร
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#3
Post
by cannoi » Mon Nov 29, 2010 12:18 pm
ผมแนบไฟล์มาแล้วครับ
เป็นไฟล์ที่กำลังศึกษาวิธีทำอยู่
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31167 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Mon Nov 29, 2010 1:24 pm
ผมเปิดไฟล์ดูแล้วไม่พบคำอธิบายปัญหาและสิ่งที่ต้องการครับ
ช่วยอธิบายเพิ่มเติมด้วยครับว่าต้องการทำอะไร อย่างไร จากที่เคยอธิบายไว้ตามที่ผมยกมาด้านล่าง
...
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ
ช่วยชี้ให้เห็นว่า ชีท1, ชีท2, ชีท3 คือชีทไหน และข้อมูลอื่นที่เีกี่ยวข้อง ฯลฯ
ค่อย ๆ ถามไปทีละลำดับก็ได้ครับ แล้วค่อยปะติดปะต่อกันไปเรื่อย ๆ
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#5
Post
by cannoi » Mon Nov 29, 2010 3:00 pm
ขออภัยครับอัฟ หลายครั้งแล้วหลุดทุกที่
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31167 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Mon Nov 29, 2010 8:57 pm
มีคำถามเพิ่มครับ
1. ไฟล์เก็บอยู่ใน Drive ไหนครับ
2. ต้องการระบุชีทที่จะบันทึกก่อนหรือไม่ครับ หากไม่ระบุจะบันทึกชื่อไฟล์ได้อย่างไร เพราะเท่าที่อ่านระบุชื่อไฟล์ไว้แค่เซลล์ D5 เซลล์เดียว และมีการบันทึกหลายไฟล์
3. กรณีมีชื่ออยู่แล้วจะให้มีการบันทึกอย่างไรครับ
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#7
Post
by cannoi » Tue Nov 30, 2010 11:10 am
1. ไฟล์เก็บที่ไดร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554\.. (โปรแกรมหลัก และไฟล์ที่สั่งบันทึกใหม่)
2.การบันทึกชื่อไฟล์ ให้ตั้งชื้อตาม D5 ไม่ซ้ำชื่อเดิม เพราะการกรอกข้อมูลในแต่ละครั้ง D5 เปลี่ยนไปอยู่แล้ว
เช่นครั้งที่ 1 จัดซื้ออาหารกลางวัน ชื่อใน D5 "จัดซื้ออาหารกลางวัน (ชื่อที่บันทึกไฟล์ใหม่)
ครั้งที่ 2. จัดซื้อวัสดุสำนักงาน ชื่อใน D5 "จัดซื้อวัสดุสำนักงาน"(ชื่อที่บันทึกไฟล์ใหม่)
(D5 ผมใช้ลิงค์หัวข้อมา)
3. การบันทึก จะบันทึกเป็นครั้ง ๆ ไป ในโฟล์เดอร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554 จะมีไฟล์การจัดซื้อ
ทั้งปี
snasui
Site Admin
Posts: 31167 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Tue Nov 30, 2010 2:53 pm
ผมเขียน Code มาให้เป็นตัวอย่าง ลองประยุกต์ใช้กับงานจริงดูครับ
Code: Select all
Option Explicit
Sub SaveFileOnCellVal()
Dim FileSaveName As String
FileSaveName = Worksheets("หน้าหลัก").Range("D5") 'กำหนดชื่อไฟลไว้ที่เซลล์ D5 ของหน้าหลัก
Worksheets("คำสั่ง").Cells.Copy 'ตัวอย่างนี้เป็นการ Copy ชีท คำสั่ง
Workbooks.Add 'เปิด Workbook ขึ้นมาใหม่
Range("A1").Select
Selection.PasteSpecial xlPasteValues
Application.CutCopyMode = False
ChDir "D:\การจัดซื้อจัดจ้างปีงบประมาณ2554" 'เปลี่ยน Folder ให้ชี้ไปที่ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554
If FileSaveName <> "" Then
ActiveWorkbook.SaveAs Filename:=FileSaveName, FileFormat:=xlNormal ' Save File ตามชื่อที่ให้ไว้ลงใน Folder ด้านบน
MsgBox "Already save file " & FileSaveName
End If
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#9
Post
by cannoi » Wed Dec 01, 2010 11:55 am
ขอบคุณมากครับ
จะดำเนินการต่อ ถ้าเกิดปัญหาจะรบกวนอีกนะครับ
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#10
Post
by cannoi » Fri Jul 06, 2012 5:42 pm
เข้ามารบกวนอีกแล้วครับท่าน..
โค๊ดที่ให้มา(บันทึกไฟล์ใหม่)ผมนำไปใช้(หลายโปรแกรมแล้ว)ดีครับ ตอนนี้มีปัญหาใหม่ครับ
คือ ถ้าต้องการจะบันทึกในลักษณะเดิม แต่ไม่ใช่เป็นไฟล์ใหม่ ให้เป็นชีทใหม่ในไฟล์เดิม ตั้งชื่อ
ตาม ชีท "หน้าหลัก" "D5" (เหมือนเดิม)จะได้ไหมครับ
ผมลองบันทึกมาโครที่ละขั้น มาติดที่การจะเปลี่ยนชื่อชีท ไม่รู้จะทำอย่างไร
วิธีการของผม(ดำน้ำ)
-บันทึกมาโคร-ตั้งชื่อ-เลือกชีท-คัดลอก-เปิดชีทใหม่-เลือก A1-วาง-กลับหน้าหลัก-หยุดบันทึก
ทำได้แค่นี้ ทดสอบได้แต่ไม่สามารถเปลี่ยนชื่อชีท ตาม D5 ได้ ครับ ช่วนแนะนำหน่อยครับ
snasui
Site Admin
Posts: 31167 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Fri Jul 06, 2012 7:31 pm
แนบไฟล์และแนบ Code นั้นมาด้วยจะได้ช่วยดูได้ครับ
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#12
Post
by joo » Fri Jul 06, 2012 7:40 pm
ลองนำโค๊ดนี้ไปประยุกต์ปรับใช้ดูครับ ต้องระวังเรื่องจำนวนตัวอักษรที่จะตั้งซื่อซีทด้วยนะครับ
Code: Select all
Sub CopyNewSheet()
Dim strNameSheet As String
Dim i As Integer
'strNameSheet = InputBox("Please enter sheet name.", "Name Sheet For Save") 'กำหนดชื่อซีทเองตามต้องการ
'If strNameSheet = "" Then
'Exit Sub
'End If
strNameSheet = Worksheets("หน้าหลัก").Range("D5")
If strNameSheet = "" Then
Exit Sub
End If
For i = 1 To Worksheets.Count
If UCase(Worksheets(i).Name) = UCase(strNameSheet) Then
MsgBox "มีรายชื่อซ้ำ.....กรุณาตรวจสอบใหม่"
Exit Sub
End If
Next
strNameSheet = Worksheets("หน้าหลัก").Range("D5") 'กำหนดชื่อซีทไว้ที่เซลล์ D5 ของหน้าหลัก
Worksheets("รายงาน").Copy After:=Worksheets(Worksheets.Count) 'กำหนดซีทที่ต้องการ COPY
ActiveSheet.Name = strNameSheet
ActiveSheet.Cells.Copy
ActiveSheet.Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
cannoi
Member
Posts: 34 Joined: Thu Nov 04, 2010 4:18 pm
#13
Post
by cannoi » Mon Jul 09, 2012 11:15 am
ขอบคุณครับท่านอาจารย์และท่านjooที่แนะนำ
กำลังเตรียมแนบไฟล์ยู่ครับ