Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variablen von Word nach Excel übergeben

Variablen von Word nach Excel übergeben
13.05.2008 15:04:00
Word
Hallo liebe Experten!
Ich habe ich Word verschiedene Texte (anhand von Textmarken) in Variablen gespeichert. Diese Variablen möchte ich nun in eine bestehende Excel-Datei einfügen. Dazu muss folgende passieren:
1. Word soll die Excel-Datei öffnen (C:\lieferscheinnummer.xls)
2. Word soll ein makro in Excel aufrufen, welches nach der letzten Zeile im Tabellenblatt (Liefer) sucht (dieses Makro habe ich schon und es funkioniert in Excel. Das Makro ist in Tabellenblatt "Liefer" gespeichert als "Sub letzteZeile()")
3. Excel soll dann den Text der Variablen z aus Word in die letzte Zeile schreiben (dazu muss ich wissen, wie ich von Excel aus auf die Variable z in Word zugreifen kann bzw. umgekehrt?.
Ich hoffe, mir kann jemand weiterhelfen. Auf jeden Fall schon einmal vielen Dank!
Lieben Gruß,
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen von Word nach Excel übergeben
14.05.2008 08:17:00
Word
Hallo Stefan,
die Variablen können nicht von einem Word- an ein Excelmaro übergeben werden.
Du kannst aber von Excel aus per VBA Informationen aus dem Worddokument auslesen oder auch von Word aus die Erforderlichen Änderungen per VBA im Exceldokument machen.
Die Konstante Pfad in den Makros muss du ggf. anpassen.
Gruß
Franz

Variante 1, Word startet das Excelmakro
'Wordmakro:
'im Word VBA-Editor muss der Verweis auf die Excel-Object Library aktiviert sein!
'Erstellt unter Word 97/ Excel 97
Sub TextmarkenNachExcel()
'Textmarkeninhalte in Excelblatt eintragen (mit Excel-Makro)
Dim objWbLiefer As Excel.Workbook, objwksLiefer As Excel.Worksheet
Dim strMakro As String
Dim objDoc As Word.Document
Const strPfad As String = "C:\Test"
Const strExceldatei As String = "Lieferscheinnummer.xls"
Const strExcelBlatt As String = "Liefer"
Set objDoc = ActiveDocument
'Exceldatei öffnen
Set objWbLiefer = Excel.Workbooks.Open(FileName:=strPfad & _
Application.PathSeparator & strExceldatei)
If objWbLiefer.ReadOnly = True Then
MsgBox "Die Datei " & strExceldatei & " ist von anderem Anwender geöffnet!" & vbLf _
& "Makro wird abgebrochen", vbOKOnly, "Textmarken nach " & strExceldatei
objWbLiefer.Close
Excel.Application.Quit
GoTo Beenden
End If
Application.WindowState = wdWindowStateMinimize
Excel.Application.Visible = True
Set objwksLiefer = objWbLiefer.Worksheets(strExcelBlatt)
'Makro in Excel starten, das auszufüllende Zelle selektiert und Daten übernimmt
strMakro = "LetzteZeile"
Excel.Application.Run objWbLiefer.Name & "!" & objwksLiefer.CodeName & "." & strMakro
'Exceldatei speichern und schließen
'objWbLiefer.Save
'Excel.Application.Quit
Beenden:
Set objWbLiefer = Nothing: Set objwksLiefer = Nothing: Set objZelle = Nothing
Set objDoc = Nothing
End Sub
'Excelmakros im Tabellenblatt:
'im Excel-VBA-Editor den Verweis auf die Miceosoft Word Objekt Library aktivieren!
'Erstellt unter Word 97/ Excel 97
Sub LetzteZeile()
MsgBox "Hallo Letzte Zeile"
Dim objWks As Worksheet
Set objWks = ThisWorkbook.Worksheets("Liefer")
With objWks
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
End With
Call Textmarkenholen(ActiveCell)
End Sub
Sub Textmarkenholen(objZelle As Range)
Dim wdDok As Word.Document
Set wdDok = Word.Application.ActiveDocument
With objZelle
.Value = wdDok.Bookmarks("Textmarke01").Range.Text
.Offset(0, 1).Value = wdDok.Bookmarks("Textmarke02").Range.Text
End With
End Sub
'Variante 2:Alle erforderlichen Einträge im Excelblatt werden von Word aus gemacht
Sub TextmarkenNachExcel_Variante()
'Textmarkeninhalte in Excelblatt eintragen (ohne Excel-Makro)
Dim objWbLiefer As Excel.Workbook, objwksLiefer As Excel.Worksheet
Dim objZelle As Excel.Range
Dim objDoc As Word.Document
Const strPfad As String = "C:\Test"
Const strExceldatei As String = "Lieferscheinnummer.xls"
Const strExcelBlatt As String = "Liefer"
Set objDoc = ActiveDocument
'Exceldatei öffnen
Set objWbLiefer = Excel.Workbooks.Open(FileName:=strPfad & _
Application.PathSeparator & strExceldatei)
'Prüfen, ob Datei schreibgeschützt geöffnet wurde
If objWbLiefer.ReadOnly = True Then
MsgBox "Die Datei " & strExceldatei & " ist von anderem Anwender geöffnet!" & vbLf _
& "Makro wird abgebrochen", vbOKOnly, "Textmarken nach " & strExceldatei
objWbLiefer.Close
Excel.Application.Quit
GoTo Beenden
End If
Application.WindowState = wdWindowStateMinimize
Excel.Application.Visible = True
Set objwksLiefer = objWbLiefer.Worksheets(strExcelBlatt)
'auszufüllende Zelle im Blatt Liefer suchen (nächste frei Zelle in Spalte A)
Set objZelle = objwksLiefer.Cells(LetzteZeile(objwksLiefer, 1), 1).Offset(1, 0)
'Zeile mit Textmarken-Inhalten auffüllen
With objZelle
.Value = objDoc.Bookmarks("Textmarke01").Range.Text
.Offset(0, 1).Value = objDoc.Bookmarks("Textmarke02").Range.Text
End With
Beenden:
Set objWbLiefer = Nothing: Set objwksLiefer = Nothing: Set objZelle = Nothing
Set objDoc = Nothing
End Sub
Function LetzteZeile(objWks As Excel.Worksheet, lngSpalte As Long) As Long
'Letzte Zelle mit Daten in Spalte der Tabelle
With objWks
If IsEmpty(.Cells(.Rows.Count, lngSpalte)) Then
LetzteZeile = .Cells(.Rows.Count, lngSpalte).End(xlUp).Row
Else
LetzteZeile = .Rows.Count
End If
End With
End Function


Anzeige
AW: Vielen Dank für die ausführliche Anwort:-)
14.05.2008 12:56:00
stefanseevetal
Hallo Franz,
vielen Dank für die ausführliche Antwort und den ganzen Code. Echt Klasse! Werde das gleich mal ausprobieren!
Gruß, Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige