Condividi:        

Creare un file pdf da word con un nome preso dal testo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Creare un file pdf da word con un nome preso dal testo

Postdi amentinho » 10/11/12 00:06

Salve a tutti,

vorrei sapere se e' possibile creare una macro con la quale si possa salvare, dato un file word, un file pdf in una determinata cartella del PC con un nome preso da una determinata linea di word.

Per esempio ho un word cosi'

Nome: Gino Luigino
Eta' : 35
Nazionalita' : Italiana

Vorrei che la macro salvasse tale file word in un pdf in una cartella sul desktop, con nome Gino Luigino.pdf

Secondo voi e' possibile??

Grazie a tutti per le eventuali risposte..
Win XP + Office 2007/2010 ES
amentinho
Newbie
 
Post: 2
Iscritto il: 10/11/12 00:00

Sponsor
 

Re: Creare un file pdf da word con un nome preso dal testo

Postdi Flash30005 » 10/11/12 01:31

Ciao Amentinho e benvenuto nel Forum

Ho utilizzato una macro di Anthony che funziona molto bene in excel, adattandola a Word,
Ricorda che devi aver installato PdfCreator
Ho aggiunto la macro "CercaNome" per trovare la riga interessata e ricavarmi il nome del file

Assemblando il tutto ho ottenuto questa/e macro
Codice: Seleziona tutto
Public MioNP As String
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub CercaNome()

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "Nome:"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdWord, Count:=4, Extend:=wdExtend
    MioN = (Replace(Selection, "Nome: ", ""))
    MioNP = Left(MioN, Len(MioN) - 1)
    'MsgBox MioNP
   
End Sub
Sub SalvaPdf()
Call macroPrintPDF1(PercF & "\", NFile)    '<<< AGGUNTA
End Sub
Private Function macroPrintPDF1(ByVal PercF As String, ByVal NFile As String)
Dim objPDFCreator  '<<<  Late Bind

CercaNome

StPdf = Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n " & """PDFCreator""")
NFile = MioNP & ".pdf"
Perc = "C:\Temp\"

NFileE = NFile
'On Error Resume Next
    If Dir(Perc & NFile) = NFile Then Kill (Perc & NFile)
'On Error GoTo 0

If IsProcessRunning("PDFCreator.exe") Then
    Shell "taskkill /f /im PDFCreator.exe", vbHide
End If
'Call ProcessRunning
azz = Timer
Do
    If Not IsProcessRunning("PDFCreator.exe") Then Exit Do
    DoEvents
    If Timer > (azz + 30) Or (Timer < azz And Timer > 25) Then
        MsgBox ("Non e' stato possibile chiudere PDFCreator; processo abortito")
        Exit Function
    End If
Loop

Sleep 3000

Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator")
aaa1 = objPDFCreator.cProgramIsRunning

With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = Perc
.cOption("AutosaveFilename") = NFile
.cOption("AutosaveFormat") = 0
aaa = .cOption("AutosaveFilename")
.cVisible = False
.cClearCache
End With

ActiveDocument.ActiveWindow.PrintOut Range:=wdPrintFromTo, From:="1", To:="1"

'ActiveDocument.PrintOut Copies:=1 ', ActivePrinter:="PDFCreator"
objPDFCreator.cPrinterStop = False
'attesa disponibilita' file finale
Do
   DoEvents
Loop Until Dir(Perc & NFile) = NFile
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'StDef = Shell("C:\PrintDefault.bat")

Sleep 3000
End Function
Private Function IsProcessRunning(ByVal ProcName As String) As Boolean
    Dim objWMIService, objProcess, colProcess
    Dim strComputer, strList
'
    strComputer = "."
'
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
   
    Set colProcess = objWMIService.ExecQuery _
    ("Select * from Win32_Process")
   
    For Each objProcess In colProcess
        If CBool(InStr(1, objProcess.Name, ProcName, vbTextCompare)) Then
            IsProcessRunning = True
            Exit Function
        End If
    Next
End Function


Dovrai avviare la macro "SalvaPdf" il resto viene da se.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Creare un file pdf da word con un nome preso dal testo

Postdi amentinho » 10/11/12 17:47

Grazie mille per il benvenuto e per la celere risposta.

Da quello che ho capito la prima sub serve a cercare e selezionare il nome, mentre la seconda e' quella che ti permette di salvare il file word in pdf sfruttando pdf creator.

Mi chiedo non sarebbe piu' semplice sfruttare la funzionalita' di office 2007 di salvare file in pdf piuttosto che richiamare e utilizzare pdf creator?

Grazie ancora a chi mi voglia rispondere

Ciao a tutti
Win XP + Office 2007/2010 ES
amentinho
Newbie
 
Post: 2
Iscritto il: 10/11/12 00:00

Re: Creare un file pdf da word con un nome preso dal testo

Postdi Anthony47 » 10/11/12 18:59

Benvenuto anche da parte mia.
Per evitare risposte "esagerate" per favore indica la tua configurazione di lavoro: viewtopic.php?f=26&t=97449

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19480
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Creare un file pdf da word con un nome preso dal testo":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti