Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : PDFCreator + Word + MSGBOX [ Divers / General ] (bdl20042000)

jeudi 29 mars 2007 à 11:57:22 | PDFCreator + Word + MSGBOX

bdl20042000

Bonjour,

j'essaie depuis 2 jours à faire un petit programme en VB6 + PDFCreator 0.9.3 pour transformer une liste de fichiers Word en fichiers PDF.
Le problème, c'est que à chaque fois PDFCreator m'ouvre un fenêtre me demandant d'enregistrer le fichier.
Dans Word, via un macro en VBA, j'ai trouvé la solution via les exemples de PDFCreator.

Mais sous VB , cela ne marche pas.
voici le code :
Dim oWord As Object
Dim PDFCreator1 As PDFCreator.clsPDFCreator
Dim opt As clsPDFCreatorOptions
Dim DefaultPrinter As String
Dim sRep, sNomFic As String
Dim sDoc As Variant

Set PDFCreator1 = New clsPDFCreator
Set oWord = CreateObject("Word.Application")
Set sDoc = oWord.Documents.Add(fichier, False)

oWord.Visible = False
   
    DefaultPrinter = oWord.ActivePrinter ' On sauvegarde l'imprimante par défaut
    oWord.ActivePrinter = "PDFCreator" ' pour le remplacer par l'imprimante PDF Creator
   
    PDFCreator1.cVisible = False
   
    Set opt = New clsPDFCreatorOptions
    With opt
        .UseAutosave = 1
        .UseAutosaveDirectory = 1
        .AutosaveDirectory = sRep ' Répertoire
        .AutosaveFormat = 0 ' PDF
        .AutosaveFilename = sNomFic ' Nom du fichier
    End With
    With PDFCreator1
        Set .cOptions = opt
        .cClearCache
        .cPrinterStop = False
    End With
   
    oWord.PrintOut Background:=False ' Imprimer sur PDFCreator
    'Sleep 1500 ' Sinon fenêtre de sauvegarde de PDFCreator
    oWord.ActivePrinter = DefaultPrinter
    sDoc.Close SaveChanges:=False ' Fermer le doc sans faire de sauvegarde
    Set opt = Nothing

PDFCreator1.cClose
Set PDFCreator1 = Nothing
oWord.Application.Quit ' Fermer Word
Set oWord = Nothing

Si quelque peut me dire pourquoi cela ne marche pas car il me demande toujours le nom du fichier pour l'enregistrer.

Merci


jeudi 29 mars 2007 à 15:18:46 | Re : PDFCreator + Word + MSGBOX

Drikce06

Membre Club
Salut regarde bien les exemples car avec eux normalement tu n'as pas ces boites de dialogues! En tout cas amuse toi bien parce que c'est un peu la misère!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:

jeudi 29 mars 2007 à 15:23:02 | Re : PDFCreator + Word + MSGBOX

Drikce06

Membre Club

Si cela peut t'aider voilà le bout code que j'avais fait sur l'utilisation de PDF creator, en tout cas une fois que ça fonctionnera poet la solution stp car ça m'interesse:

opt = _PDFCreator.cOptions

With opt

'.PDFOptimize=

'.UseCustomPaperSize = str

.PDFGeneralAutorotate = 2

.UseFixPapersize = 1

.Papersize = format

.UseAutosave = 1

.UseAutosaveDirectory = 1

.AutosaveDirectory = doc.Path

.AutosaveFormat = 0

.AutosaveFilename = doc.Name

End With

With _PDFCreator

.cOptions = opt

.cClearCache()

DefaultPrinter = .cDefaultPrinter

.cDefaultPrinter =

"PDFCreator"

.cPrintFile(doc.FullName)

.cPrinterStop =

False

End With

doc.PrintOut()

ReadyState =

False

With Timer1

.Interval = maxTime * 1000

.Enabled =

True

Do While Not ReadyState And .Enabled

Application.DoEvents()

Loop

.Enabled =

False

End With

'If Not ReadyState Then

'MsgBox("Creating printer test page as pdf." & vbCrLf & vbCrLf & _

'"An error is occured: Time is up!", MsgBoxStyle.Exclamation, Me.Text)

'End If

_PDFCreator.cPrinterStop =

True

_PDFCreator.cDefaultPrinter = DefaultPrinter

topapp.CurrentDocument.Close(

False , False )

doc =

Nothing

opt =

Nothing

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:

jeudi 29 mars 2007 à 16:54:39 | Re : PDFCreator + Word + MSGBOX

bdl20042000

Au lieu de partir de mon projet, j'ai repris d'exemple1 et je l'ai modifié à ma sauce, et maintenant cela fonctionne!
En plus, cela a l'avantage de n'avoir pas besoin de créer d'objet Word, mais l'inconvénient cela affiche Word à chaque document à convertir et je ne réussis pas à le masquer.

