Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Mit einem VBScript eine Word-Datei öffnen

aggroberlin / 28 Antworten / Baumansicht Nickles

Hallo,

wie ist es Möglich, eine Word-Datei über ein VBScript zu öffnen?? Wie man Wörd öffnet weiß ich schon. mir fehlt nur noch deer Befehl zum öffnen einer Word-datei und wie man den Inhalt kopieren kann. Danke schon mal für eure Antworten

Gruß Aggro

Hier mein bisheriger Quelltext:

Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True \' Display the application.

bei Antwort benachrichtigen
T-Rex aggroberlin „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Schau mal hier (drück mich), da wird ein möglicher Weg gezeigt.

 GrüßeT-Rex 
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Super Tip! Jetzt kann ich zumindest schon mal die Word-Datei öffnen!! Hast du noch ne Idee, wie man den Inhalt der Word-Datei kopiert (Bilder, Text, Format, Hyperlink)

bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Oder mal anders gefragt: Gibt es eine Möglichkeit, die Word-Datei per E-Mail zu versendden?? Wohl bemerkt über VB!

bei Antwort benachrichtigen
thomas woelfer aggroberlin „Oder mal anders gefragt: Gibt es eine Möglichkeit, die Word-Datei per E-Mail zu...“
Optionen

z.b. mit cdo.message (doku dazu siehe msdn)

Set objMessage = CreateObject(CDO.Message)
objMessage.Subject = "Beispielnachricht"
objMessage.Sender = "email@domain.tld"
objMessage.To = "empfaenger@haribo.bo"
objMessage.TextBody = "body text."
objMessage.AddAttachment "c:\\temptest.doc"
objMessage.Send

WM_HOPETHISHELPS


[Diese Nachricht wurde nachträglich bearbeitet.]

this posting contains no tpyos.
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Habe ich schon mal erwähnt wie super ich diese Internetseite finde???
Der Tipp war ebenfalls Goldrichtig! Aber nun habe ich immer noch das Problem, das mir der Inhalt dieses Word-Dokumentes nicht in der E-Mail angezeigt wird.

bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Hallo,
ich habe mir gerade noch mal den Quelltext angeschaut und bin mir nicht sicher, ob das so richtig ist! Funktionieren tut alles wunderbar, nur bekomme ich nun eine E-Mail ohne Inhalt zugeschickt.

!!!Schon mal danke für eure Hilfe!!!

Hier mein Quelltext

'Öffne Wörd-Anwendung
Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True

'Öffne Word-Dokument
appWord.Documents.Open "C:\Dokumente und Einstellungen\b600806\Desktop\http.doc"

'öffne E-Mail und sende Sie Anschließend
emailHere = "test@test.de"
Set objSendMail = CreateObject("CDO.Message")
objSendMail.Subject = "Test"
objSendMail.From = "test"
objSendMail.To = "test@test.de"
objSendMail.HTMLBody = "body text."
objSendMail.send

'Schließe Worddukument
appWord.Quit wdSaveChanges

bei Antwort benachrichtigen
thomas woelfer aggroberlin „Hallo, ich habe mir gerade noch mal den Quelltext angeschaut und bin mir nicht...“
Optionen

es fehlt AddAttachment - dann haengt das doc file einfach als attachment an der mail.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Es tut mir leid und ich weiß auch das ich anfange zu nerven, aber das funktioniert immer noch nicht. ich bekomme weiter eine leere E-Mail zugeschickt :-(( Bitte Hilf mir. Danke schon mal im vorhinaus. Den Befehl AddAttachment habe ich bei "objSendMail.HTMLBody = AddAttachment" eingefügt war das von dir auch so gemeint?




'Öffne Wörd-Anwendung
Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True

'Öffne Word-Dokument
appWord.Documents.Open "C:\Dokumente und Einstellungen\b600806\Desktop\http.doc"

'öffne E-Mail und sende Sie Anschließend
emailHere = "m.heinrich@krz.de"
Set objSendMail = CreateObject("CDO.Message")
objSendMail.Subject = "Test"
objSendMail.From = "m.heinrich@krz.de"
objSendMail.To = "m.heinrich@krz.de"
objSendMail.HTMLBody = AddAttachment
objSendMail.send

'Schließe Worddukument
appWord.Quit wdSaveChanges

bei Antwort benachrichtigen
thomas woelfer aggroberlin „Es tut mir leid und ich weiß auch das ich anfange zu nerven, aber das...“
Optionen

1.) wie waere der versuch einfach mal in die offizielle documentation zu CDO.Message zu schauen ?

2.) AddAttachment ist eine methode des CDO.Message Objektes und erwartet als paramter den pfad zur datei. du muss also

