Page 1 of 1
สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Mon Feb 26, 2018 10:19 am
by jullathep
สวัสดีครับ อาจารย์ทุกๆท่านผมมีข้อสงสัยอยากจะทราบแนวทางการเขียน Code ผมต้องการให้การออกรายงานของข้อมูลเป็นไปตามที่เรา ติ๊กถูก ที่ Checkbox ในหน้า INPUT ในหน้า Report จะมี Label ซึ่งจะเปลี่ยนไปตาม การ ติ๊กของเรา ผมอยากให้ออกรายงาน ตามที่เราติ๊กถูก
ณ เวลานี้ ผมหา Code มาได้ คือ มันเซฟ หน้า INPUT ไปด้วย ผมอยากจะให้ ไป Copy เฉพาะหน้า Report ที่มากกว่าหนึ่งการติ๊กถูกที่ Checkbox กรณีตัวอย่าง ถ้าเกิด Sell ติ๊กที่ Ckeckbox 5 อัน กดตกลง ก็ให้ Copy Sheet Report และไป Save ไว้ โดย Label จะเปลี่ยนการแสดงผล ตามที่ติ๊ก นั้นๆ ขอแนวทางและคำชี้แนะจากอาจารย์ทุกๆท่านด้วยครับ
Code: Select all
Sub SaveAsName()
Dim FName As String
Dim FPath As String
FPath = "D:\Report"
FName = Sheets("INPUT").TextBox1.Text
ThisWorkbook.Saveas Filename:=FPath & "\" & FName + ".xls"
End Sub
Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Mon Feb 26, 2018 2:17 pm
by logic
อ่านแล้วไม่ค่อยเข้าใจครับ
เซฟชื่อไฟล์ตามชื่อ label หรือเปล่าครับ ติ๊กถูก 5 ไว้ 5 label ก็เซฟเป็น 5 ชื่ออะไรทำนองนี้หรือเปล่าครับ

Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Mon Feb 26, 2018 5:02 pm
by jullathep
logic wrote: Mon Feb 26, 2018 2:17 pm
อ่านแล้วไม่ค่อยเข้าใจครับ
เซฟชื่อไฟล์ตามชื่อ label หรือเปล่าครับ ติ๊กถูก 5 ไว้ 5 label ก็เซฟเป็น 5 ชื่ออะไรทำนองนี้หรือเปล่าครับ
ขออภัยครับ ตอบช้า พอดีพึ่งเลิกประชุม คือ เซฟชื่อเป็นชื่อ การค้า กล่าวคือ 1 การค้า เลือกขนาดได้มากกว่า 1 ขนาด ฉะนั้นผลเลยทำไว้ให้เป็นชื่อไฟล์จากชื่อการค้า ครับ แต่คือ กรณีที่เรา ติ๊กถูกที่ Ckeckbox สมมติ ติ๊ก 5 อัน ก็ให้มันไปออกรายงานเป็นไฟล์ Excel ไฟล์ใหม่ ตามการติ๊ก ที่ Checkbox หนะครับ แต่ข้อมูลที่อยู่ใน Label มันจะแสดงตามการติ๊กครับ เช่น ติ๊กที่ 100 ลบ.ซม.ใน Label ก็ แสดง เป็น 100 ลบ.ซม.
กรณีติ๊กถูกมากกว่า 1
100 ลบ.ซม.
250
500
1 ลิตร
กดตกลง ก็ออกรายงานเป็น ทั้งหมด 4 ไฟล์ Excel -ข้อมูลใน Label ด้านใน Report ก็คือ ไฟล์ที่ 1 (100 ลบ.ซม.) ไฟล์ที่ 2 (250) ตามลำดับครับ ขอบคุณครับ
Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Mon Feb 26, 2018 9:53 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Dim FName As String
Dim FPath As String
Dim ckb As Object
FPath = "D:\Report"
FName = Sheets("INPUT").TextBox1.Text
With Sheets("INPUT")
For Each ckb In .OLEObjects
If Left(ckb.Name, 5) = "Check" Then
If ckb.Object.Value = True Then
With Sheets("Report")
.Label1.Caption = ckb.Object.Caption
ThisWorkbook.Sheets("Report").Copy
ActiveWorkbook.SaveAs Filename:=FPath & "\" & FName & .Label1.Caption + ".xls"
ActiveWorkbook.Close False
End With
End If
End If
Next ckb
End With
Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Tue Feb 27, 2018 8:25 am
by jullathep
snasui wrote: Mon Feb 26, 2018 9:53 pm

