Hi@ all,
ich hab da ein Problem mit der Umsetzung.
So hier die Ausgangssituation:
Wir haben ein Programm das Lieferscheine,Rechnungen ect. in ein Worddokument übergibt. Das Dokument in einem US-LETTER .rtf Format.
Ich muss das Ganze mit einer anderen Schriftart (Courier New), Schriftgröße (9), Seitenformat (A4) und einer Vorlage (Kopfzeile: Firmenlogo, Fusszeile: Anschrift) zusammenfügen und umformartieren.
Das umformatierte Word Dokument soll dann in ein PDF umgewandelt werden, zur Ablage in ein Verzeichniss gespeichert und als Mail versendet werden.
hier das Installations intensive Word Macro:
(PDF Drucker muss installiert werden das Macro muss immer wieder angepasst werden , der Standard Drucker ändert sich laufend)
Spoiler anzeigen
' Erste Leerzeichen entfernen
'
Selection.MoveDown Unit:=wdLine, Count:=10, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p^p^p^p^p^p^p^p^p^p"
' ^p^p^p^p^p^p^p^p^p^p^p^p^p"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
' Manuelle Seiteumbrüche entfernen
' Selection.Find.ClearFormatting
' Selection.Find.Replacement.ClearFormatting
' With Selection.Find
' .Text = "^m"
' .Replacement.Text = ""
' .Forward = True
' .Wrap = wdFindContinue
' .Format = False
' .MatchCase = False
' .MatchWholeWord = False
' .MatchWildcards = False
' .MatchSoundsLike = False
' .MatchAllWordForms = False
' End With
' Selection.Find.Execute Replace:=wdReplaceAll
' Alles auf Courier NEW schrift 9 einstellen
Selection.WholeStory
Selection.Font.Name = "Courier New"
Selection.Font.Size = 9
' Seiteneinstellungen
'
With ActiveDocument.Styles(wdStyleNormal).Font
If .NameFarEast = .NameAscii Then
.NameAscii = ""
End If
.NameFarEast = ""
End With
With ActiveDocument.PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientPortrait
.TopMargin = CentimetersToPoints(3.7)
.BottomMargin = CentimetersToPoints(0.74)
.LeftMargin = CentimetersToPoints(0.47)
.RightMargin = CentimetersToPoints(0.47)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.25)
.FooterDistance = CentimetersToPoints(1.25)
.PageWidth = CentimetersToPoints(21)
.PageHeight = CentimetersToPoints(29.7)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = False
.TwoPagesOnOne = False
.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1
.GutterPos = wdGutterPosLeft
End With
' ein neues Dokument von der der Vorlage Bestätigung.dot erstellen
Dokument = "C:\TEMP\Bestätigung.rtf"
If Dokument = True Then Dokument.DeleteFile "C:\TEMP\Bestätigung.rtf", True
Documents.Add Template:="C:\RUEFA\Vorlagen\Bestätigung.dot", NewTemplate:= _
True, DocumentType:=0
ActiveDocument.SaveAs FileName:="C:\TEMP\Bestätigung.rtf", FileFormat:= _
wdFormatRTF, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ActiveWindow.Close
' ActiveDocuments.Close
' das RTF Dokument und die vorlage zusammenführen
ActiveDocument.Merge FileName:="C:\TEMP\Bestätigung.rtf", _
MergeTarget:=wdMergeTargetSelected, DetectFormatChanges:=True, _
UseFormattingFrom:=wdFormattingFromPrompt, AddToRecentFiles:=False
'
' Makro1 Makro
' Makro aufgezeichnet am 08.02.2005 von Garnreiter Thomas
'
ActivePrinter = "FreePDF XP"
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
ActivePrinter = "HP LaserJet"
' Die Dokumente Schließen
Documents.Close SaveChanges:=wdDoNotSaveChanges
' Documents("w_precruefpr").Activate
' Documents("w_precruefpr").Close SaveChanges:=wdDoNotSaveChanges
End Sub
[/autoit]Mein AutoIt Ansatz leider noch sehr unvollständig:
1.) ich hab Probleme mit dem Sprung in das geöffnete Worddokument
2.) probleme mit der umsetzeung von VB macro in AU3 schript
Spoiler anzeigen
#region --- ScriptWriter generated code Start ---
Opt("WinWaitDelay", 100)
Opt("WinTitleMatchMode", 4)
Opt("WinDetectHiddenText", 1)
Opt("MouseCoordMode", 0)
#endregion --- ScriptWriter generated code End ---
[/autoit] [autoit][/autoit] [autoit];~ #NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]#include <Word.au3>
[/autoit] [autoit][/autoit] [autoit]Local $Vorlage = "D:\9. Scripts_ bestätigung\Bestätigung live\k0257_vorlagen\Bestätigung_Orient.dot"
Local $Filepath = "D:\9. Scripts_ bestätigung\Bestätigung live\"
Local $RRLOGO = "D:\9. Scripts_ bestätigung\Ruefa\Ruefa.jpg"
Local $s_mode
While 1
Sleep(200)
If WinExists("w_precruefpr.", "") Then
ExitLoop
EndIf
WEnd
ClipPut("")
WinWait("w_precruefpr.", "Microsoft Word-Dokument")
If Not WinActive("w_precruefpr.", "Microsoft Word-Dokument") Then WinActivate("w_precruefpr.", "Microsoft Word-Dokument")
WinWaitActive("w_precruefpr.", "Microsoft Word-Dokument")
Send("{CTRLDOWN}a{CTRLUP}")
Send("{CTRLDOWN}c{CTRLUP}")
WinClose("w_precruefpr.", "Microsoft Word-Dokument")
[/autoit] [autoit][/autoit] [autoit]If WinExists("Microsoft Office Word","&Ja") Then
ControlClick("Microsoft Office Word","&Ja",7)
EndIf
;~ Send("{ALTDOWN}EA{ALTUP}")
;~ Sleep(100)
;~ Send(" ^C")
;~ WinClose("w_precruefpr.", "")
$oWordApp = _WordCreate($Vorlage, 0, 1, 0)
$oDoc = _WordDocGetCollection($oWordApp, 0)
$handle = ControlGetHandle("Dokument", "", "CLASSNN:_WwG")
If Not WinActive($handle) Then WinActivate($handle)
;~ ControlSend("", "", $handle, "^v")
;~ ControlSend("", "", $handle, "{CTRLDOWN}v{CTRLUP}")
Send("^v")
_WordMacroRun ($oWordApp, "Bestätigung")
[/autoit] [autoit][/autoit] [autoit][/autoit]Ich würde gerne den _WordMacroRun aufruf auslassen, da ich das Ganze Autark installieren muss. (bei der Inst. soll alleine nur das Word (2003 / 2007) vorraussetzung sein.
Die ganzen Variablen sollen dann in ein INI file
Bitte um Hilfe .........
danke TOMTOM