Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel und Word verknüpft - auch andersherum?

Excel und Word verknüpft - auch andersherum?
16.06.2006 11:48:53
Beechmartn
Hallo und guten Tag zusammen,
kurz vorab:
Ist mein Problem überhaupt lösbar? Wenn, dann reicht wahrscheinlich sogar ein kleiner Hinweis, nach welchen Stichwörtern ich in diesem Zusammenhang suchen muss.
Zur Verdeutlichung:
Ich habe eine kleine "Bürohilfe" in Excel realisiert - Adressdaten in Excel gespeichert, auf diese greife ich per Serienbrief zu. Auf diese Art und Weise schreibe ich meine Rechnungen recht komfortabel, brauche nur noch Rechnungsnummer und Rechnungsbetrag netto von Hand in die Word-Datei eingeben. Eine eingebettete Excel-Tabelle rechnet mir im Word-Rechnungsformular sogar den USt-Betrag aus und addiert alles zum Gesamtrechnungsbetrag.
Schön wäre jetzt das Sahnehäubchen: wenn ich die in der Word-Rechnung sich aktuell ergebenden Daten (Rechnungsnummer, Rechnungsbetrag netto, Rechnungsbetrag brutto) automatisiert in eine weitere Excel-Tabelle eintragen lassen könnte.
Also wenn das mit Excel geht - wie geht das?
Vielen Dank an alle schon jetzt!
Beechmartn

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel und Word verknüpft - auch andersherum?
16.06.2006 23:44:55
EtoPHG
Hallo Beechmartn,
Hier ist ein kleines Beispiel.
Im gleichen Verzeichnis wie das Worddokument muss eine Exceldatei mit Namen "WordRechnungen.xls" existieren. Diesen Namen kannst Du im WordMakro des Button ändern.
Das Makro liest die Textmarken "InvoiceNr" (Rechnungsnummer) "NetAmount" (NettoBetrag) und "GrossAmount" (BruttoBetrag) in die nächste freie Zeile der Spalte A,B,C in der Exceldatei.
https://www.herber.de/bbs/user/34437.doc
Ist es das, was Du Dir vorstellst ?
Gruss Hansueli
AW: Excel und Word verknüpft - auch andersherum?
18.06.2006 22:39:59
Beechmartn
Hallo Hansueli,
Danke für Deinen Link. Ich bin ihm gefolgt und so wie ich den Button in Word gesehen habe, dachte ich "yeah, das ist es!". Es scheint tatsächlich das zu sein, was ich suche, denn Du schreibst ja, daß es mir die Beträge in die nächste freie Spalte A,B,C der Excel-Datei einträgt.
Knackpunkt: es funktioniert bei mir (noch) nicht. Ich habe die Word-Datei und eine Excel-Datei mit dem von Dir genannten Namen im selben Ordner. Als es mit der reinen, leeren Excel-Arbeitmappe nicht ging, bin ich auf die Idee gekommen, in der ersten freien Zeile A1 B1 und C1 die Bezeichnungen InvoiceNr, NetAmount und GrossAmount einzutragen und fett zu formatieren, aber es geht immer noch nicht.
Magst Du mir nochmal helfen und mir sagen, was ich evtl. noch beachten oder ändern muss?
Meine Excel-Arbeitsmappe besteht standardmäßig aus drei Tabellenblättern, beide Dateien - Worddatei mit Namen 34437.doc und Exceldatei mit Namen WordRechnungen.xls - liegen im selben Ordner.
Ich weiß bis jetzt erst, daß ich mir in Excel den VBA-Code anzeigen lassen kann. Das hab ich in Word nun auch versucht und war mit Alt+F11 erfolgreich. Auf der linken Seite bekomme ich dann den Namen der Word-Datei als Projektnamen angezeigt. Klicke ich das an und danach auf "Code anzeigen", habe ich in einem großen Fenster viel Code, wahrscheinlich VBA.
Beim Durchlesen des Code finde ich in einer Zeile >MsgBox "Rechnungdaten wurden gespeichert"<, und dabei fällt mir auf, daß ich - wenn ich in Word den Button anklicke, gar keine Message Box (dafür steht doch die Abkürzung MsgBox?) zur Bestätigung erhalte... hätte ich also mit dem Word-Dokument noch was machen müssen? Auf bestimmte Art öffnen?
Ich würde mich freuen, wenn Du mir weiterhin hilfst! Vielen Dank schon jetzt, an Dich und auch an alle anderen, die vielleicht noch auf den Beitrag antworten.
Beechmartn
Anzeige
AW: Excel und Word verknüpft - auch andersherum?
18.06.2006 23:17:54
Beechmartn
Hallo Hansueli,
eine meiner Fragen hat sich erledigt: das Makro funktioniert bestens! Ich hab herausgefunden, daß es an den Sicherheitseinstellungen lag, habe diese runtergesetzt und nun geht es einwandfrei.
Bei einigen Testeinträgen in die Test-Exceldatei ist mir jedoch aufgefallen, daß die vom Makro eingetragenen Zahlen markiert sind mit dem Hinweis, daß Excel sie als Text gespeichert hat.
Das ist doof - denn eigentlich wollte ich damit weiterrechnen, um am Ende eine Gesamtsumme zu erhalten.
Liegt das am VBA-Code? Ich hab versucht, die Excel-Zellen als Währung mit dem Euro-Zeichen und zwei Dezimalstellen zu formatieren, aber es nützt nichts...
Und jetzt, wo ich "Lunte gerochen" habe und mir die Sache richtig Spaß zu machen beginnt: wie und wo muss ich das Makro (den VBA-Code?) ändern, um nicht nur die drei Werte, sondern vielleicht noch mehr eintragen zu lassen?
Grüße vom begeisterten
Beechmartn
Anzeige
AW: Excel und Word verknüpft - auch andersherum?
19.06.2006 14:36:38
EtoPHG
Hallo Beechmartn,
Hier 2 kleine Änderungen:
Im Word-Makro: Dokumentiert, was die Befehle bedeuten, bzw. wie Du zusätzliche einfügen kannst. Zusätzlich werden die Zellen jeweils formatiert.
https://www.herber.de/bbs/user/34465.doc
Im Excel-File: Nach dem Schreiben mit Word sind die Daten komischerweise nicht formatiert. Ein Workbook_Open und eine Worksheet_activate Routine schaffen Abhilfe. Ich kann mir aber noch nicht genau erklären, warum das so ist. Habe im Moment wenig Zeit.

