Supportnet / Forum / Tabellenkalkulation
von excel in word übertragen
Frage
Hallo Leute,
ich würde gerne die inhalte der Zellen D65, M69, M71, M67, D77, I77, D79, D81 im Tabellenblatt Eingabemaske mittels befehlsbutton in word übertragen Habs mit Makro aufzeichnen probiert, klappt aber irgendiwe nicht.
Kennt sich jmd vllt damit aus und kann mir weiterhelfen?
Vielen Dank und Grüsse
Marion
Antwort 1 von lleopard
Hallo Marion,
wenn du über Alt + F11 in den VBA-Editor gehst und dort den Button für Verweise suchst, dort unter Microsoft Word den entsprechenden Katalog auswählst, kannst du das Applikationsobjekt nutzen... folgende Funktion einbauen und einer Befehlsschaltfläche diese funktion zuweisen:
Function InsertWord()
Dim wrd As Word.Application
Dim doc1 As New Word.Document
Dim stg As String
'Zellen D65, M69, M71, M67, D77, I77, D79, D81
'Anders als |so| geht es net!
stg = Cells(65, 4) 'Erst die Zeile dann die Spalte (Row) und dann die Zeile (Column)
stg = stg & vbCrLf & Cells(69, 13)
stg = stg & vbCrLf & Cells(71, 13)
stg = stg & vbCrLf & Cells(77, 4)
stg = stg & vbCrLf & Cells(77, 9)
stg = stg & vbCrLf & Cells(79, 4)
stg = stg & vbCrLf & Cells(81, 4)
Set wrd = CreateObject("Word.Application")
With wrd
Randomize
.Visible = True
.Activate
With doc1
.Activate
.Content.Text = stg
.SaveAs "c:\test.doc"
.Close
End With
.Quit
End With
End Function
Das sollte gehen... oder du passt es deinen Bedürfnissen an.
Gruß leo
wenn du über Alt + F11 in den VBA-Editor gehst und dort den Button für Verweise suchst, dort unter Microsoft Word den entsprechenden Katalog auswählst, kannst du das Applikationsobjekt nutzen... folgende Funktion einbauen und einer Befehlsschaltfläche diese funktion zuweisen:
Function InsertWord()
Dim wrd As Word.Application
Dim doc1 As New Word.Document
Dim stg As String
'Zellen D65, M69, M71, M67, D77, I77, D79, D81
'Anders als |so| geht es net!
stg = Cells(65, 4) 'Erst die Zeile dann die Spalte (Row) und dann die Zeile (Column)
stg = stg & vbCrLf & Cells(69, 13)
stg = stg & vbCrLf & Cells(71, 13)
stg = stg & vbCrLf & Cells(77, 4)
stg = stg & vbCrLf & Cells(77, 9)
stg = stg & vbCrLf & Cells(79, 4)
stg = stg & vbCrLf & Cells(81, 4)
Set wrd = CreateObject("Word.Application")
With wrd
Randomize
.Visible = True
.Activate
With doc1
.Activate
.Content.Text = stg
.SaveAs "c:\test.doc"
.Close
End With
.Quit
End With
End Function
Das sollte gehen... oder du passt es deinen Bedürfnissen an.
Gruß leo
Antwort 2 von mmarion
Vielen Dank leo,
ich hab das jetzt hinbekommen, dass es funktioniert. Aber wie müsste ich es denn umschreiben, dass alles in einer zeile nebeneinander steht? Der soll Word auch offen lassen und nicht abspeichern. geht das?
vielen dank und grüsse
Marion
ich hab das jetzt hinbekommen, dass es funktioniert. Aber wie müsste ich es denn umschreiben, dass alles in einer zeile nebeneinander steht? Der soll Word auch offen lassen und nicht abspeichern. geht das?
vielen dank und grüsse
Marion
Antwort 3 von lleopard
Hallo Marion,
wenn du willst,
mußt du nur aus vbcrlf " " machen, also zB ein leerzeichen einfügen, oder ", " ein Komma einfügen... je nachdem was du willst.
Na dann nimmst du die Zeilen
.SaveAs "c:\test.doc"
.Close
.Quit
einfach raus!
Gruß Leo
wenn du willst,
Zitat:
dass alles in einer zeile nebeneinander steht
dass alles in einer zeile nebeneinander steht
mußt du nur aus vbcrlf " " machen, also zB ein leerzeichen einfügen, oder ", " ein Komma einfügen... je nachdem was du willst.
Zitat:
Der soll Word auch offen lassen und nicht abspeichern.
Der soll Word auch offen lassen und nicht abspeichern.
Na dann nimmst du die Zeilen
.SaveAs "c:\test.doc"
.Close
.Quit
einfach raus!
Gruß Leo
Antwort 4 von mmarion
Danke nochmal,
also wenn ich die änderungen so vornehme, macht excel word auf, ohne ein Blatt und ohne die Inhalte der Zellen einzufügen?
Gruss
Marion
also wenn ich die änderungen so vornehme, macht excel word auf, ohne ein Blatt und ohne die Inhalte der Zellen einzufügen?
Gruss
Marion
Antwort 5 von lleopard
Hi Marion,
Stimmt....
ändere das mal in
Function InsertWord()
On Error Resume Next
Dim wrd As Word.Application
Dim doc1 As New Word.Document
Dim stg As String
'Zellen D65, M69, M71, M67, D77, I77, D79, D81
'Anders als |so| geht es net!
stg = Cells(65, 4) 'Erst die Zeile dann die Spalte (Row) und dann die Zeile (Column)
stg = stg & vbCrLf & Cells(69, 13)
stg = stg & vbCrLf & Cells(71, 13)
stg = stg & vbCrLf & Cells(77, 4)
stg = stg & vbCrLf & Cells(77, 9)
stg = stg & vbCrLf & Cells(79, 4)
stg = stg & vbCrLf & Cells(81, 4)
Set wrd = CreateObject("Word.Application")
With wrd
Randomize
.Visible = True
.Activate
With doc1
.Activate
.Content.Text = stg
End With
End With
End Function
so funzt es bei mir. Ich denke da die Fehlerroutine nicht abgefangen wurde, konnte sich das Doc nur schließen.
Gruß Leo
Stimmt....
ändere das mal in
Function InsertWord()
On Error Resume Next
Dim wrd As Word.Application
Dim doc1 As New Word.Document
Dim stg As String
'Zellen D65, M69, M71, M67, D77, I77, D79, D81
'Anders als |so| geht es net!
stg = Cells(65, 4) 'Erst die Zeile dann die Spalte (Row) und dann die Zeile (Column)
stg = stg & vbCrLf & Cells(69, 13)
stg = stg & vbCrLf & Cells(71, 13)
stg = stg & vbCrLf & Cells(77, 4)
stg = stg & vbCrLf & Cells(77, 9)
stg = stg & vbCrLf & Cells(79, 4)
stg = stg & vbCrLf & Cells(81, 4)
Set wrd = CreateObject("Word.Application")
With wrd
Randomize
.Visible = True
.Activate
With doc1
.Activate
.Content.Text = stg
End With
End With
End Function
so funzt es bei mir. Ich denke da die Fehlerroutine nicht abgefangen wurde, konnte sich das Doc nur schließen.
Gruß Leo
Antwort 6 von mmarion
:-(
Bei mir geht das leider nicht, gleiche Probleme wie vorher...
Naja, trotzdem vielen Dank für deine Bemühungen
Gruss
Marion
Bei mir geht das leider nicht, gleiche Probleme wie vorher...
Naja, trotzdem vielen Dank für deine Bemühungen
Gruss
Marion
Antwort 7 von lleopard
Nicht gleich den Kopf hängen lassen, Marion,
es gibt noch viele Wege nach Rom.
Der einfachste ist das Doc-File doch temporär irgendwo im Temp-Ordner erstmal abzuspeichern. Das verhindert ja nicht es im nachhinein nochmal woanders zu speicher.
Und wenn du das partout nicht willst, kann man über API-Routinen Excel noch anweisen mit dem schließen zu warten bis du mit Word fertig bist... wie das geht, wenn du die andere Lösung definitif ablehnst.
Gruß Leo
es gibt noch viele Wege nach Rom.
Der einfachste ist das Doc-File doch temporär irgendwo im Temp-Ordner erstmal abzuspeichern. Das verhindert ja nicht es im nachhinein nochmal woanders zu speicher.
Und wenn du das partout nicht willst, kann man über API-Routinen Excel noch anweisen mit dem schließen zu warten bis du mit Word fertig bist... wie das geht, wenn du die andere Lösung definitif ablehnst.
Gruß Leo
Antwort 8 von mmarion
Hey Leo,
so hat jetzt endlich gefunzt :)
und zwar so:
Private Sub CommandButton1_Click()
Dim objWD As Word.Application
Dim objDOC As Word.Document
Dim stg As String
stg = Cells(65, 4)
stg = stg & " " & Cells(69, 13)
stg = stg & " " & Cells(71, 13)
stg = stg & " " & Cells(77, 4)
stg = stg & " " & Cells(77, 9)
stg = stg & " " & Cells(79, 4)
stg = stg & " " & Cells(81, 4)
Set objWD = CreateObject("Word.Application")
objWD.Visible = True
objWD.Activate
Set objDOC = objWD.Documents.Add
objDOC.Content.Text = stg
End Sub
Vielen Dank für deine Hilfe
Gruss Marion
so hat jetzt endlich gefunzt :)
und zwar so:
Private Sub CommandButton1_Click()
Dim objWD As Word.Application
Dim objDOC As Word.Document
Dim stg As String
stg = Cells(65, 4)
stg = stg & " " & Cells(69, 13)
stg = stg & " " & Cells(71, 13)
stg = stg & " " & Cells(77, 4)
stg = stg & " " & Cells(77, 9)
stg = stg & " " & Cells(79, 4)
stg = stg & " " & Cells(81, 4)
Set objWD = CreateObject("Word.Application")
objWD.Visible = True
objWD.Activate
Set objDOC = objWD.Documents.Add
objDOC.Content.Text = stg
End Sub
Vielen Dank für deine Hilfe
Gruss Marion