: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 save file to pdf

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

รบกวนแก้ code vba save file to pdf

#1

Post by Jancha »

ถามปัญหา Module4 ที่ Sub SavePDF จะให้ทำการ convert sheet to pdf ตั้งแต่ sheet 2 ถึง sheet สุดท้าย ตอนนี้ติดตรงชื่อที่ปรากฎขึ้นให้ save file ไม่ตรงกับ sheet ที่ทำการ convert pdf โดยที่ชื่อที่ต้องการให้ทำการ save นั้นเกิดมาจากนำ cell B4 ของแต่ละ sheet มาต่อด้วยข้อความว่า "_Jan_2019" โดยไม่ต้องมาพิมพ์ทุกครั้งก่อนกด save ครับ รบกวนแก้ไข code ให้ด้วยครับ ขอบคุณ

Code: Select all

Sub SavePDF()
'
'
Dim name1 As String
Dim fileName As String
Dim filepath As String

    Dim shs() As Variant                        
    Dim i As Integer, j As Integer            
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False

strpath = ActiveWorkbook.Path
filepath = strpath & "\"

name1 = Range("B4").Value & "_Jan_2019"

    For i = 2 To Sheets.Count              
        ReDim Preserve shs(j)               
        shs(j) = Worksheets(i).name      

fileName = Application.GetSaveAsFilename(filepath & name1 & name2 & name3, _
                                         FileFilter:="PDF Files (*.pdf), *.pdf", _
                                         Title:="Select Path and FileName to save")


    If fileName <> "False" Then

        With ActiveWorkbook

                .Worksheets(i).ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
                    fileName, Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

        End With

    End If
                                
            j = j + 1    
    Next i               
                                
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
Attachments
Test.xlsb
ref
(76.74 KiB) Downloaded 12 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนแก้ code vba save file to pdf

#2

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
    For i = 2 To Sheets.Count              
        ReDim Preserve shs(j)               
        shs(j) = Worksheets(i).name
        name1 = Worksheets(i).Range("B3").Value & "_Jan_2019"
'Other code
ควรสอบถามมาพร้อมไฟล์ Excel ที่เขียน Code นี้ไว้แล้ว จะได้สะดวกต่อเพื่อนสมาชิกในการตอบปัญหาครับ
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

Re: รบกวนแก้ code vba save file to pdf

#3

Post by Jancha »

ขออภัยครับไม่คิดว่าจะได้คำตอบเร็วขนาดนี้ พอดีลงข้อมูลผิดจึงแก้กระทู้และมีการลบ attach file ตอนนี้ทำการแนบมาพร้อม code ที่อาจารย์ช่วยปรับให้แล้วครับ ได้คำตอบตามต้องการ ขอบคุณมากนะครับ :D

Code: Select all

Sub SavePDF()
'
'
Dim name1 As String
Dim fileName As String
Dim filepath As String

    Dim shs() As Variant                        
    Dim i As Integer, j As Integer            
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False

strpath = ActiveWorkbook.Path
filepath = strpath & "\"

    For i = 2 To Sheets.Count              
        ReDim Preserve shs(j)               
        shs(j) = Worksheets(i).name      
        name1 = Worksheets(i).Range("B4").Value & "_Jan_2019"

fileName = Application.GetSaveAsFilename(filepath & name1 & name2 & name3, _
                                         FileFilter:="PDF Files (*.pdf), *.pdf", _
                                         Title:="Select Path and FileName to save")


    If fileName <> "False" Then

        With ActiveWorkbook

                .Worksheets(i).ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
                    fileName, Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

        End With

    End If
                                
            j = j + 1     
    Next i                
                                
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
Attachments
Test.xlsb
complete
(74.17 KiB) Downloaded 11 times
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

Re: รบกวนแก้ code vba save file to pdf

#4

Post by Jancha »

รบกวนแก้ code ที่ Module 2 ตรง Sub RTP ครับ หลักการทำงานของ code นี้คือให้เลือก range ข้อมูลของแต่ละ sheet ตั้งแต่ sheet 2 ไปจน sheet สุดท้ายและทำการ save range ที่เลือกเหล่านั้นออกไปเป็นรูปภาพ(.gif, .jpg, .png) เก็บไว้ที่เดียวกับไฟล์ต้นฉบับ ตอนนี้ทำได้ถึงเลือก range แบบเจาะจงลงไปครับ ถ้าข้อมูลในแต่ละ sheet ต่างกันไป จะไม่ support และยืดหยุ่นกับงานครับ รบกวนด้วยครับ ขอบคุณ


Code: Select all

Sub RTP()

 Dim Ws As Worksheet
 Dim Rng As Range
 Dim Chrt As ChartObject
 Dim lWidth As Long, lHeight As Long
 Dim i As Integer
 
        For i = 2 To Sheets.Count
        Sheets(i).Select

                     Set Ws = ActiveSheet
                     Set Rng = Ws.Range("B3:O12")        ''' range to picture
                     '       Range("B3").Select
                     '       Range(Selection, Selection.End(xlDown)).Select
                     '       Range(Selection, Selection.End(xlToRight)).Select
                     ExportPath = ThisWorkbook.Path & "\" & Range("C4").Value & ".png"      '"\img.png"
                     
                     Rng.CopyPicture xlScreen, xlPicture
                     lWidth = Rng.Width
                     lHeight = Rng.Height
                    
                     Set Chrt = Ws.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)
                    
                     Chrt.Activate
                     With Chrt.Chart
                      .Paste
                      .Export fileName:=ExportPath, Filtername:="PNG"
                     End With
                     Chrt.Delete

        Next i
    Sheets("Assessment").Select
End Sub
Attachments
Test.xlsb
ref2
(65.71 KiB) Downloaded 12 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนแก้ code vba save file to pdf

#5

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

'Other code
For i = 2 To Sheets.Count
    With Sheets(i)
        'Set Ws = ActiveSheet
        Set Rng = .Range("B3", .Range("B" & .Rows.Count).End(xlUp)) _
            .Resize(, 14)
        '       Range("B3").Select
        '       Range(Selection, Selection.End(xlDown)).Select
        '       Range(Selection, Selection.End(xlToRight)).Select
        ExportPath = ThisWorkbook.Path & "\" & Range("C4").Value & ".png"      '"\img.png"
        
        Rng.CopyPicture xlScreen, xlPicture
        lWidth = Rng.Width
        lHeight = Rng.Height
        
        Set Chrt = Ws.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)
        
        Chrt.Activate
        With Chrt.Chart
            .Paste
            .Export fileName:=ExportPath, Filtername:="PNG"
        End With
        Chrt.Delete
    End With
Next i
'Other code
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

Re: รบกวนแก้ code vba save file to pdf

#6

Post by Jancha »

ทำการ run code ข้างต้นยังไม่ผ่านครับ
Attachments
Test.xlsb
(57.1 KiB) Downloaded 10 times
img1.png
img1.png (91.04 KiB) Viewed 222 times
img2.png
img2.png (123.82 KiB) Viewed 222 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนแก้ code vba save file to pdf

#7

Post by snasui »

:D ปรับ Code ที่บรรทัด Set Chrt = Ws.ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight) เป็น

Set Chrt = .ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight) ครับ
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

Re: รบกวนแก้ code vba save file to pdf

#8

Post by Jancha »

ขอบคุณมากครับอาจารย์ผมเพิ่มบรรทัดนี้ Sheets(i).Select เพื่อได้ชื่อที่ save ตรงกับชื่อของ Employee ของ sheet นั้นๆครับที่เหลือได้ตามต้องการเลยครับ


Code: Select all

Sub RTB()

 Dim Rng As Range
 Dim Chrt As ChartObject
 Dim lWidth As Long, lHeight As Long
 Dim i As Integer

For i = 2 To Sheets.Count
    With Sheets(i)
                Sheets(i).Select
                Set Rng = .Range("B3", .Range("B" & .Rows.Count).End(xlUp)) _
                    .Resize(, 14)
        
                ExportPath = ThisWorkbook.Path & "\" & Range("C4").Value & ".png"
                
                Rng.CopyPicture xlScreen, xlPicture
                lWidth = Rng.Width
                lHeight = Rng.Height
                
                Set Chrt = .ChartObjects.Add(Left:=0, Top:=0, Width:=lWidth, Height:=lHeight)
                
                Chrt.Activate
                With Chrt.Chart
                    .Paste
                    .Export fileName:=ExportPath, Filtername:="PNG"
                End With
                Chrt.Delete
            End With
        Next i

    Sheets("Assessment").Select
End Sub
Attachments
Test.xlsb
complete
(63.56 KiB) Downloaded 10 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รบกวนแก้ code vba save file to pdf

#9

Post by snasui »

:D สามารถเปลี่ยน ExportPath = ThisWorkbook.Path & "\" & Range("C4").Value & ".png" เป็น ExportPath = ThisWorkbook.Path & "\" & .Range("C4").Value & ".png" แทนเพิ่มการ Select ครับ
User avatar
Jancha
Bronze
Bronze
Posts: 259
Joined: Thu Jan 26, 2017 6:19 pm
Excel Ver: 365

Re: รบกวนแก้ code vba save file to pdf

#10

Post by Jancha »

ได้เหมือนกัน เยี่ยมเลยครับ :thup:
Attachments
Test.xlsb
complete
(66.96 KiB) Downloaded 19 times
Post Reply