Page 1 of 1

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

Posted: Fri Nov 26, 2010 10:58 am
by cannoi
ผมเป็นสมาชิกใหม่เข้ามาศึกษาที่นี่ได้หลายวันแล้วครับอยากรบกวนอาจารย์ให้ช่วยดังนี้
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ

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

Posted: Fri Nov 26, 2010 1:37 pm
by snasui
:D ส่งตัวอย่างไฟล์มาด้วยครับ

ทำตัวอย่างให้เห็นด้วยครับว่า สั่งให้บันทึกแล้วแต่ละไฟล์จะมีหน้าตาข้อมูลเป็นอย่างไร :mrgreen:

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

Posted: Mon Nov 29, 2010 12:18 pm
by cannoi
ผมแนบไฟล์มาแล้วครับ
เป็นไฟล์ที่กำลังศึกษาวิธีทำอยู่

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

Posted: Mon Nov 29, 2010 1:24 pm
by snasui
:D ผมเปิดไฟล์ดูแล้วไม่พบคำอธิบายปัญหาและสิ่งที่ต้องการครับ

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

ค่อย ๆ ถามไปทีละลำดับก็ได้ครับ แล้วค่อยปะติดปะต่อกันไปเรื่อย ๆ :mrgreen:

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

Posted: Mon Nov 29, 2010 3:00 pm
by cannoi
ขออภัยครับอัฟ หลายครั้งแล้วหลุดทุกที่

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

Posted: Mon Nov 29, 2010 8:57 pm
by snasui
:D มีคำถามเพิ่มครับ
1. ไฟล์เก็บอยู่ใน Drive ไหนครับ
2. ต้องการระบุชีทที่จะบันทึกก่อนหรือไม่ครับ หากไม่ระบุจะบันทึกชื่อไฟล์ได้อย่างไร เพราะเท่าที่อ่านระบุชื่อไฟล์ไว้แค่เซลล์ D5 เซลล์เดียว และมีการบันทึกหลายไฟล์
3. กรณีมีชื่ออยู่แล้วจะให้มีการบันทึกอย่างไรครับ

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

Posted: Tue Nov 30, 2010 11:10 am
by cannoi
1. ไฟล์เก็บที่ไดร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554\.. (โปรแกรมหลัก และไฟล์ที่สั่งบันทึกใหม่)
2.การบันทึกชื่อไฟล์ ให้ตั้งชื้อตาม D5 ไม่ซ้ำชื่อเดิม เพราะการกรอกข้อมูลในแต่ละครั้ง D5 เปลี่ยนไปอยู่แล้ว
เช่นครั้งที่ 1 จัดซื้ออาหารกลางวัน ชื่อใน D5 "จัดซื้ออาหารกลางวัน (ชื่อที่บันทึกไฟล์ใหม่)
ครั้งที่ 2. จัดซื้อวัสดุสำนักงาน ชื่อใน D5 "จัดซื้อวัสดุสำนักงาน"(ชื่อที่บันทึกไฟล์ใหม่)
(D5 ผมใช้ลิงค์หัวข้อมา)
3. การบันทึก จะบันทึกเป็นครั้ง ๆ ไป ในโฟล์เดอร์ D:\การจัดซื้อจัดจ้างปีงบประมาณ2554 จะมีไฟล์การจัดซื้อ
ทั้งปี

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

Posted: Tue Nov 30, 2010 2:53 pm
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

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

Posted: Wed Dec 01, 2010 11:55 am
by cannoi
ขอบคุณมากครับ
จะดำเนินการต่อ ถ้าเกิดปัญหาจะรบกวนอีกนะครับ

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

Posted: Fri Jul 06, 2012 5:42 pm
by cannoi
เข้ามารบกวนอีกแล้วครับท่าน..
โค๊ดที่ให้มา(บันทึกไฟล์ใหม่)ผมนำไปใช้(หลายโปรแกรมแล้ว)ดีครับ ตอนนี้มีปัญหาใหม่ครับ
คือ ถ้าต้องการจะบันทึกในลักษณะเดิม แต่ไม่ใช่เป็นไฟล์ใหม่ ให้เป็นชีทใหม่ในไฟล์เดิม ตั้งชื่อ
ตาม ชีท "หน้าหลัก" "D5" (เหมือนเดิม)จะได้ไหมครับ
ผมลองบันทึกมาโครที่ละขั้น มาติดที่การจะเปลี่ยนชื่อชีท ไม่รู้จะทำอย่างไร
วิธีการของผม(ดำน้ำ)
-บันทึกมาโคร-ตั้งชื่อ-เลือกชีท-คัดลอก-เปิดชีทใหม่-เลือก A1-วาง-กลับหน้าหลัก-หยุดบันทึก
ทำได้แค่นี้ ทดสอบได้แต่ไม่สามารถเปลี่ยนชื่อชีท ตาม D5 ได้ ครับ ช่วนแนะนำหน่อยครับ

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

Posted: Fri Jul 06, 2012 7:31 pm
by snasui
:D แนบไฟล์และแนบ Code นั้นมาด้วยจะได้ช่วยดูได้ครับ

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

Posted: Fri Jul 06, 2012 7:40 pm
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

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

Posted: Mon Jul 09, 2012 11:15 am
by cannoi
ขอบคุณครับท่านอาจารย์และท่านjooที่แนะนำ
กำลังเตรียมแนบไฟล์ยู่ครับ