o_bjectSendMail.AddAttachmen HierKommtDannderPfadInAnfuehrungszeichen

aufrufen.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
Alf 123 aggroberlin „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Siehe 1. Zeile

'Öffne Wörd-Anwendung

Könnte das der Fehler sein ?

mfG Alf
bei Antwort benachrichtigen
T-Rex Alf 123 „Siehe 1. Zeile Öffne Wörd-Anwendung Könnte das der Fehler sein ?“
Optionen

Nein, da es sich dabei um einen Kommentar handelt.
In der nachfolgenden Zeile wird Word geöffnet, und da ist es richtig geschrieben.

 GrüßeT-Rex 
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Ja, aber wie sende ich nun eine E-Mail aus Word?

bei Antwort benachrichtigen
T-Rex aggroberlin „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Ändere folgende Zeile:
'Öffne Word-Dokument
appWord.Documents.Open "C:\Dokumente und Einstellungen\b600806\Desktop\http.doc"

mal so ab:
'Öffne Word-Dokument
Dim wrdDoc
Set wrdDoc = appWord.Documents.Open("C:\Dokumente und Einstellungen\b600806\Desktop\http.doc")

Laut Hilfe kannst Du das Dokument so senden:
appWord.Options.SendMailAttach = True
Call wrdDoc.SendMail


Vergiß nicht, den Verweis wieder zu entfernen:
'Schließe Worddokument
Call wrdDoc.Close(-1)
Set wrdDoc = Nothing
Call appWord.Quit(-1)
Set appWord = Nothing

 GrüßeT-Rex 
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

"objSendMail.AddAttachmen HierKommtDannderPfadInAnfuehrungszeichen"
Es kommt die Fehlermeldung "Das Objekt ünterstützt diese Eigenschaft oder Methode nicht."
Ich habe mir die Doku angeschaut, zumindest das, was ich im inet gefunden habe. Ich werde da aber nicht schlau raus! Ich meine ich habe echt null vorkenntnisse und weil ich halt Azubi bin, heißt das für meine Vorgesetzten automatisch die Sachen wo Sie keine Lust zu haben oder was sie auch nicht können muss ich am besten bis gestern erledigt haben! Ich meine ich mache eine Ausbildung zum IT-Systemelektroniker und nicht zum Fachinformatiker! Oder nicht!

Quelltext thomas woelfer
'Öffne Wörd-Anwendung
Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True

'Öffne Word-Dokument
appWord.Documents.Open "C:\Dokumente und Einstellungen\b600806\Desktop\http.doc"

'öffne E-Mail und sende Sie Anschließend
emailHere = "m.heinrich@krz.de"
Set objSendMail = CreateObject("CDO.Message")
objSendMail.Subject = "Test"
objSendMail.From = "m.heinrich@krz.de"
objSendMail.To = "m.heinrich@krz.de"
objSendMail.AddAttachmen "C:\Dokumente und Einstellungen\b600806\Desktop\http.doc"
objSendMail.send

'Schließe Worddukument
appWord.Quit wdSaveChanges






