EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ช่วยชี้ให้เห็นว่า ชีท1, ชีท2, ชีท3 คือชีทไหน และข้อมูลอื่นที่เีกี่ยวข้อง ฯลฯ...
ชีท 1(หน้าหลัก) มีปุ่มคำสั่งบันทึก และเซลล์ D5 สำหรับใส่ชื่อไฟล์ที่บันทึกใหม่
ชีท 2 มีข้อมูล 4 หน้า
ชีท 3 มีข้อมูล 4 หน้า
ความต้องการคือ
เมื่อกดปุ่มคำสั่งบันทึกในหน้าหลัก ให้excel บันทึกไฟล์ใหม่ตามชื่อที่ตั้งใหม่ ในโฟล์เดอร์เดิม
โดยให้บันทึกข้อมูลเฉพาะ ชีท 2และ 3 หน้าที่ 2-4
สาเหตุเพราะว่าต้องการบันทึกข้อมูลหลายครั้ง โดยใช้แบบฟอร์มเดิมและต้องการเก็บข้อมูลแต่ละครั้ง
หน้าที่1 ในชีท 2,3 ไม่บันทึกเพราะเอาไว้กรอกข้อมูลดิบแล้วส่งข้อมูลไปใส่แบบฟอร์มหน้า 2 - 4
ขอบคุณล่วงหน้าครับ
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
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