: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

รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
cannoi
Member
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#1

Post by cannoi »

ผมเป็นสมาชิกใหม่เข้ามาศึกษาที่นี่ได้หลายวันแล้วครับอยากรบกวนอาจารย์ให้ช่วยดังนี้
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#2

Post by snasui »

:D ส่งตัวอย่างไฟล์มาด้วยครับ

ทำตัวอย่างให้เห็นด้วยครับว่า สั่งให้บันทึกแล้วแต่ละไฟล์จะมีหน้าตาข้อมูลเป็นอย่างไร :mrgreen:
cannoi
Member
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#3

Post by cannoi »

ผมแนบไฟล์มาแล้วครับ
เป็นไฟล์ที่กำลังศึกษาวิธีทำอยู่
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#4

Post by snasui »

:D ผมเปิดไฟล์ดูแล้วไม่พบคำอธิบายปัญหาและสิ่งที่ต้องการครับ

ช่วยอธิบายเพิ่มเติมด้วยครับว่าต้องการทำอะไร อย่างไร จากที่เคยอธิบายไว้ตามที่ผมยกมาด้านล่าง
...
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ
ช่วยชี้ให้เห็นว่า ชีท1, ชีท2, ชีท3 คือชีทไหน และข้อมูลอื่นที่เีกี่ยวข้อง ฯลฯ

ค่อย ๆ ถามไปทีละลำดับก็ได้ครับ แล้วค่อยปะติดปะต่อกันไปเรื่อย ๆ :mrgreen:
cannoi
Member
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#5

Post by cannoi »

ขออภัยครับอัฟ หลายครั้งแล้วหลุดทุกที่
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#6

Post by snasui »

:D มีคำถามเพิ่มครับ
1. ไฟล์เก็บอยู่ใน Drive ไหนครับ
2. ต้องการระบุชีทที่จะบันทึกก่อนหรือไม่ครับ หากไม่ระบุจะบันทึกชื่อไฟล์ได้อย่างไร เพราะเท่าที่อ่านระบุชื่อไฟล์ไว้แค่เซลล์ D5 เซลล์เดียว และมีการบันทึกหลายไฟล์
3. กรณีมีชื่ออยู่แล้วจะให้มีการบันทึกอย่างไรครับ
cannoi
Member
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#7

Post by cannoi »

1. ไฟล์เก็บที่ไดร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554\.. (โปรแกรมหลัก และไฟล์ที่สั่งบันทึกใหม่)
2.การบันทึกชื่อไฟล์ ให้ตั้งชื้อตาม D5 ไม่ซ้ำชื่อเดิม เพราะการกรอกข้อมูลในแต่ละครั้ง D5 เปลี่ยนไปอยู่แล้ว
เช่นครั้งที่ 1 จัดซื้ออาหารกลางวัน ชื่อใน D5 "จัดซื้ออาหารกลางวัน (ชื่อที่บันทึกไฟล์ใหม่)
ครั้งที่ 2. จัดซื้อวัสดุสำนักงาน ชื่อใน D5 "จัดซื้อวัสดุสำนักงาน"(ชื่อที่บันทึกไฟล์ใหม่)
(D5 ผมใช้ลิงค์หัวข้อมา)
3. การบันทึก จะบันทึกเป็นครั้ง ๆ ไป ในโฟล์เดอร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554 จะมีไฟล์การจัดซื้อ
ทั้งปี
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#8

Post by snasui »

:D ผมเขียน 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
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#9

Post by cannoi »

ขอบคุณมากครับ
จะดำเนินการต่อ ถ้าเกิดปัญหาจะรบกวนอีกนะครับ
cannoi
Member
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#10

Post by cannoi »

เข้ามารบกวนอีกแล้วครับท่าน..
โค๊ดที่ให้มา(บันทึกไฟล์ใหม่)ผมนำไปใช้(หลายโปรแกรมแล้ว)ดีครับ ตอนนี้มีปัญหาใหม่ครับ
คือ ถ้าต้องการจะบันทึกในลักษณะเดิม แต่ไม่ใช่เป็นไฟล์ใหม่ ให้เป็นชีทใหม่ในไฟล์เดิม ตั้งชื่อ
ตาม ชีท "หน้าหลัก" "D5" (เหมือนเดิม)จะได้ไหมครับ
ผมลองบันทึกมาโครที่ละขั้น มาติดที่การจะเปลี่ยนชื่อชีท ไม่รู้จะทำอย่างไร
วิธีการของผม(ดำน้ำ)
-บันทึกมาโคร-ตั้งชื่อ-เลือกชีท-คัดลอก-เปิดชีทใหม่-เลือก A1-วาง-กลับหน้าหลัก-หยุดบันทึก
ทำได้แค่นี้ ทดสอบได้แต่ไม่สามารถเปลี่ยนชื่อชีท ตาม D5 ได้ ครับ ช่วนแนะนำหน่อยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#11

Post by snasui »

:D แนบไฟล์และแนบ Code นั้นมาด้วยจะได้ช่วยดูได้ครับ
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#12

Post by joo »

:D ลองนำโค๊ดนี้ไปประยุกต์ปรับใช้ดูครับ ต้องระวังเรื่องจำนวนตัวอักษรที่จะตั้งซื่อซีทด้วยนะครับ

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
Member
Posts: 34
Joined: Thu Nov 04, 2010 4:18 pm

Re: รบกวนแนะนำ โค๊ต VB สั่งบันทึกไฟล์ใหม่ หน่อยครับ

#13

Post by cannoi »

ขอบคุณครับท่านอาจารย์และท่านjooที่แนะนำ
กำลังเตรียมแนบไฟล์ยู่ครับ
Post Reply