CODE :
Option Explicit

Dim sFichier() As String ' liste des fichiers DOC à convertir
Dim sPathRacine As String, sFiles() As String

Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator
Private pErr As clsPDFCreatorError, opt As clsPDFCreatorOptions
Private noStart As Boolean, fac As Double, StartTime As Date

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Sub Enlever_Click()
    If List1.ListCount <= 0 Then Exit Sub
    List1.RemoveItem List1.ListIndex  ' supprime
End Sub

Private Sub Ajouter_Click()
    Dim i As Integer
   
    With Dialog1
        ' Personnalisation
        .DialogTitle = "Choisissez le(s) fichier(s) DOC"
        .Filter = "Fichiers Word (*.DOC)| *.DOC"
        .ShowOpen
    End With
    sFiles = Split(Dialog1.FileName, vbNullChar)
    ' Mettre dans une liste grâce à la fonction Split sur le caractère Null
    If Len(Dialog1.FileName) <> 0 Then
    'Un ou plusieurs fichiers
        If sFiles(0) = Dialog1.FileName Then
            List1.AddItem (sFiles(0))
        Else
            sPathRacine = sFiles(0) & ""
            i = 1
            Do
                On Error GoTo Fin
                List1.AddItem (sPathRacine & "\" & sFiles(i))
                i = i + 1
            Loop
        End If
    End If
Fin:
End Sub

Private Sub Form_Load()
   
    noStart = True
   
    'Initialisation du commondialog
    Dialog1.Flags = &H200 Or &H80000
    'Permet le multiselect (200)
    'et la boite de dialogue est de type explorateur (80000)
    Dialog1.MaxFileSize = 32767
    'Nombre de caractères maximum du multiselect (Valeur par défaut=256)
   
    Set PDFCreator1 = New clsPDFCreator
    Set pErr = New clsPDFCreatorError
    With PDFCreator1
        .cVisible = True
        If .cStart("/NoProcessingAtStartup") = False Then
            If .cStart("/NoProcessingAtStartup", True) = False Then
                Traitement.Enabled = False
                Exit Sub
            End If
            AddStatus "Une instance de PDFCreator existe déjà, il faut le fermer!"
            .cVisible = True
        End If
        ' Get the options
        Set opt = .cOptions
        .cClearCache
        noStart = False
    End With
    AddStatus "Le programme vient de démarrer"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If noStart = False Then
        DoEvents
        PDFCreator1.cClose
    End If
    DoEvents
    Set PDFCreator1 = Nothing
    Set pErr = Nothing
    Set opt = Nothing
End Sub

Private Sub quitter_Click()
    Unload Me
End Sub

Private Sub Traitement_Click()
    Dim DefaultPrinter As String
    Dim i As Integer

    Screen.MousePointer = vbHourglass
    Traitement.Enabled = False
    DefaultPrinter = PDFCreator1.cDefaultPrinter
    PDFCreator1.cVisible = False
   
    For i = 0 To List1.ListCount - 1
        ImprimePDF (List1.List(i))
        Sleep 1500 ' Pause 1.5 s sinon ne va imprimer que le dernier fichier
    Next i
   
    PDFCreator1.cVisible = True
    PDFCreator1.cDefaultPrinter = DefaultPrinter
    Screen.MousePointer = vbNormal
    Traitement.Enabled = True
   
End Sub

Private Sub ImprimePDF(ByVal fichier As String)
    Dim sRep, sNomFic As String
    Dim i As Integer
    
    'Séparer le chemin du nom de fichier
    If InStr(fichier, "\") Then
        For i = Len(fichier) To 0 Step -1
            If Mid(fichier, i, 1) = "\" Then
                Exit For
            End If
        Next i
        sRep = Left(fichier, i)
        sNomFic = Mid(fichier, i + 1)
        sNomFic = Left(sNomFic, Len(sNomFic) - 4)
    Else
        sRep = ""
        sNomFic = Left(fichier, Len(fichier) - 4)
    End If
 
    AddStatus "Début de la création du fichier PDF ..."
    With opt
        .AutosaveDirectory = sRep
        .AutosaveFilename = sNomFic
        .UseAutosave = 1
        .UseAutosaveDirectory = 1
        .AutosaveFormat = 0 ' PDF
    End With
    With PDFCreator1
        Set .cOptions = opt
        .cClearCache
        .cDefaultPrinter = "PDFCreator"
        .cPrintFile (fichier)
        .cPrinterStop = False
    End With
   
    PDFCreator1.cPrinterStop = False
    StartTime = Now
End Sub

Private Sub AddStatus(Str1 As String)
 With txtStatus
  If LenB(.Text) = 0 Then
    .Text = Time & ": " & Str1
   Else
    .Text = .Text & vbCrLf & Time & ": " & Str1
  End If
  .SelStart = Len(.Text)
 End With
End Sub

Private Sub PDFCreator1_eReady()
    AddStatus """" & PDFCreator1.cOutputFilename & """ a été créé! (" & _
    DateDiff("s", StartTime, Now) & " secondes)"
    PDFCreator1.cPrinterStop = True
    Screen.MousePointer = vbNormal
End Sub

Private Sub PDFCreator1_eError()
    Set pErr = PDFCreator1.cError
    AddStatus "Error[" & pErr.Number & "]: " & pErr.Description
    Screen.MousePointer = vbNormal
End Sub

Si cela peut interresser des personnes, je peux mettre le projet dans la partie Code du site.



jeudi 29 mars 2007 à 17:01:10 | Re : PDFCreator + Word + MSGBOX

Drikce06

Membre Club
Salut, pourquoi pas application.visible = false pour cacher world

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:

jeudi 29 mars 2007 à 17:30:47 | Re : PDFCreator + Word + MSGBOX

bdl20042000

Salut,
c'est ce que j'avais fait que le premier cas.
Mais dans le second cas , c'est PDFCreator qui lance Word automatiquement, aussi à aucun moment, je n'ai accès à l'objet Word pour le manipuler.



mercredi 10 septembre 2008 à 17:19:01 | Re : PDFCreator + Word + MSGBOX

axilysl

Bonjour  bd20042000,

   je ne sais pas si quelqu'un pourrai m'aider, je suis super débutante et il m'a été demandé de génrer un pdf à partir d'un dataset ou même d'un HTML si possible.
je vous serai trs reconnaissant.  je galère fort  
Merci d'avance

jeudi 11 septembre 2008 à 11:54:37 | Re : PDFCreator + Word + MSGBOX

kad68

salut,

c'est une application web ou locale qui doit générer ce fameux pdf ?

si c'est web, si tu veux générer un nouveau document pdf à parti d'un DataSet, essaye itextsharp ou équivalent, ça te permettra de le générer en temps réel sans écrire sur le disque

sinon tu peux tout a fait générer un fichier HTML sur le disque puis te baser sur le programme de bdl20042000 pour demander l'impression en PDF de ce fichier généré.

a toi d'adpater la solution a ton besoin

bon courage





Cette discussion est classé dans : word, false, oword, pdfcreator, pdfcreator1


Répondre à ce message

Sujets en rapport avec ce message

Prob de placement dans WORD par VB [ par Seifer1 ] Slt tlm,voilà je fais un prog permettant de modifier du texte dans un doc word a partir de vb,voilà mon code :Private Sub Command2_Click()Dim Apw As O Renommer en série des doc [ par algo69 ] Bonsoir chers programmeursJ'ai du boulot pour vous (lol!!)J'ai crée cette macro s/ Word :Sub Macro1() ChangeFileOpenDirectory "C:\Documents and Set Word et Macro [ par chris87000 ] Bonjour,Je ne connais pas Vba pour Word et je souhaite insérer dans Word de façon automatique du texte avec plus de 255 caractères. (La fonction inser Probleme d'envoi de mail a partir d'un form access [ par cancolegnako ] BonjourJ'ecris une appli en access qui entre autres doit envoyer de la doc par email a des clients appelesJ'ai un bouton sense ouvrir un document word fusion word avec VBA (urgent!!!) [ par woo99 ] Bonjour,Je voudrais faire une fusion automatisée sous word avec VBA à l'aide d'une base excel en ne selectionnant que des lignes avec une certaine don ACESS FUSION WORD [ par isabelle1912 ] Bonjour, j'ai besoin d'une aide urgente!!!Je tente d'exporter des données access 2002 dans un document word (fax ou lettre) le tout basé sur une requê VBA word compter le nombre de fois remplacer par [ par ManuAntibes ] Salut J'ai créé une macro dans word, ou je lui fais recherché et remplacer des mots.Je voudrais recuperer dans une variable le nombre de fois qu'il a ouvrir internet explorer avec une macro de word [ par ManuAntibes ] Salut J'ai fais un .dot en wordJ'ai mis un label de texte avec une adresse email de dans.Je souhaite pouvoir ouvrir une page internet en cliquant sur Probleme de remplacement de mots dans Word avec VB [ par Sebastien12 ] Bonjour,J'ai écrit un progrmme permettant de faire plusieurs remplacement de texte sous Word.Mais quand j'execute le programme il ne fait rien.Si quel Publipostage après filtrage [ par tawac ] Bonjour, J'effectue un publipostage Access vers Word depuis VB6. Je cherche à exporter uniquement l'enregistrement courant. Je récupére donc le num d'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.