Avatar billede rashid Praktikant
06. november 2002 - 21:46 Der er 12 kommentarer og
1 løsning

word -> pdf (via macro)

Hejsa

Jeg har fået fat i en lille makrokode til dette foremål, men problemet er at den ikke virker som jge vil have det. Meningen er at man inde fra word kan konvertere alle wordfiler i et givent katalog (mappe) til PDF. I kan se på koden og fortælle mig om jeg kan lave det bedre ?? så, her kommer den:
Function ConvertFile(strSourceFileName As String) As String
On Error GoTo ErrorHandler

Dim msWord As Word.Application
Set msWord = GetObject(Class:="Word.Application.9")

msWord.Visible = True
msWord.ActivePrinter = "Acrobat Distiller"
msWord.Documents.Open strSourceFileName
msWord.ActiveDocument.PrintOut
msWord.ActiveDocument.Close False

' Should check and quit word when done
Set msWord = Nothing
ConvertFile = True
Exit Function

'////////////////////////////////////////////////////
ErrorHandler:
' Opret Word hvis ikke aktiv
If Err.Number = 429 Then
Set msWord = CreateObject("Word.Application.9")
Err.Clear ' slet fejlmeddelelse hvis den fremkommer
Resume
End If

' Andre fejlmeddelelser behandles her
If IsCriticalError Then
ConvertFile = False
Exit Function
Else
Resume
End If
End Function

'///////////////////////////////////////////////////
'///////////////////////////////////////////////////

Private Function IsCriticalError() As Boolean
Dim strErrorMessage As String
Select Case Err.Number ' Evaluate error number.
Case Else
strErrorMessage = "Please contact xess66@hotmail.com and inform them that" & Chr$(13) & _
"the error message reported by the operating system was " & Chr$(13) & _
Chr$(34) + Trim(Str(Err.Number)) & " " & Err.Description + Chr$(34)
MsgBox strErrorMessage, , "Conversion error" + Str(Err.Number)
IsCriticalError = True
Exit Function
End Select
IsCriticalError = False
End Function

Sub btnConvert_Click()
Dim strFileToConvert As String
Dim strFolder As String

' Sæt stien til wordfilerne
strFolder = InputBox("Indtast stien til wordfilerne", "STI TIL WORDFILER", "d:\adobe\")

' Få fat i den første wordfil
strFileToConvert = Dir(strFolder + "*.doc")

' tag de efterfølgende filer
While strFileToConvert <> ""

' Forsøg på at konvertere til PDF
If (ConvertFile(strFolder + strFileToConvert) = False) Then
' Hvis der går noget bedes brugeren om at stoppe
    If (MsgBox("Noget er gået galt i konverteringen " + strFileToConvert + Chr(13) + "Vil du afslutte ? ", vbYesNo) = vbYes) Then
' Vi afslutter
Exit Sub
End If
End If

' Næste fil behandles
strFileToConvert = Dir
Wend

End Sub
Avatar billede johnstigers Seniormester
06. november 2002 - 22:06 #1
Husk lige at lade spørgsmålet stå åbent i 7 dage inden du opretter det igen, så følger du reglerne :)
http://www.eksperten.dk/spm/278071
Avatar billede jespernaur Nybegynder
06. november 2002 - 23:05 #2
Hvad mener du med, at den ikke gør som du vil have det? Du må være lidt mere specifik i retning af at "den gør sådan og sådan" men jeg vil hellere have at "den gør dette og hint"
Avatar billede rashid Praktikant
11. november 2002 - 13:50 #3
ok - Det øvelsen går ud på er at jeg vil automatisere dannelsen af pdf-filer ud fra word dokumenter. Da det drejer sig om 1000-1500 så er det manuelle arbejde jo stort. Jeg fandt ovenstående macro og rettede den til. Macroen virker når jeg kører den en gang(i step), men den vil ikke "loope" dvs. jeg får kun dannet en pdf. Så kan I hjælpe uden at jeg skal ud og købe mere software end det jeg har (Acrobat Writer)
Avatar billede jespernaur Nybegynder
11. november 2002 - 20:39 #4
Hvis den kode du har vist bliver kørt inde fra Word, burde det ikke være nødvendigt at oprette et 'nyt' Word-objekt. Du må kunne erstatte linierne:

    Dim msWord As Word.Application
    Set msWord = GetObject(Class:="Word.Application.9")

    msWord.Visible = True
    msWord.ActivePrinter = "Acrobat Distiller"
    msWord.Documents.Open strSourceFileName
    msWord.ActiveDocument.PrintOut
    msWord.ActiveDocument.Close False

    ' Should check and quit word when done
    Set msWord = Nothing


med

    Application.Visible = True
    Application.ActivePrinter = "Acrobat Distiller"
    Application.Documents.Open strSourceFileName
    Application.ActiveDocument.PrintOut
    Application.ActiveDocument.Close False
   