T-Rex: Bei deinem Vorschlag kommt genau der gleiche Fehler :(

Quelltext T-Rex

'Öffne Word-Anwendung
Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True

'Öffne Word-Dokument
Dim wrdDoc
Set wrdDoc = appWord.Documents.Open("C:\Dokumente und Einstellungen\b600806\Desktop\http.doc")

'öffne E-Mail und sende Sie Anschließend
emailHere = "m.heinrich@krz.de"
Set objSendMail = CreateObject("CDO.Message")
objSendMail.Subject = "Test"
objSendMail.From = "m.heinrich@krz.de"
objSendMail.To = "m.heinrich@krz.de"
appWord.Options.SendMail = True
Call wrdDoc.SendMail

'Schließe Worddukument
Call wrdDoc.Close(-1)
Set wrdDoc = Nothing
Call appWord.Quit(-1)
Set appWord = Nothing

bei Antwort benachrichtigen
T-Rex aggroberlin „ objSendMail.AddAttachmen HierKommtDannderPfadInAnfuehrungszeichen Es kommt die...“
Optionen
'Öffne Word-Anwendung
Dim appWord
Set appWord = CreateObject("Word.Application")

appWord.WindowState = 0
appWord.Height = 600
appWord.Width = 800
appWord.Left = 40
appWord.Top = 20
appWord.Visible = True

'Öffne Word-Dokument
Dim wrdDoc
Set wrdDoc = appWord.Documents.Open("C:\Dokumente und Einstellungen\b600806\Desktop\http.doc")

appWord.Options.SendMail = True
Call wrdDoc.SendMail

'Schließe Worddukument
Call wrdDoc.Close(-1)
Set wrdDoc = Nothing
Call appWord.Quit(-1)
Set appWord = Nothing
 GrüßeT-Rex 
bei Antwort benachrichtigen
T-Rex Nachtrag zu: „ Öffne Word-Anwendung Dim appWord Set appWord CreateObject Word.Application...“
Optionen

Mist, es muß so heißen:
appWord.Options.SendMailAttach = True

 GrüßeT-Rex 
bei Antwort benachrichtigen
thomas woelfer aggroberlin „ objSendMail.AddAttachmen HierKommtDannderPfadInAnfuehrungszeichen Es kommt die...“
Optionen

nicht 'AddAttachmen'

sondern 'AddAttachment'

mit 't' am ende.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
thomas woelfer aggroberlin „ objSendMail.AddAttachmen HierKommtDannderPfadInAnfuehrungszeichen Es kommt die...“
Optionen
this posting contains no tpyos.
bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Aber so wie der Quelltext jetzt geschrieben ist, wird die entsprechende Word-Datei nur als Anlage gesendet. Es soll aber so sein, dass der Inhalt des Dokumentes versendet werden soll. Wie bei einen Newsletter, soll der Empfänger, nachdem er die E-Mail geöffnet hat den Inhalt des Word-Dokuments sofort lesen können und nicht erst die Anlage öffnen muss... . Unter Word gibt es ja die Möglichkeit unter dem Menüpunkt DATEI - SENDEN AN - E-MAIL-EMPFÄNGER (dafür Suche ich einen Quelltext).

Der Quelltext von dir T-REX bedeutet aber DATEI-SENDEN AN-E-Mail EPFÄNGER (ALS ANLAGE)

bei Antwort benachrichtigen
T-Rex aggroberlin „Aber so wie der Quelltext jetzt geschrieben ist, wird die entsprechende...“
Optionen

Wenn Du hier postest, darfst Du das Denken und Selbersuchen nicht einstellen. Also schau in die Hilfe!

appWord.Options.SendMailAttach = False

 GrüßeT-Rex 
bei Antwort benachrichtigen
thomas woelfer aggroberlin „Aber so wie der Quelltext jetzt geschrieben ist, wird die entsprechende...“
Optionen

... es ist _schwachsinnig_ und _gefaehrlich_ mails in dieser art zu versenden.

was du offensichtlich willst ist den inhalt des word-documents als html-mail zu versenden. das kann man machen, aber ich rate davon ab sowas zu versenden oder sowas anzunehmen. und sorry, aber dabei werde ich dich auch nicht unterstuetzen.

wenn es nur um den text geht, dann kannst du den text per o_bjectmodell aus ddem word document auslesen und an den body der cdo nachricht dranhaengen.

davon (vermute ich) das man auch einfach die mail-funktion verwenden kann die in word eingebaut ist - gehe davon aus das die per automation zu erreichen ist. wie, wird sich in der word-hilfe (im vba teil) finden.

und noch ein letzter hinweis: wenn du antworten schreibst, dann waere es _extrem_ sinnvoll wenn du nicht immer auf deine ursprüngliche frage antworten wuerdest, sondern auf den text (also das posting) auf das du dich beziehst. dann kann man auch ein brauchbares gespraech fuehren :-)

WM_L8R

this posting contains no tpyos.
bei Antwort benachrichtigen
aggroberlin thomas woelfer „sorry ... aber da helfe ich nicht“
Optionen

Das will ich mal klar stellen: Ich habe nicht vor Spambomben zu verschicken. Der Newsletter ist für unsere Kunden gedacht, die sich freiwillig in dem Newsletter eintragen und austragen können. Aber ich habe sowieso gerade in der Hilfe von VB gelesen, dass das Dokument entweder als Text oder als Anlage versendet werden kann. Ich muss mir also was neues einfallen lassen. Trotzdem Danke für deine Bemühungen.

Gruß Marco

bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Hallo noch mal

der Link war hilfreich ersteinmal zu verstehen, was CDO-Message genau ist.

CDO.Message
"Objekt von Windows 2000, das letzlich mit Hilfe des SMTP Dienstes die eMail verschickt"

Jetzt verstehe ich auch was du damit meintest, Add.Attechment ist ein Teil von CDO.Message

Also noch mal: Add.Attechment: Zum Versand von E-Mails mit einer Anlage?

bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Was meinst du mit "Schau in die Hilfe". Ich benutze Proton als VBS-Editor, da gibt es keine Hilfe. Kannst du mir einen anderen Editor empfehlen. Wenn ich das VBScript ausführe wird eine E-Mail in Outlook geöffnet und der Text ohne Format, Bilder,... in die E-Mail kopiert.

bei Antwort benachrichtigen
T-Rex aggroberlin „Was meinst du mit Schau in die Hilfe . Ich benutze Proton als VBS-Editor, da...“
Optionen
Was meinst du mit "Schau in die Hilfe"
Die Hilfe zu Word. Word hast Du ja offensichtlich installiert.
Drücke Alt+F11, dann landest Du in VBA. Da kannst Du Dir die Objekte anschauen und bekommst auch eine Hilfe angezeigt (sofern Du sie installiert hast).

BTW:
Wenn Du auf "Antwort kommentieren" clickst, bevor Du antwortest, kann man einen Diskussionsstrang besser verfolgen.
Wie Du aktuell siehst, sind Deine Fragen und die geposteten Antworten wild gemixed.
 GrüßeT-Rex 
bei Antwort benachrichtigen
Uli M aggroberlin „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Hallo Aggroberlin,

Du solltest dich zum einen entscheiden und zum anderen dein Anliegen möglichst präzise formulieren und auch verwendete Anwendungs-Versionen angeben.

Wenn du eine Datei als Anlage versenden willst, brauchst du sie nicht vorab zu öffnen (es sei denn, du willst da noch was erledigen).

Wenn du nur den (unformatierten) Text (ohne K&F-Zeilen etc.) haben willst, kannst du's z.B. so versuchen:
objSendMail.Body = wrdDoc.Content.Text

Wenn's eine HTML-Nachricht werden soll, wird die Datei wohl schon im *.htm-Format vorliegen müssen und der Quellcode, der der HTMLBody-Eigenschaft zugewiesen werden kann, muss anders eingelesen werden, z.B.:

Dim objFso
Dim objHtm
Dim strHTML
Const HTM_DATEI = "C:\Dokumente und Einstellungen\b600806\Desktop\http.htm"

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objHtm = objFso.OpenTextFile(HTM_DATEI, 1, False)
strHTML = objHtm.ReadAll
objHtm.Close
Set objHtm = Nothing
Set objFso = Nothing
' ...
objSendMail.HTMLBody = strHTML

Theortisch hättest du zwar die Möglichkeit, das *.doc also vorab entsprechend abzuspeichern, aber Bilder und sonst. Verweise weisen dann ebenfalls auf das Speicherverz.