Die Datei https://www.herber.de/bbs/user/34466.xls wurde aus Datenschutzgründen gelöscht

Gruss Hansueli
Anzeige
Nachtrag:Exceldatei speichern unter..
19.06.2006 21:29:06
EtoPHG
Hallo Beechmartn,
Vergass vorher zu erwähnen, die Exceldatei musst Du wieder als WordRechnungen.xls speichern , damit das Word-Makro sie findet.
Gruss Hansueli
AW: Nachtrag:Exceldatei speichern unter..
20.06.2006 23:01:42
Beechmartn
Hallo Hansueli,
die neue Version des Makros funktioniert soweit gut - bis auf daß sie keine Nachkomma-Beträge zuläßt. Der Betrag im Word z. B. 430,40 wird in die Excel-Tabelle mit 430,00 eingetragen... Nun versteh ich nix von VBA, hab mir aber mal den extra für mich (Danke!) kommentierten Code angeschaut und finde folgenden Code-Schnipsel:
NumberFormat = "#,##0.00 [$€-407] - kann es daran liegen? wenn ich das richtig verstehe, sagt der Eintrag 0.00 nur was über das Format, also im Sinne von "berücksichtige bitte zwei Nachkomma-Stellen", stimmt meine Vermutung? Die Klammer dahinter [$€ ... ] sagt Excel vielleicht, daß die Zelle mit dem Währungszeichen € formatiert werden soll - aber was zum Geier bedeutet die Zahl 407??
Und wofür ist der Eintrag ("InvoiceNr") etc. gedacht? Ich finde dazu keinen Bezug - die Spaltenüberschriften in Excel sind ja Deutsch und heißt "RechnungsNr" etc. Wofür braucht VBA diese Angabe "InvoiceNr"?
Und zu noch einem Codeschnipsel hab ich eine Frage: wofür steht "Words(1)" ? Die reine Übersetzung "Worte" bringt mich nicht weiter - es handelt sich doch um Zahlen, die hier eingetragen werden sollen!?
In der Visual Basic-Hilfe finde ich unter dem Stichwort "Words" eine Art Flowchart, bei dem ich die einzelnen beschrifteten Balken anklicken kann - daraus ergibt sich für mich nur, daß es vielleicht um die Bezeichnung des Programms Microsoft Word gehen könnte... Fragen über Fragen!
Heute habe ich übrigens mein erstes Buch über VBA bestellt... Ich fürchte, ich hab den VBA-Virus *gg* Bis mein bestelltes Werk angekommen ist (und ich erhebe auch nicht den Anspruch, damit in absehbarer Zeit so gut zu werden wie Du!) hoffe ich, daß Du noch ein wenig Geduld mit mir hast und mir meine Fragen beantworten magst.
Dir einen schönen Abend!
Beechmartn
Anzeige
AW: Nachtrag:Exceldatei speichern unter..
20.06.2006 23:44:27
EtoPHG
Hallo Beechmartn,
Also, ich muss Dir gratulieren. Für einen Anfänger legst Du die Finger gleich auf die wunden Punkte. Ich muss zugeben ich hab einige Erfahrung in VBA (v.a. in Excel, weniger in Word). Das Makro hab ich wirklich nur schnell hingeschluddert. Am letzten Wort im letzten Satz erkennst Du vielleicht, das ich Schweizer bin. Nun das ist schon das erste Problem, wir schreiben die Kommastellen mit einem Punkt abgetrennt, statt einem Komma. Zweites Problem ich arbeite mit englischen Office-Versionen.
Dritte Schwachstelle .Words(1) ist natürlich Stumpfsinn, der Befehl liest nur das erste Wort aus der Textmarke und das sind halt die Zahlen bis zum Punkt oder Komma und nicht weiter. Fazit: Ersetze das Makro in Word mit folgendem Code, dann könnte es hinhauen.