og dermed udnytte det Word Application objekt, du gratis har til rådighed i
kraft af, at du kører inden i Word.

Jeg mistænker, at det at du opretter et nyt Word-objekt, måske fører til
at den får ødelagt den kontekst, der er nødvendig for at din Dir-løkke kan virke.

Mvh
Jesper Naur
Avatar billede rashid Praktikant
12. november 2002 - 14:19 #5
JEg kom lidt længere, men efter en konverterinig står maskinen bare og hænger
- Hjælp please
Avatar billede jespernaur Nybegynder
12. november 2002 - 17:22 #6
Du må vænne dig til at komme med lidt flere informationer!

Kom den igang med dokument nr 2? Evt. endnu længere?

Hvor er den gået i stå, hvilken sætning i koden er den ikke kommet tilbage fra?

Fik du fejlkoder? I givet fald hvilke, og fra hvilke(n) linie af koden?
Avatar billede jespernaur Nybegynder
12. november 2002 - 20:39 #7
Prøv evt at ændre linien

    Application.ActiveDocument.PrintOut

til

    Application.ActiveDocument.PrintOut(False)

Dette vil forhindre Word i at fortsætte i macroen før 'udskriften' rent faktisk er færdig, dette kan måske nedsætte forvirringen.
Avatar billede rashid Praktikant
15. november 2002 - 11:41 #8
-> Jespernauer
Kan jeg prøve at maile nogle dokumenter til dig ??
Avatar billede jespernaur Nybegynder
15. november 2002 - 15:52 #9
Jeg tror ikke det ville bringe ret meget. Du skal være klar over, at jeg ikke er i besiddelse af Acrobat Writer, så jeg ville ikke selv kunne afprøve koden og bagefter være sikker på at den virkede, når du fik resultatet. Hvis jeg skal hjælpe dig, kommer det nok til at foregå på den måde, at du kører programmet og fremskaffer de informationer, jeg spørger om. Så kan man håbe at disse informationer sætter mig i stand til at opfinde forbedringer.
Avatar billede rashid Praktikant
20. november 2002 - 21:39 #10
Jespernauer -> kan du hjælpe med en makro der kan printe en hel folder ud til en specifik printer ??
Avatar billede rashid Praktikant
20. november 2002 - 21:41 #11
altså worddocs
Avatar billede jespernaur Nybegynder
21. november 2002 - 17:34 #12
Her er et forsøg - du vil opdage at jeg har fjernet meget af fejlbehandlingen, og indsat et par væk-kommenterede MsgBox'e. Hvis du bliver i tvivl om hvor langt den kommer, kan du fjerne kommentar-tegnet for at aktivere dem. Prøv et test-skud med et katalog, der kun indeholder nogle få dokumenter.

Jeg kan fortælle så meget, at hvis jeg kommenterer printer-valget væk, kører det som det skal hos mig.

Mvh
Jesper Naur


Function ConvertFile(strSourceFileName As String) As String

  'MsgBox "Nu konverteres <" & strSourceFileName & ">"

  ' Vælg printer
  Application.ActivePrinter = "Acrobat Distiller"
 
  Application.Documents.Open strSourceFileName
  'MsgBox "before print"
  Application.ActiveDocument.PrintOut (False)
  'MsgBox "after print"
  Application.ActiveDocument.Close False
  'MsgBox "after close"

  ConvertFile = True
  Exit Function
End Function

Sub btnConvert_Click()
  Dim strFileToConvert As String
  Dim strFolder As String

  ' Sæt stien til wordfilerne
  strFolder = InputBox("Indtast stien til wordfilerne", "STI TIL WORDFILER", "d:\adobe\")
 
  ' Få fat i den første wordfil
  strFileToConvert = Dir(strFolder + "*.doc")
 
  ' tag de efterfølgende filer
  While strFileToConvert <> ""
      MsgBox "Fil der skal konverteres: <" & strFileToConvert & ">"
     
      ' Forsøg på at konvertere til PDF
      If (ConvertFile(strFolder + strFileToConvert) = False) Then
      '  If False Then
      ' Hvis der går noget bedes brugeren om at stoppe
        If (MsgBox("Noget er gået galt i konverteringen " + strFileToConvert + Chr(13) + "Vil du afslutte ? ", vbYesNo) = vbYes) Then
            ' Vi afslutter
            Exit Sub
        End If
      End If

      ' Næste fil behandles
      strFileToConvert = Dir
  Wend

End Sub
Avatar billede rashid Praktikant
15. januar 2003 - 08:18 #13
->> Jesper Nauer
Tak for hjælpen - desværre hjalp det ikke helt, så jeg fandt et andet program (2 programmer) win2pdf og batch2bdf. Ganske udmærkede programmer der kan det jeg ville have dem til: Lave pdf-filer af word-doc's i en folder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester