[ dakiyu @ 13.03.2009. 04:10 ] @
Hteo bih da svaku stranicu-tekst koja je spremljena za print nekako najbrze postavim kao zaseban word dokument a da to ne radim sa copy-paste jer ce trajati danima...znaci da nekako ovo rasclanim i svaku stranicu-tekst snimim kao zaseban word ili txt...moze li ili moram rucno?

hvala!


[ Jpeca @ 13.03.2009. 07:37 ] @
1/ Možeš da štampaš stranicu po stranicu u pdf.
2/ Možeš da napraviš makro koji će tekuću stranicu da snimi pod nekim imenom npr. NazivDocumenta-brojstrane.
Code:

Option Explicit
Sub CopyPageToNewDocumentAndSave()
' Snima tekucu stranu u poseban fajl
' Naziv novog fajla formira se na osnovu aktivnog dokumenta
' tako sto se dodaje -Strana-brojstrane
' P.Jovanovic za elitesecurity.org
'
Dim NewName As String
' Selektuje tekucu stranu
 ActiveDocument.Bookmarks("\page").Range.Select
 ' Formira ime za novi dokument
 NewName = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1) & "-Strana-" & Selection.Information(wdActiveEndPageNumber)
 ' Prebacuje u novi dokument selektovani deo
 Documents.Add.Content.FormattedText = Selection.Range
 ' Snima i zatvara novi dokument
 ActiveDocument.SaveAs NewName
 ActiveDocument.Close
End Sub

Sada jos mozeš dodati kod koji u petlji poziva ovu proceduru od 1 stranice do kraja.
[ darkos1 @ 14.08.2018. 14:57 ] @
Tražeći kako da rešim svoj problem naišao sam na sličnu temu pa bi bih zamolio za odgovor.

Kako izmijeniti dio koda da mi umjesto u word snima u pdf formatu.

Takođe me interesuje kako da snimi sve strane a ne samo selektovanu (koliko stranica toliko dokumenata u pdf)

[ bokinet @ 14.08.2018. 17:32 ] @
Evo koda koji vrsi export u PDF aktivan dokument sa opcijom snimanja svih strana ili sa opcijom od strane do strane.

Moze jos malo da se doradi ali sustina i glavna stvar je u navedenom kodu.

Takodje bitna je i koja je verzija MS Word zbog f-je export u PDF format.

Ovo je testirano i probano sa MS Word 2010, 2013 i 2016

Code:

' Publish current document to PDF - Input arguments: filename as full file location, PageFrom/PageTo page range;
' Tested with MS Word versions: 2010, 2013, 2016
Public Sub PublishPDF(ByVal Filename As String, Optional ByVal PageFrom As Long = 1, Optional ByVal PageTo As Long = 0)

    Dim lRange As Word.WdExportRange
    
    

    ' If PageTo isn't set or left 0 then
    If PageFrom = 1 And PageTo < 1 Then
    
        ' Set range to export all pages
        lRange = wdExportAllDocument
        
    ElseIf PageFrom <= PageTo Then
    
        If PageFrom = 0 Then
        
            ' Set range to export current page
            lRange = wdExportCurrentPage
        
        Else
    
            ' Repaginate current document
            ActiveDocument.Repaginate
            
            ' Set range to export from page to page
            lRange = wdExportFromTo
            
        End If
        
    End If

    ' Try to export document to PDF
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
        Filename, _
        ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=lRange, From:=PageFrom, To:=PageTo, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False


End Sub
' Test Example - How can be used
Public Sub TestPublish()

    ' Export to PDF all pages of current document
    PublishPDF "C:\Users\VBAUser\Desktop\test_allpages.pdf"
    
    ' Export to PDF from page to page current document
    PublishPDF "C:\Users\VBAUser\Desktop\test_frompagetopage.pdf", 5, 10
    
    ' Export to PDF current page of current document
    PublishPDF "C:\Users\VBAUser\Desktop\test_currentpage.pdf", 0
    
End Sub

[ darkos1 @ 15.08.2018. 14:05 ] @
Zahvaljujem na odgovoru, ali mi prijavljuje grešku.
Da li se kod ubacuje u modul ili na dokument.

Da li radi u wordu 2007,
[ bokinet @ 15.08.2018. 16:06 ] @
Dati kod radi za verzije MS Word 2010 i novije kao sto je navedeno u pocetnom opisu.

Postoji mogucnost da se koristi u MS Word 2007 ali mora da se instalira dodatak (ADD-IN) od Microsoft-a koji je besplatan za MS Office 2007.

Ja sam brzinski odradio podrsku i za MS Word 2007 u dole navedenom kodu i napravio obe varijante, za MS Word 2007 i za novije verzije od MS Word 2007.

Pomenuti dodatak za MS Office 2007 (znaci i MS Word 2007) mozete preuzeti sa nevedenog linka.

U pitanju je instalacioni file koji je manji od 1MB. Isti, sam postavio i na G-Drive za download.


Microsoft Save as PDF or XPS Add-in for Microsoft Office 2007

Microsoft Save as PDF or XPS Add-in for Microsoft Office 2007 on personal G-Drive


