Vinzenz Mai: Word Rechnungstemplate füllen aus Excelzeile mit VBA

Beitrag lesen

Hallo,

ohne Fehlerbehandlung :-)
Wie geht Fehlerbehandlung (;-///)???

On Error ...
On Error Resume Next ' Mache mit der nächsten Anweisung weiter
                     ' Prüfe, ob das Err-Objekt nicht etwa was enthält
                     ' Prüfe, ob Deine Objektvariable etwas enthält ...

On Error GoTo <Error-Handling-Bereich> ...

siehe VBA-Hilfe zu On Error.

[code lang=vba]
Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Sehr optimistisch. Das Erzeugen des Objektes kann fehlschlagen

Set objDoc = objWord.Documents.Open(Pfad & "Vorlage.doc")

Sehr optimistisch. Das Öffnen einer Datei kann fehlschlagen.

a) Nutze eine Dokumentvorlage.

Na ich dachte, das mache ich der Userin einfacher, wenn es ein .doc ist, damit sie selbst {Spaltenname} einsetzen könnte, wenn sie wollte, es also anpassen kann. Kaum steht da .dot kommen schon wieder fragen.

Ach: Datei -> Öffnen -> Vorlagen-Datei auswählen ist viel zu schwierig?

Ja, auf Vorlagendateien doppelklicken hat nicht den gewünschten Effekt. Ich finde es traurig, welche Vernachlässigung Vorlagendateien erfahren.

b) Verwende eine sinnvolle Verzeichnisstruktur

Ja, Aufteilen Anwendung, Daten, Ausgabe.

c) Benenne die Dokumentvorlage sinnvoll.

Es gibt nur eine Userin und eine Vorlage (;-). Besser wäre "Rechnungsvorlage", stimmt schon.

Set objSelection = objWord.Selection

???

Lerne mit Range-Objekten umzugehen.

Ja in Excel kann ich das irgendwie. Mir war und ist nicht klar, wie ich in Word einfach sagen kann: kompletten Text durchlaufen. Das reicht mir hier ja schon.

Du musst *zwingend* den Dateinamen kontextgerecht behandeln.

If ColName = "Rechnnr." Then
Rechnnr = Replace(MyReplace, "/", "-")

Schreibe Dir eine vernünftige Funktion. Füge diese in Deine allgemeine Schnippselsammlung ein.

In Dateinamen sind bestimmte Zeichen nicht zugelassen. Sorge dafür, dass diese nicht verwendet werden.

da wäre dann noch der "" und vermutlich sonstwelcher kryptischer Krempel, den Windows nicht haben möchte.

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx

Freundliche Grüße

Vinzenz