transformer un lien hypertexte word en pdf via macro excel

kinarius

XLDnaute Nouveau
Salut à tous,
Dur challenge !!!

Comment convertir un lien hypertexte de word en pdf en passant par une macro excel.
J'ai trouvé quelques infos sur le net mais ça bloque. Est ce que quelqu'un peut m'aider ?

Sub ToPdf()

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
adr = ActiveCell.Hyperlinks(1).Address
doc = ActiveCell.Hyperlinks(1).Name
NomPdf = doc & ".pdf"
Chemin = Left(adr, Len(adr) - 10)

With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = Chemin
.cOption("AutosaveFilename") = NomPdf
.cOption("AutosaveFormat") = 0
.cClearCache
End With


application.PrintOut copies:=1, ActivePrinter:="PDFCreator"

'c'est à ce niveau que ça pose pb, apvec this workbook à la place de application, la macro fonctionne mais me sort en pdf le fichier excel et non le lien hypertexte

Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing
End Sub



J'avais aussi ce code mais ca bug !!! :(
'------------

'' appWD.ChangeFileOpenDirectory Chemin
' ' Sauvegarde du fichier sous le numéro de document voulu
' appWD.activedocument.SaveAs Filename:=doc & ".pdf", _
' FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
' True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
' False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
' SaveAsAOCELetter:=False
'----------



HELP ME PLEASE !!!!!!!!
 

kinarius

XLDnaute Nouveau
Re : transformer un lien hypertexte word en pdf via macro excel

J'ai ça aussi
Sub WordToPdf()

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
NomWord = ActiveDocument.Name
NomPdf = Left(NomWord, Len(NomWord) - 4) & ".pdf"

With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = ActiveDocument.Path
.cOption("AutosaveFilename") = NomPdf
.cOption("AutosaveFormat") = 0
.cOption("Autolaunch") = True
.cClearCache
End With
Application.ActivePrinter = "PDFCreator"

'j'ai ce message d'erreur "la methode 'activeprinter' de l'objet'_application' a échoué !!!

Application.ActiveDocument.PrintOut copies:=1
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultPrinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing

Dim detailPDF As String
detailPDF = ActiveDocument.Path & "\" & NomPdf & ".pdf"
'ActiveWorkbook.FollowHyperlink detailPDF

End Sub
 

kiki29

XLDnaute Barbatruc
Re : transformer un lien hypertexte word en pdf via macro excel

PHP:
Salut, quand ici je lance l'impression en PDF via PDFCreator d'un document Word le lien hypertext contenu dans ce document est bien présent et valide dans le Pdf résultant.

Sinon le code minimaliste
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : transformer un lien hypertexte word en pdf via macro excel

Bonjour kinarius, kiki29,

Sous Excel 2010 il n'y a pas besoin d'appeler PDFCreator.

Dans le code de la feuille contenant le lien hypertexte :

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'IMPORTANT : cocher la référence "Microsoft Word xx.x Object Library"
Dim xlapp As Excel.Application, wapp As Word.Application, a$
Set xlapp = GetObject(, "Excel.Application")
Set wapp = GetObject(, "Word.Application")
a = Mid(Target.Address, InStrRev(Target.Address, "\") + 1)
a = ThisWorkbook.Path & "\" & Left(a, InStrRev(a, ".") - 1) & ".pdf"
AppActivate xlapp 'active Excel
If MsgBox("Voulez-vous créer un fichier PDF ?", 4) = 6 Then
  wapp.ActiveDocument.ExportAsFixedFormat a, wdExportFormatPDF, _
    OpenAfterExport:=True 'True pour afficher le fichier PDF
  wapp.Quit 'ferme Word
Else
  wapp.Activate 'active word
End If
End Sub
Dans VBA ne pas oublier de cocher la référence requise (menu Outils-Références).

A+
 

kiki29

XLDnaute Barbatruc
Re : transformer un lien hypertexte word en pdf via macro excel

Salut, effectivement j'avais zappé que Kinarius avait 2010 et que depuis 2007 SP2 le PDF est intégré en natif
bref cela servira peut-être ailleurs. Un conseil quand même : développer en Early Binding et déployer en Late Binding si environnement hétérogène, ce qui évitera les problèmes de références.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : transformer un lien hypertexte word en pdf via macro excel

Re,

On peut aussi exécuter une MsgBox depuis Word, ce qui évite d'activer Excel :

1) Dans un fichier Word quelconque mettre ce code dans le Module NewMacros de Normal :

Code:
Sub CreerPDF(fichier$)
If MsgBox("Voulez-vous créer un fichier PDF ?", 4) = 6 Then
  ActiveDocument.ExportAsFixedFormat fichier, wdExportFormatPDF, _
    OpenAfterExport:=True 'True pour afficher le fichier PDF
  Application.OnTime Now, "Quitter" 'facultatif
End If
End Sub

Sub Quitter()
Application.Quit
End Sub
2) Dans le fichier Excel cette macro appelle la macro Word :

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'IMPORTANT : cocher la référence "Microsoft Word xx.x Object Library"
Dim wapp As Word.Application, a$
Set wapp = GetObject(, "Word.Application")
a = Mid(Target.Address, InStrRev(Target.Address, "\") + 1)
a = ThisWorkbook.Path & "\" & Left(a, InStrRev(a, ".") - 1) & ".pdf"
wapp.Run "CreerPDF", a
End Sub
A+
 

job75

XLDnaute Barbatruc

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 391
Membres
102 882
dernier inscrit
Sultan94