Wenn du Word's SendMail-Methode einsetzen willst (was einen MAPI-fähigen E-Mail-Client voraussetzt), kannst du diese schlecht mit CDO-Message kombinieren. Wie du festgestellt haben wirst, musst du die Vervollständigungen im Nachrichtenfenster sowie den Versand selbst vornehmen.

Lassen wir mal dahin gestellt, dass es natürlich noch andere Wege gibt, Nachrichten zu versenden, was aber sowohl von Konstellationen als auch Anforderungen abhängt.

Gruß
Uli

bei Antwort benachrichtigen
aggroberlin Nachtrag zu: „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Hallo,

ok, ich versuche es jetzt noch mal auf den Punkt zu bringen. Ich habe 10 Word-Dokumente niedergeschrieben, die den Inhalt "Tipps und Tricks rund um Office" enthalten. Diese Word-Dokumente sollen nun terminiert (alle 2 Wochen) der Reihe nach verschickt werden. Also in der ersten Woche Dokument 1, in der zweiten Woche Dokument 2,... . Nun suche ich nach einer Möglichkeit diese Dokumente automatisch zu verschicken. Mein erster Ansatz war eine Newsletter-Software, wo ich jedoch keine geeignete Software finden konnte. Nun habe ich mir gedacht, ich erstelle ein VBScript, das folgender maßen ablaufen soll:

1. Öffne Word-Dokument
2. Sende es im HTML Format an E-Mail Empfänger
3. Schließe Worddokument.

Das VBScript wollte ich auf einen Server ablegen und über Windows automatisch verschicken lassen (Geplante Tasks).

Nun habe ich aber in der VB-Hilfe gelesen, dass man mit VB die E-Mail nur als Anlage oder Text verschicken kann. Sprich meine Träume sind zerstört :-)

Ich weiß auch, wie man eine htm-Datei über VB-Script verschickt. Doch in einem HTM-File werden die Bilder und Grafiken beim speichern automatisch neu ausgerichtet. Nach dem Versand der E-Mail werden

a) keine Bilder und Grafiken angezeigt und
b) wird Als Anlage der E-Mail eine Filelist mit gesendet, die mir den Speicherort der Grafiken und Bilder anzeigt.

Wenn euch noch ein Tipp einfällt dann wäre ich dankbar. Ich werde jetzt erstmal wieder in Richtung HTM-Datei versenden experimentieren.

bei Antwort benachrichtigen
Uli M aggroberlin „Mit einem VBScript eine Word-Datei öffnen“
Optionen

Hallo aggroberlin,

Wie ich sehe hast du einen Teil der Problematik zumindest erkannt.
Trotz des langeb Threads rückst du erst jetzt mit deinen eigentlichen Zielvorstellungen heraus - sei's drum, da ein turnusmäßig angestoßener Vorgang eine separate Geschichte ist und kein Thema, solange ein Einzelvorgang nicht reibungslos funktioniert.

Zu "E-Mail nur als Anlage oder Text":
HTML ist zunächst auch nichts anderes als Text - nur eben gepaart mit Anweisungen, die ein Interpretor wie z.B. ein Browser ausliest und umsetzt.
In einer Textdatei können aber keine Objekte eingebunden sein, sondern bestenfalls Verweise auf Speicherorte (relativ oder absolut), die einen Interpretor veranlassen, diese zu suchen, zu laden und darzustellen.
Dabei ist es unerheblich, wie der Interpretor an die Quelldatei kommt, also ob etwa lokale Datei, E-Mail, Website, ...

Du wirst dich jedenfalls von der Vorstellung lösen müssen, ohne weitere Vorkehrungen aus deinen Word-Dokumenten *.htm-Dateien erzeugen zu können (mit dann zunächst lokal gespeicherten "Bei-Dateien"), die ein bel. E-Mail-Empfänger dann so zu Gesicht bekommt, wie du's in deinem Word zuletzt gesehen hast.
Wenn's also unbedingt HTM sein soll, musst du das Zeug auf einem Webserver ablegen, auf den Dritte auch entsprechend Zugang haben und die Pfade zu den Bildern und sonst. Verweisen in deiner Quelldatei danach ausrichten.

Gruß
Uli

bei Antwort benachrichtigen