U prilogu se nalaze dva screenshot-a i to prvi prikazuje okvirno kako bi trebalo da izgleda SAVE AS dialog nakon instalcije dodatka, dok drugi predstavlja preporuceni deo gde bi trebalo ubaciti kod, pre svega PublishPDF().
Pored istih je i .bas file sa kodom koji je dole naveden.

Kod koji se moze postaviti po zelji u modul ili direktno u Normal template.

Code:

' Publish current document to PDF - Input arguments: filename as full file location, PageFrom/PageTo page range; If PageTo isn't set or is less 1 then will try to get total pages of current document
' Tested with MS Word versions: 2010, 2013, 2016
' Added suport for version 2007 using add-in from Microsoft -> Microsoft Save as PDF or XPS Add-in for Microsoft Office 2007
' Download url: http://r.office.microsoft.com/r/rlidMSAddinPDFXPS
Public Sub PublishPDF(ByVal Filename As String, Optional ByVal PageFrom As Long = 1, Optional ByVal PageTo As Long = 0)

    Dim lRange As Word.WdExportRange
    
    On Error GoTo ErrHandler
    
    ' If PageTo isn't set or left 0 then
    If PageFrom = 1 And PageTo < 1 Then
    
        ' Set range to export all pages
        lRange = wdExportAllDocument
        
    ElseIf PageFrom <= PageTo Then
    
        If PageFrom = 0 Then
        
            ' Set range to export current page
            lRange = wdExportCurrentPage
        
        Else
    
            ' Repaginate current document
            ActiveDocument.Repaginate
            
            ' Set range to export from page to page
            lRange = wdExportFromTo
            
        End If
        
    End If
    
    Dim lVer As Long
    
    ' Get version of MS Word
    lVer = Val(Application.Version)

    ' If version is 2010 and newer then
    If lVer > 12 Then

        ' Try to export document to PDF
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
            Filename, _
            ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
            wdExportOptimizeForPrint, Range:=lRange, From:=PageFrom, To:=PageTo, _
            Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False
    
    ' If version is 2007 then
    ElseIf lVer = 12 Then
    
        ' Add-in must be installed first
        
        ' Try to export document to PDF
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
            Filename, ExportFormat:=wdExportFormatPDF, _
             OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
            lRange, From:=PageFrom, To:=PageTo, Item:=wdExportDocumentContent, _
            IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
            wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
            True, UseISO19005_1:=False
    
    ' Everything else
    Else
    
        ' Show message
        MsgBox "No support for this version of MS Word."
    
    End If

Exit Sub
ErrHandler:
    ' Show message
    MsgBox "Error in exporting selected document to PDF file." & vbCrLf & vbCrLf & "Error: " & Err.Number & " - " & Err.Description, vbExclamation, "Publish PDF"
End Sub


' Test Example - How can be used
Public Sub TestPublish()

    ' Export to PDF all pages of current document
    PublishPDF "C:\Users\ieuser\Desktop\test_allpages.pdf"
    
    ' Export to PDF from page to page current document
    PublishPDF "C:\Users\ieuser\Desktop\test_frompagetopage.pdf", 5, 10
    
    ' Export to PDF current page of current document
    PublishPDF "C:\Users\ieuser\Desktop\test_currentpage.pdf", 0
    
End Sub



p.s. Namerno je razdvojeno sto se tice verzija jer gledano iz koda nema razlike ali zbog dodatka je tako namerno odradjen cisto da bi se videlo da mora da ide dodatak. To moze da se izbaci i preradi...
[ darkos1 @ 28.01.2019. 15:10 ] @
Makro pokrećem pomoću komandnog dugmeta, međutim na dokumentu koji izvezem u PDF mi bude komandni buton.
Kako da ga sakrijem prije snimanja u PDF odnosno vratim poslije snimanja (sakrijem odnosno otkrijem).
[ bokinet @ 28.01.2019. 15:46 ] @
Ima vise nacina evo dva:


Nacin 1.

Da se pozivanje vrsi preko toolbar button koji bi bio sastavni deo MS Word (Customize the Ribbon... pa se doda i podesi ili nad podsejecim tabom i ribbon tabom ili napravi totalno novi - stvar licne organizacije i potrebe)



Nacin 2.
1. U dokument dodati textbox frame (INSERT -> TextBox)
2. U tako dodati textbox frame ubaciti command button (dugme) koje se koristi za pozivanje procesa
3. U VBA kodu deo koji poziva dugme dodati kod koji neposredno pre pozivanja postojeceg procesa postavlja textbox u nevidiljivo i nakon celog procesa na kraju kod ponovo vraca u vidljivo;

U slucaju da se koristi jos neki shape (posto se tako tretira TextBox) naci koji je ustvari TextBox enumeraciji i proverom osobina istih.

Ubaciti takodje error handler da u slucaju ako dodje do greske se izvrsi i resetovanja vidljivosti tj. vrati visible na true za textbox u dokumentu u kome se nalazi commandbutton.

Primer na osnovu vec datog koda gore (prethodni postovi) bi bio:

Code:


Private Sub CommandButton1_Click()

    ActiveDocument.Shapes(1).Visible = msoFalse
    DoEvents
    
    PublishPDF "C:\Users\IEUser\Desktop\test_allpages.pdf"
    DoEvents
    
    ActiveDocument.Shapes(1).Visible = msoTrue
    DoEvents
    
End Sub