Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Serienbrief Fehler 4160

Begonnen von dierk1804, Juli 27, 2014, 16:38:14

⏪ vorheriges - nächstes ⏩

dierk1804

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

DF6GL

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.....)

dierk1804

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

dierk1804

Hallo MaggieMay,

die Stelle im Code habe ich mit 'Stelle an dem der Fehler auftritt markiert.


MaggieMay

Hi,

mach mal aus dem Doppel-Backslash einen einfachen.
Freundliche Grüße
MaggieMay

dierk1804

Hallo,
\\ habe ich bereits entfernt und mydocname in Serie.doc geändert. Der Fehler bleibt.

MaggieMay

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??
Freundliche Grüße
MaggieMay

dierk1804

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?



DF6GL

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

dierk1804

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???

MaggieMay

Hast du denn die Datei auch umbenannt???
Freundliche Grüße
MaggieMay

dierk1804

umbenannt???
muss ich dies irgendwo machen?
Alle Dateien sind so wie sie sind und liegen auch wo sie sind.

MaggieMay

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?!
Freundliche Grüße
MaggieMay

dierk1804

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