Hej,
Jag jobbar på ett makro där målet är att det för varje sida i ett långt dokument ska hämta ett namn från ett adressfält, och sedan spara ner varje enskild sida som PDF med det namnet som filnamn. Jag har kommit en bit på väg med hjälp av googlingar och test, men inte fått det att fungera helt. Det verkar som att varje gång loopen som skapar pdf:erna går så hämtar den namnet i den första sidan i dokumentet och byter alltså inte till namnet i sida 2 osv. Är det någon som kan peka mig åt rätt håll så är jag otroligt tacksam! Så här ser koden ut just nu:
Sub SaveAsSeparatePDFs()
'Updated by Extendoffice 20180906
Dim I As Long
Dim xStr As String
Dim xPathStr As Variant
Dim xDictoryStr As String
Dim xFileDlg As FileDialog
Dim xStartPage, xEndPage As Long
Dim xStartPageStr, xEndPageStr As String
Dim namn As Range
Dim namntext As String
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
If xFileDlg.Show <> -1 Then
MsgBox "Please chose a valid directory", vbInformation, "nman"
Exit Sub
End If
xPathStr = xFileDlg.SelectedItems(1)
xStartPageStr = InputBox("Begin saving PDFs starting with page __? " & vbNewLine & "(ex: 1)", "Kutools for Word")
xEndPageStr = InputBox("Save PDFs until page __?" & vbNewLine & "(ex: 7)", "Kutools for Word")
If Not (IsNumeric(xStartPageStr) And IsNumeric(xEndPageStr)) Then
MsgBox "The enterng start page and end page should be number format", vbInformation, "Kutools for Word"
Exit Sub
End If
xStartPage = CInt(xStartPageStr)
xEndPage = CInt(xEndPageStr)
If xStartPage > xEndPage Then
MsgBox "The start page number can't be larger than end page", vbInformation, "Kutools for Word"
Exit Sub
End If
If xEndPage > ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) Then
xEndPage = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
End If
' detta är loopen som sparar varje sida som pdf
For I = xStartPage To xEndPage
Set namn = ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, I) ' denna ska ta fram en ny sida varje gång loopen körs
Set namn = ActiveDocuments.Paragraphs(8).Range ' detta är fältet där namnet jag vill använda finns
namntext = Replace(namn.Text, vbCr, vbNullString) ' denna tar bort paragraftecknet från filnamnet
ActiveDocument.ExportAsFixedFormat xPathStr & "\Page_" & namntext & I & ".pdf", _
wdExportFormatPDF, False, wdExportOptimizeForPrint, wdExportFromTo, I, I, wdExportDocumentWithMarkup, _
False, False, wdExportCreateHeadingBookmarks, True, False, False
Next
End Sub
Jag antar att det är något som är fel uttryckt i delen där jag försöker ange variabeln "namn" men jag kan inte hitta felet.. Som sagt otroligt uppskattat om någon har möjlighet att peka ut felet åt mig :)