ตัวอย่าง Code ครับ
Code: Select all
Dim FName As String
Dim FPath As String
Dim ckb As Object
FPath = "D:\Report"
FName = Sheets("INPUT").TextBox1.Text
With Sheets("INPUT")
For Each ckb In .OLEObjects
If Left(ckb.Name, 5) = "Check" Then
If ckb.Object.Value = True Then
With Sheets("Report")
.Label1.Caption = ckb.Object.Caption
ThisWorkbook.Sheets("Report").Copy
ActiveWorkbook.SaveAs Filename:=FPath & "\" & FName & .Label1.Caption + ".xls"
ActiveWorkbook.Close False
End With
End If
End If
Next ckb
End With
ขอบคุณครับท่านอาจารย์ คนควน และพี่ๆทุกท่าน ที่ช่วยเหลือมาโดยตลอด ขอบคุณอีกครั้งครับ ทุกๆท่าน
Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Tue Feb 27, 2018 11:35 am
by jullathep
jullathep wrote: Tue Feb 27, 2018 8:25 am
snasui wrote: Mon Feb 26, 2018 9:53 pm

ตัวอย่าง Code ครับ
Code: Select all
Dim FName As String
Dim FPath As String
Dim ckb As Object
FPath = "D:\Report"
FName = Sheets("INPUT").TextBox1.Text
With Sheets("INPUT")
For Each ckb In .OLEObjects
If Left(ckb.Name, 5) = "Check" Then
If ckb.Object.Value = True Then
With Sheets("Report")
.Label1.Caption = ckb.Object.Caption
ThisWorkbook.Sheets("Report").Copy
ActiveWorkbook.SaveAs Filename:=FPath & "\" & FName & .Label1.Caption + ".xls"
ActiveWorkbook.Close False
End With
End If
End If
Next ckb
End With
ขอบคุณครับท่านอาจารย์ คนควน และพี่ๆทุกท่าน ที่ช่วยเหลือมาโดยตลอด ขอบคุณอีกครั้งครับ ทุกๆท่าน
Code: Select all
Dim FName As String
Dim FPath As String
Dim ckb As Object
FPath = "D:\Report"
FName = Sheets("INPUT").TextBox1.Text
With Sheets("INPUT")
For Each ckb In .OLEObjects
If Left(ckb.Name, 5) = "Check" Then
If ckb.Object.Value = True Then
With Sheets("Report")
.Label1.Caption = ckb.Object.Caption
ThisWorkbook.Sheets("Report").Copy
ActiveWorkbook.SaveAs Filename:=FPath & "\" & FName & .Label1.Caption + ".xls"
ActiveWorkbook.Close False
End With
End If
End If
Next ckb
End With
อาจารย์ครับ ผมเอาไปปรับใช้จริงแล้วมันฟ้อง Error Run-time '1004': ที่บรรทัด
ActiveWorkbook.SaveAs Filename:=FPath & "\" & FName & .Label1.Caption + ".xls"
นี้ครับ
Re: สอบถามการเขียน Code VBA ออกรายงาน Excel
Posted: Tue Feb 27, 2018 12:01 pm
by logic
ผมคัดลอกโค้ดอาจารย์ไปทดสอบแล้วเซฟได้ปกติ ช่วยแนบไฟล์ล่าสุดมาให้เพื่อน ๆ ช่วยกันลองอีกทีครับ
