: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

สอบถามการเขียน Code VBA ออกรายงาน Excel

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: สอบถามการเขียน Code VBA ออกรายงาน Excel

Re: สอบถามการเขียน Code VBA ออกรายงาน Excel

#7

by logic » Tue Feb 27, 2018 12:01 pm

ผมคัดลอกโค้ดอาจารย์ไปทดสอบแล้วเซฟได้ปกติ ช่วยแนบไฟล์ล่าสุดมาให้เพื่อน ๆ ช่วยกันลองอีกทีครับ :)

Re: สอบถามการเขียน Code VBA ออกรายงาน Excel

#6

by jullathep » Tue Feb 27, 2018 11:35 am

jullathep wrote: Tue Feb 27, 2018 8:25 am
snasui wrote: Mon Feb 26, 2018 9:53 pm :D ตัวอย่าง 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

#5

by jullathep » Tue Feb 27, 2018 8:25 am

snasui wrote: Mon Feb 26, 2018 9:53 pm :D ตัวอย่าง 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

#4

by snasui » Mon Feb 26, 2018 9:53 pm

:D ตัวอย่าง 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

#3

by jullathep » Mon Feb 26, 2018 5:02 pm

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

#2

by logic » Mon Feb 26, 2018 2:17 pm

อ่านแล้วไม่ค่อยเข้าใจครับ

เซฟชื่อไฟล์ตามชื่อ label หรือเปล่าครับ ติ๊กถูก 5 ไว้ 5 label ก็เซฟเป็น 5 ชื่ออะไรทำนองนี้หรือเปล่าครับ :)

สอบถามการเขียน Code VBA ออกรายงาน Excel

#1

by jullathep » Mon Feb 26, 2018 10:19 am

สวัสดีครับ อาจารย์ทุกๆท่านผมมีข้อสงสัยอยากจะทราบแนวทางการเขียน 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
Attachments
testsave.xlsm
(46.86 KiB) Downloaded 27 times

Top