Page 1 of 1
ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 10:05 am
by spuangchang
เรียน ท่านอาจารย์ที่เคารพ
อยากจะเรียนสอบถามเกี่ยวกับการเขียนคำสั่ง vba โดยให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์ ดังนี้ครับ
1.ต้องการ save fileในโฟลเดอร์ student ไว้ที่หน้าจอของคอมพิวเตอร์เครื่องอื่นๆได้ทุกเครื่อง ในโฟลเดอร์ student บันทึกไฟล์ น้ำหนัก ส่วนสูง หลายหนในครั้งเดียวกันเนื่องจากต้องเปลี่ยนข้อมูลแต่ละชั้น เช่น ให้บันทึกไฟล์ครั้งแรกเป็น sheet 01 กดบันทึกใหม่ให้บันทึกเป็น sheet 02 ,sheet 03 .....เพื่อไม่ให้บันทึกซ้ำไฟล์เดิม โดยให้ตั้งชื่อไฟล์อัตโนมัติ
2. ต้องการให้แสดงหน้าตัวอย่างก่อนพิมพ์ แบบเลือกหน้าได้ เช่น แสดงตัวอย่างก่อนพิมพ์หน้า 1 ตามไฟล์แนบครับ
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 11:46 am
by snasui

ตัวอย่าง Code การ Save เป็นชื่อไฟล์ให้ Run No ต่อจากไฟล์เดิมที่มีการ Run Number 2 หลักไว้ในตอนท้ายของชื่อไฟล์ตามด้านล่างครับ
Code: Select all
Sub Macro1()
Dim MyFolder As String
Dim MyFile As String
Dim j As Integer
Dim a() As Variant
Dim i As Integer
MyFolder = "C:\USERS\SCHOOL\Desktop"
MyFile = Dir(MyFolder & "\" & "*.xls")
Do While MyFile <> ""
If Mid(MyFile, InStr(MyFile, ".xls") - 2, 2) Like "##" Then
j = j + 1
ReDim a(j)
a(j) = Val(Mid(MyFile, InStr(MyFile, ".xls") - 2, 2))
Debug.Print a(j)
End If
MyFile = Dir
Loop
i = Application.Max(a)
Range("A1:L1").Select
Sheets("Sheet 01").Select
Sheets("Sheet 01").Copy
ActiveWorkbook.SaveAs Filename:="C:\USERS\SCHOOL\Desktop\Sheet " & Format(i, "00") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub
สำหรับ Print Preview นั้นลองบันทึก Macro มาดู ติดตรงไหนนำมาถามกันได้ครับ
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 1:32 pm
by spuangchang
ขอบพระคุณท่านอาจารย์มากครับที่กรุณาเขียนโค้ตไปให้ ได้ทดลองใช้แล้ว ปรากฏว่าบันทึกไฟล์ได้ตามที่ต้องการ เหลือแต่เวลาบันทึกแต่ละไฟล์ยังไม่มีโฟลเดอร์มารองรับเพื่อให้แต่ละไฟล์บันทึกอยู่ในโฟลเดอร์ครับ ส่วน printpreview ได้ลองบันทึกดูแล้วแต่ยังเลือกหน้าที่กำหนดให้แสดงยังไม่ได้ คงจะต้องรบกวนท่านอาจารย์อีกครั้งครับ ขอบพระคุณมากครับ
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 1:54 pm
by snasui
spuangchang wrote: เหลือแต่เวลาบันทึกแต่ละไฟล์ยังไม่มีโฟลเดอร์มารองรับเพื่อให้แต่ละไฟล์บันทึกอยู่ในโฟลเดอร์ครับ
สร้าง Folder ที่จะเก็บไฟล์ไว้ก่อนครับ แล้วปรับ Code ด้านล่างคือ
Code: Select all
MyFolder = "C:\USERS\SCHOOL\Desktop"
โดยระบุ Folder เข้าไปด้วย เช่น Folder ชื่อ MyStudent ก็จะได้เป็น
Code: Select all
MyFolder = "C:\USERS\SCHOOL\Desktop\MyStudent"
ส่วนการ Print Preview เฉพาะหน้าที่ต้องการให้กำหนด Print Area พื้นที่จะ Print ก่อนแล้วค่อย Print Preview ครับ
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 3:01 pm
by spuangchang
ท่านอาจารย์ครับ สร้างโฟลเดอร์รองรับที่หน้าจอ ปรับโค้ตแล้ว แต่ debug "i = Application.Max(a)" จะต้องปรับแก้อย่างไรครับ ขอบพระคุณครับ
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 3:27 pm
by snasui

ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Sub Macro1()
Dim MyFolder As String
Dim MyFile As String
Dim j As Integer
Dim a() As Variant
Dim i As Integer
MyFolder = "C:\USERS\SCHOOL\Desktop\MyStudent"
MyFile = Dir(MyFolder & "\" & "*.xls")
Do While MyFile <> ""
If Mid(MyFile, InStr(MyFile, ".xls") - 2, 2) Like "##" Then
j = j + 1
ReDim a(j)
a(j) = Val(Mid(MyFile, InStr(MyFile, ".xls") - 2, 2))
Debug.Print a(j)
End If
MyFile = Dir
Loop
If j = 0 Then
ReDim a(0)
a(0) = 0
End If
i = Application.Max(a)
Range("A1:L1").Select
Sheets("Sheet 01").Select
Sheets("Sheet 01").Copy
ActiveWorkbook.SaveAs Filename:="C:\USERS\SCHOOL\Desktop\MyStudent\Sheet " & Format(i + 1, "00") & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End Sub
Re: ใช้คำสั่งมาโครให้บันทึกแฟ้มและแสดงหน้าตัวอย่างก่อนพิมพ์
Posted: Sun May 06, 2012 3:34 pm
by spuangchang
ขอบพระคุณท่านอาจารย์มากครับ ใช้ได้ตามความต้องการครับ