Microsoft Excel

Herbers Excel/VBA-Archiv

Zeilenweise Daten von Excel nach Word | Herbers Excel-Forum


Betrifft: Zeilenweise Daten von Excel nach Word von: Eddie
Geschrieben am: 19.01.2010 16:00:35

Hallo,

ich hätte da mal wieder eine Frage.
Ich will gerne Daten von Excel nach Word rüberkopieren.
Undzwar habe ich in der ersten Zeile 6 Zellen mit Inhalt.
Also A1 = Hallo B1 = 665 C1 = 21712432 .... u.s.w.
In der Zweiten Zeile hätte ich dann vielleicht nur 3 Zellen mit Inhalt ... also gibt es dafür kein festes Schema wie viel Inhalt in jeder Zelle ist!
Nun würde ich gerne vie Macro, das die Erste Zeile in Word auf einer Seite kopiert wird, anschließend wird die 2te Zeile auf die 2te Seite in Word kopiert u.s.w..
Das Macro sollte also schauen wie viele beschreibbare Zeilen es gibt, und dann diese Daten von Excel Nach Word Zeilen/Seitenweise dort einfügen.
Hätte vielleicht dort jemand ein paar gute Ideen oder Lösungen für mein Problem ?
Kann man auch gleich vielleicht den Word Text eine größere Schriftart und die Zentrierung mit integrieren ?

Danke schon einmal für eure Hilfe und Gruß

der Eddie

  

Betrifft: AW: Zeilenweise Daten von Excel nach Word von: Josef Ehrensberger
Geschrieben am: 19.01.2010 18:17:11

Hallo Eddie,

ein Beispiel.

Sub RangeToWord()
  Dim objWdApp As Object, objDoc As Object
  Dim rng As Range
  Dim strTmp As String
  Dim lngCol As Long, lngRow As Long, lngLast As Long
  
  Set objWdApp = CreateObject("Word.Application")
  Set objDoc = objWdApp.Documents.Add
  
  objWdApp.Visible = True
  
  With objDoc.Paragraphs.Format
    .Alignment = 1
    .Style.Font.Size = 20
    .Style.Font.Name = "Arial"
  End With
  
  With ActiveSheet
    lngLast = .Cells(Rows.Count, 1).End(xlUp).Row
    For lngRow = 1 To lngLast
      strTmp = ""
      If Application.CountA(.Rows(lngRow)) > 0 Then
        For lngCol = 1 To .Cells(lngRow, Columns.Count).End(xlToLeft).Column
          strTmp = strTmp & .Cells(lngRow, lngCol) & vbLf
        Next
      End If
      If Len(strTmp) Then
        strTmp = Left(strTmp, Len(strTmp) - 1)
        If lngRow > 1 Then
          objDoc.Range.InsertParagraphAfter
          objDoc.Paragraphs(objDoc.Paragraphs.Count).Range.InsertBreak Type:=7
        End If
        objDoc.Paragraphs(objDoc.Paragraphs.Count).Range.Text = strTmp
      End If
    Next
  End With
  
  Set objDoc = Nothing
  Set objWdApp = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Zeilenweise Daten von Excel nach Word von: Eddie
Geschrieben am: 20.01.2010 08:51:44

Guten Morgen Sepp,
also erst einmal Danke für dein Macro, aber leider geht das noch nicht so wie ich es mir vorgestellt hatte ;-(
Ich habe mal 2 Dateien hochgeladen, damit es vielleicht noch einmal verdeutlicht wird .
https://www.herber.de/bbs/user/67336.xls
https://www.herber.de/bbs/user/67337.doc
Also es soll jede Zeile in Excel auf einer eigenen Seite in Word dargestellt werden.
Was mir gestern noch einfiel, vielleicht kann man Word auch gleich dazu sagen, das er ein Querformat der Seite erstellen soll, und die Schriftgröße kann man ja erst einmal auf 12 wieder stellen.
Das mit dem Querformat hatte ich schon mal versucht ".Orientation = wdOrientLandscape" aber das klappte leider nicht :-(

Danke und Gruß
Eddie


  

Betrifft: AW: Zeilenweise Daten von Excel nach Word von: Josef Ehrensberger
Geschrieben am: 20.01.2010 13:12:16

Hallo Eddie,

"aber leider geht das noch nicht so wie ich es mir vorgestellt hatte ;-("

was funktioniert nicht?

Querformat und Schriftgröße hab ich eingestellt, aber bei manchen Zeilen passt nicht alles auf ein Blatt.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub RangeToWord()
  Dim objWdApp As Object, objDoc As Object
  Dim rng As Range
  Dim strTmp As String
  Dim lngCol As Long, lngRow As Long, lngLast As Long
  
  Set objWdApp = CreateObject("Word.Application")
  Set objDoc = objWdApp.Documents.Add
  
  objWdApp.Visible = True
  
  With objDoc.Paragraphs.Format
    .Alignment = 1
    .Style.Font.Size = 12
    .Style.Font.Name = "Arial"
  End With
  
  objDoc.PageSetup.Orientation = 1
  
  With ActiveSheet
    lngLast = .Cells(Rows.Count, 1).End(xlUp).Row
    For lngRow = 1 To lngLast
      strTmp = ""
      If Application.CountA(.Rows(lngRow)) > 0 Then
        For lngCol = 1 To .Cells(lngRow, Columns.Count).End(xlToLeft).Column
          strTmp = strTmp & .Cells(lngRow, lngCol) & vbLf
        Next
      End If
      If Len(strTmp) Then
        strTmp = Left(strTmp, Len(strTmp) - 1)
        If lngRow > 1 Then
          objDoc.Range.InsertParagraphAfter
          objDoc.Paragraphs(objDoc.Paragraphs.Count).Range.InsertBreak Type:=7
        End If
        objDoc.Paragraphs(objDoc.Paragraphs.Count).Range.Text = strTmp
      End If
    Next
  End With
  
  Set objDoc = Nothing
  Set objWdApp = Nothing
End Sub


Gruß Sepp



  

Betrifft: AW: Zeilenweise Daten von Excel nach Word von: Eddie
Geschrieben am: 20.01.2010 13:46:19

Hallo Sepp,

na da habe ich wohl wirklich etwas vergessen zu schreiben :-)

Also im Moment ist dein Makro nur so, das zwar alles nach Word rüberkopiert wird, aber eigentlich soll der Inhalt von zeile 1 auf Seite 1 in Word, der Inhalt der Zeile 2 auf Word Seite 2 u.s.w. ..... und im Moment ist es so, das alles untereinander und Zeilenweise in Word eingefügt wird, und es nicht immer eine neue Seite für eine neue Zele gibt.

Danke und Gruß

Eddie


  

Betrifft: AW: Zeilenweise Daten von Excel nach Word von: Josef Ehrensberger
Geschrieben am: 20.01.2010 13:59:42

Hallo Eddie,

also, ich kann es mit Word 2003 nicht testen, aber bei mir wird jede Zeile auf eine neue Seite geschrieben.


Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "Zeilenweise Daten von Excel nach Word"