Avatar billede BMgsas Novice
23. juni 2022 - 11:55 Der er 2 løsninger

VBA Excel: gem valgte ark som separate PDF filer

Hej
Jeg er ny VBA bruger og har googlet mig frem til en VBA kode, der skal løse en opgave i excel for mig. Jeg har forsøgt at stykke koden sammen fra flere eksempler fundet på google, men jeg får en fejl i den sidste del af koden.
Opgaven er at jeg i et excel ønske at vælge, hvilke ark der skal gemmes som PDF. Hvert ark skal gemmes som en separat PDF fil. Filen skal gemmes i samme mappe som excel filen er gemt og filnavnet på PDF'erne skal dannes ud fra celler i hvert enkelt ark (samme celler i alle ark).
Jeg har lavet udvælgelsen af ark i en ListBox i arket "Gem som PDF", hvor jeg laver en liste med alle ark og her kan jeg ved CTRL+klik udvælge de ark der skal gemmes

Jeg har 2 spørgsmål: 1) Kan koden tilpasses så alle ark undtagen ark 11 & 12 vises i min ListBox?

Private Sub Worksheet_Activate()

Dim Sh

    Me.ListBoxSh.Clear

    For Each Sh In ThisWorkbook.Sheets
        Me.ListBoxSh.AddItem Sh.Name
    Next Sh
   
End Sub

2) Jeg får en fejl, når "ExportAsFixedFormat" koden skal afvikles, hvordan løses det?

Option Explicit

Sub Save_SelectedSheets_PDF()
    Dim i As Long, c As Long
    Dim SheetArray() As String

    With ActiveSheet.ListBoxSh

        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                ReDim Preserve SheetArray(c)
                SheetArray(c) = .List(i)
                c = c + 1
            End If
        Next i
       
        Sheets(SheetArray()).ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=ActiveWorkbook.Path & "\" & ActiveSheet.Range("C42").Value & " - " & ActiveSheet.Range("D42").Value & ActiveSheet.Range("E42").Value & " - " & ActiveSheet.Range("C43").Value, _
            Quality:=xlQualityStandard

    End With
Avatar billede bak Seniormester
27. juni 2022 - 20:29 #1
spm 1
Dim sh
    Me.ListBoxSH.Clear
    For Each sh In ThisWorkbook.Sheets
        If Not sh.Name Like "*1[12]" Then
            Me.ListBoxSH.AddItem sh.Name
        End If
    Next sh

spm 2
Private Sub SaveSelectedSheets()
Dim sh As Worksheet
With ListBoxSH
For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Debug.Print .List(i)
                Set sh = Worksheets(.List(i))
                sh.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=ActiveWorkbook.Path & "\" & sh.Range("C42").Value & " - " & sh.Range("D42").Value & sh.Range("E42").Value & " - " & sh.Range("C43").Value, _
                Quality:=xlQualityStandard

            End If
        Next i
End With
End Sub
Avatar billede BMgsas Novice
28. juni 2022 - 14:10 #2
Tak for svaret, jeg fik en fejl i spm. 2, men løst det med en lille ændring
" With ActiveSheet.ListboxSH"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





CIO
Stort CIO-interview: Lemvigh-Müllers milliard-omsætning er blevet digital