Hallo zusammen,
Entschuldigung wenn ich nochmals zu dem Thema nerven muss.
Bei meinem Code bekomme ich plötzlich eine Fehlermeldung 4160 "ungültiger Dateiname"
Was mache ich nun wieder falsch????
Dim WordObj As Object
Dim myDocname As String
myDocname = "Serie"
Set WordObj = CreateObject("Word.Application")
WordObj.Documents.Open "C:\\Serienbrief.doc"
WordObj.Visible = True
'Zeile die Fehlermeldung auslöst
WordObj.Documents("C:\\Serienbrief.doc").MailMerge.Destination = wdSendToNewDocument
WordObj.Documents("C:\\Serienbrief.doc").MailMerge.Execute
WordObj.ActiveDocument.SaveAs FileName:=myDocname
WordObj.Documents("C:\\Serienbrief.Doc").Close SaveChanges:=wdDoNotSaveChanges
Für Hilfe wäre ich dankbar
Hallo,
"plötzlich"..? oder gab es eine Änderung zwischenzeitlich?
ZitatmyDocname = "Serie"
an sich ist wohl kein gültiger (akzeptabler) Dateiname..
Zudem sollten Doppel-Schrägstriche im Pfad-Nehmen nicht vorkommen und man sollte sich mit definierten Objektvariablen auf die Word-Objekte beziehen.. (set aktDoc = WordObj.....)
Hallo,
ich habe den von letzter Woche vorgeschlagenen Link so wie beschrieben durchgeführt und der hat funktioniert. Allerdings funktioniert dieser nicht wenn ich den Quellcode in meiner DB einsetze.
Wo sollte ich den (set aktDoc = WordObj.....) einsetzen und wie lautet der vollständige Befehl?
Entschuldige wenn ich als Anfänger ein wenig nerve.
Hallo,
du wärest besser im alten Thread geblieben, dann wüsste man gleich worum (und um welchen Link) es geht.
Zeig doch bitte deinen aktuellen, nicht funktionierenden Code, mit Hinweis darauf, was falsch läuft bzw. wo welcher Fehler auftritt.
Hallo MaggieMay,
die Stelle im Code habe ich mit 'Stelle an dem der Fehler auftritt markiert.
Hi,
mach mal aus dem Doppel-Backslash einen einfachen.
Hallo,
\\ habe ich bereits entfernt und mydocname in Serie.doc geändert. Der Fehler bleibt.
Hi,
Zitat von: dierk1804 am Juli 27, 2014, 17:10:07Wo sollte ich den (set aktDoc = WordObj.....) einsetzen
wo in deinem Code kommt das denn vor bzw. was hast du damit vor?
Zeig doch bitte noch einmal die aktuelle Version deines Codes.
Die Datei "C:\Serienbrief.Doc" existiert??
Hallo,
Die Datei Serienbrief.doc existiert.
Der Code:
Dim WordObj As Object
Dim myDocname As String
myDocname = "Serienbrief.doc"
Set WordObj = CreateObject("Word.Application")
WordObj.Documents.Open "C:\Serienbrief.doc"
WordObj.Visible = True
'Zeile die Fehlermeldung auslöst
WordObj.Documents("C:\Serienbrief.doc").MailMerge.Destination = wdSendToNewDocument
WordObj.Documents("C:\Serienbrief.doc").MailMerge.Execute
WordObj.ActiveDocument.SaveAs FileName:=myDocname
WordObj.Documents("C:\Serienbrief.Doc").Close SaveChanges:=wdDoNotSaveChanges
Ich habe ein Formular mit Datenanbindung an die Abfrage auf dem ein Button ist, der den Serienbrief starten soll. Vor der Fehlermeldung wird Word gestarten, doch das Dokument verbindet nicht. Das Serienbriefdokument hatte ich vorher mit der Abfrage verbunden und gespeichert.
Muss ich vielleicht vorher die Abfrage öffnen? In manchen Codes fand ich das Füllen einer Variablen varsql=Select(*,......) Muss ich diese im Code integrieren?
Hallo,
funktionierendes Beispiel:
--Verweis auf die Word-Library setzen.
--Dot-Datei anstelle Doc-Datei benutzen und neues Doc erstellen
--Datenquelle in dot-Datei verbinden und Seriendruckfelder einfügen
--Datenquelle bei Mailmerge-Methode angeben
Dim WordObj As Object
Dim myDocname As String
myDocname = "d:\Serienbrief.doc"
Set WordObj = CreateObject("Word.Application")
WordObj.Documents.Add "d:\Serienbrief.dot"
WordObj.Visible = True
With WordObj.ActiveDocument.MailMerge
.OpenDataSource Name:="C:\Datasources\test1.mdb"
.Destination = wdSendToNewDocument
.Execute
End With
WordObj.ActiveDocument.SaveAs FileName:=myDocname
WordObj.Quit SaveChanges:=wdDoNotSaveChanges
Set WordObj = Nothing
Hallo,
ich verzweifle bald.
Jetzt kommt eine Fehlermeldung 5174
Wir konnten Ihre Datei nicht finden. Wurde möglicherweise verschoben, umbenannt oder gelöscht.
Markierung steht bei:
WordObj.Documents.Add "c:\Serienbrief.dot"
Datei ist vorhanden. Irgend etwas mache ich hier falsch???
Hast du denn die Datei auch umbenannt???
umbenannt???
muss ich dies irgendwo machen?
Alle Dateien sind so wie sie sind und liegen auch wo sie sind.
Ich meine, vorher hattest du eine doc-Datei und nun ist es eine Vorlagendatei, ich wollte nur sicher gehen, dass dir das bewusst ist.
Und überhaupt, niemand legt seine Vorlagen auf C:\ ab, daraus darf man wohl schließen, dass du hier nicht den Originalcode zeigst, aber wie soll man in Pseudocode auf Fehlersuche gehen?!
Hallo,
hier der Originalcode:
Dim WordObj As Object
Dim myDocname As String
myDocname = "T:\QS\Formblätter\BTE\FB 07-10 Lieferantenanschreiben A.docx"
Set WordObj = CreateObject("Word.Application")
WordObj.Documents.Add "T:\QS\Formblätter\BTE\FB 07-10 Lieferantenanschreiben A.dotx"
WordObj.Visible = True
With WordObj.ActiveDocument.MailMerge
.OpenDataSource Name:="T:\Lieferantenmanagement\Lieferantenbewertung_FE.accdb"
.Destination = wdSendToNewDocument
.Execute
End With
WordObj.ActiveDocument.SaveAs FileName:=myDocname
WordObj.Quit SaveChanges:=wdDoNotSaveChanges
Set WordObj = Nothing
Handelt es sich denn überhaupt um eine Seriendruckvorlage?
Neben dem DB-Namen wirst du auch die Datenquelle übergeben müssen, oder wie soll die Verbindung zur Tabelle oder Abfrage hergestellt werden?
Die Quelle zuordnen müsste man auch, das hatte mich auch gewundert.
Ich habe eine Abfrage "Serienbrief A" in meiner DB. Wo muss ich die den einbinden?
Das Word Document ist als Serienbrief hinterlegt. Wenn ich das Dokument ausserhalb Access starte stellt Word die Verbindung her und die Daten werden angezeigt.
Hallo,
nochmal:
Dot(!)-Datei vorbereiten mit eingefügten Serienbrieffeldern. Das kann geschehen über manuelles Einfügen von Feldfunktionen oder durch Verbinden einer Datenquelle und einfügen über die entspr. Ribbon-Punkte ("Sendungen"). Word-Dokument als Dot(!!) -Datei abspeichern.
Wenn die Datenquelle (Access-Datei) mehrere Tabellen/Abfragen enthält, dann müssen die benötigte Tabelle/Abfrage bei Mailmerge mit angegeben werden:
With WordObj.ActiveDocument.MailMerge
.OpenDataSource _
Name:="T:\Lieferantenmanagement\Lieferantenbewertung_FE.accdb", _
SqlStatement:="select * from [Serienbrief A]"
.Destination = wdSendToNewDocument
.Execute
End With
btw: Auf Sonder- und Leerzeichen in Objektnamen verzichten !!!!
PS: das Verbinden einer Datenquelle mit dem Hauptdokument wird nur beim Öffnen/Erstellen einer Word-Datei mit Word selber durchgeführt, NICHT bei Öffnen/Erstellen bei Word-Automation.
Hallo,
auch wenn ich nerve. Es klappt einfach nicht.
Fehler: Datei kann nicht gefunden werden.
WordObj.Documents.Add "T:\QS\Formblätter\BTE\FB 07-10 Lieferantenanschreiben A.dotx"
Ich habe die Datei auch Versuchsweise umbenannt (ohne Leerzeichen) und in einen lokalen Pfad gesetzt. Der Fehler bleibt.
Hallo,
ich behaupte mal, dass "Datei kann nicht gefunden werden." stimmt...
Was passiert, wenn Du auf die Datei im Windows-Explorer doppelklickst?
Hallo,
wenn ich die Datei über den Explorer öffne bringt Word die Meldung:
Beim öffnen wird folgender SQL Befehl ausgeführt. Select * from Serienbrief A
Bei OK öffnet das Dokument und die Abfrage ist verbunden.
Hallo,
ok, dann prüf nochmal genau(!) die Schreibweise des Dateinamens im Code...
Alternativ: den Pfadnamen aus der Windows-Explorer-Adress-Leiste kopieren und in den Code einfügen, sodann den Dateinamen im Explorer markieren und ebenfalls im Code anfügen...
Hallo,
Hurra, es klappt.
Vielen Dank für die Geduld und die guten Ratschläge. Was ein Leerzeichen doch so ausmacht.
Was würde ich nur ohne euch machen.
ja, das frage ich mich auch ... 8)