Supportnet Computer
Planet of Tech

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

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

Antwort 3 von lleopard

Hallo Marion,

wenn du willst,

Zitat:
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.


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

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

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: