: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 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
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 3 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 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
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 3 times
img1.png
img1.png (91.04 KiB) Viewed 88 times
img2.png
img2.png (123.82 KiB) Viewed 88 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
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 2 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31214
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 11 times
Post Reply