Private Sub cbSaveToExcel_Click()
Dim Excel As Object
Dim bOpenOK As Boolean
Dim sFileName As String
sFileName = "WordRechnungen.xls"        ' Name der Exceldatei
Set Excel = CreateObject("Excel.Application")
Excel.Visible = False
On Error GoTo Error_open
Excel.Workbooks.Open ThisDocument.Path & "\" & sFileName
On Error GoTo Error_other
bOpenOK = True
With Excel
'      Hier werden der Reihe nach Textmarken in die entsprechenden ExcelSpalten geschrieben.
'       [.Offset(1,0) bzw. nach füllen .Offset(0,0)] entspricht der ersten freien Zelle in Spalte A (von unten)
.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0).Value = Left(ThisDocument.Bookmarks("InvoiceNr").Range.Text, Len(ThisDocument.Bookmarks("InvoiceNr").Range.Text) - 2)
.Worksheets(1).Range("A65536").End(xlUp).Offset(0, 0).NumberFormat = "0"
'       [.Offset(0,1)] entspricht Spalte B
.Worksheets(1).Range("A65536").End(xlUp).Offset(0, 1).Value = Left(ThisDocument.Bookmarks("NetAmount").Range.Text, Len(ThisDocument.Bookmarks("NetAmount").Range.Text) - 2)
.Worksheets(1).Range("A65536").End(xlUp).Offset(0, 1).NumberFormat = "#'##0,00 [$€-407]"
'       [.Offset(0,2)] entspricht Spalte C
.Worksheets(1).Range("A65536").End(xlUp).Offset(0, 2).Value = Left(ThisDocument.Bookmarks("GrossAmount").Range.Text, Len(ThisDocument.Bookmarks("GrossAmount").Range.Text) - 2)
.Worksheets(1).Range("A65536").End(xlUp).Offset(0, 2).NumberFormat = "#'##0,00 [$€-407]"
'      usw. z.B. [.Offset(0,10)] Spalte J
'       Sichern der ExcelTabelle und Excel schliessen
.ActiveWorkbook.Close SAVECHANGES:=bOpenOK
.Quit
End With
Set Excel = Nothing
MsgBox "Rechnungdaten wurden gespeichert", vbInformation + vbOKOnly, "In EXCEL speichern"
Exit Sub
Error_open:
MsgBox "Fehler im Open:" & sFileName & " !", vbCritical + vbOKOnly, "Excel-Datei öffnen"
Set Excel = Nothing
Exit Sub
Error_other:
MsgBox "Anderer Fehler !", vbCritical + vbOKOnly, "Excel-Datei bearbeiten"
Set Excel = Nothing
Exit Sub
End Sub

Du siehst, ich habe die .Range auf den ganzen Text der Textmarke erweitert. Allerdings werden dann CRLF angehängt und mit Left...-2 wieder abgeschnitten. Die Formate der Zellen sind ebenfalls angepasst. Spiel mit diesen herum, d.h. schau in Excel, wie das Format genau lautet (Format Zelle) und setze diese als String in das Makro.
Noch ein Tipp zu den Eigenschaften [wie .Words(1)] : Im VBA-Editor mit dem Cursor auf eine solche Stelle fahren und dann F1 drücken. Da bekommst Du nicht eine Übersetzung sondern eine ausführliche Hilfe über den Befehl, die Eigenschaft oder die Methode.
Weiterhin happy VBA learning.
Gruss Hansueli
Anzeige
AW: Befehlserklärung
20.06.2006 23:58:03
EtoPHG
Nochmals hallo,
Hab ja gar nicht all Deine Fragen beantwortet.
Das Makro ist ein bisschen komplizierter als ein reines Excel- oder Word-Makro. Am besten erkläre ich Dir das am Befehl

.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0).Value = Left(ThisDocument.Bookmarks("InvoiceNr").Range.Text, Len(ThisDocument.Bookmarks("InvoiceNr").Range.Text) - 2)

Der 1. Teil (vor dem Gleichheitszeichen) ist ein EXCEL VBA Befehl: Fülle die erste freie Zelle in Spalte A mit
2. Teil (nach dem Gleichheitszeichen) ist ein WORD VBA Befehl: Nimm den Inhalt der TEXTMARKE InvoiceNr, schneide die letzen 2 Stellen ab.
Diese Textmarken findest Du, wenn Du in der Worddatei über das Menu Einfügen Textmarke Gehe zu.
Bei den Formaten siehe vorherige Antwort... d.h. in Excel schauen.
Gruss Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige