Microsoft Excel

Herbers Excel/VBA-Archiv

String Variable/ Inhalt in Word übertragen | Herbers Excel-Forum


Betrifft: String Variable/ Inhalt in Word übertragen von: drKnilch
Geschrieben am: 12.01.2012 09:29:12

Hallo,

ich bin dabei ein Programm zu schreiben, dass ich Zelleninhalte (Text) in ein Worddokument übertragen lassen kann.

Hier mal der Code:

  • Public Sub Worddaten()
    
    ...
    
        Dim strData As String
        Dim objWord As Object
        Application.DisplayAlerts = False       'Fehlermeldungen ausgeblendet
        
        ZeileDOC = ZeileDOC - 1
        Worksheets("Daten für Word").Range(Cells(1, 1), Cells(ZeileDOC, 2)).Select
        strData = Selection                           ' "Typen unverträglich"
       
        Set objWord = CreateObject("Word.Application")
       
        objWord.documents.Open "Z:\Markus\Touch-Panel Verknüpft.docm"
       
        objWord.Visible = True            'Word wird angezeigt
    
        With objWord                                                                                 _
         ' Fügt die Daten in die Textmarke ein
          If .ActiveDocument.Bookmarks.Exists("Exceldaten") Then
            .ActiveDocument.Bookmarks("Exceldaten").Range.Text = strData
          End If
        End With
       
        objWord.ActiveDocument.SaveAs "Z:\XY\Touchpanel" & Date & ".docm"
    
        objWord.Quit
    
        Set objWord = Nothing
        Application.DisplayAlerts = True          'Fehlermeldungen eingeblenden
    
    
    
    End Sub



  • In der Zeile "strData = Selection" spuckt´s mir ein Laufzeitfehler 13: Typen unverträglich aus. Was stimmt hier nicht? Evtl. Variablen Typ falsch??

    Wie kann ich das Programm den noch so ändern, dass es mir nicht Tabellen mit Inhalt, sondern nur den Inhalt (im Tabellenformat) überträgt.

    Wäre super, wenn mir jemand weiterhelfen könnte!!

    besten Dank,
    Knilch

      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: Luschi
    Geschrieben am: 12.01.2012 09:59:43

    Hallo Knilch,

    versuch es mal so:

    ZeileDOC = ZeileDOC - 1
    Dim rg1 As Range, rg2 As Range, n As Long
    With Worksheets("Daten für Word")
       Set rg1 = .Range(.Cells(1, 1), .Cells(ZeileDOC, 2))
       strData = ""
       For Each rg2 In rg1
           strData = rg2.Value & vbCrLf
       Next rg2
    End With
    Set rg1 = Nothing
    n = Len(strData)
    'letzten Zeilenwechsel löschen
    'vbCrLf enthält 2 Steuerzeichen (13 und 10)
    strData = Left(strData, n - 2)
    Gruß von Luschi
    aus klein-Paris


      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: drKnilch
    Geschrieben am: 12.01.2012 10:41:53

    Hm, also das Programm läuft jetzt zumindest mal fehlerfrei- DANKE

    Problem ist jetzt nur, dass nur ein Inhhalt (Cells(ZeileDOC,2)) übertragen wird. Es soll aber der gesamte Bereich (Cells(1, 1), Cells(ZeileDOC, 2)) übertragen werden.

    Leider kenn ich mich jetzt mit dem Code nicht aus und kann ihn nicht selber ändern :-/

    aktuell sieht´s so aus:


  • Public Sub Worddaten()
    
    ...
    
    
    'Daten übertragen:
    
    
        Dim strData As String
        Dim objWord As Object
        Application.DisplayAlerts = False       
        
        ZeileDOC = ZeileDOC - 1
        Dim rg1 As Range, rg2 As Range, n As Long
            With Worksheets("Daten für Word")
                Set rg1 = .Range(.Cells(2, 1), .Cells(ZeileDOC, 2))
                strData = ""
                For Each rg2 In rg1
                strData = rg2.Value & vbCrLf
                Next rg2
            End With
        Set rg1 = Nothing
        n = Len(strData)
            'letzten Zeilenwechsel löschen
            'vbCrLf enthält 2 Steuerzeichen (13 und 10)
        strData = Left(strData, n - 2)
       
        Set objWord = CreateObject("Word.Application")
       
        objWord.documents.Open "Z:\Markus\Touch-Panel Verknüpft.docm"
       
        objWord.Visible = True
    
        With objWord                                 'Fügt die Daten in die Textmarke ein
          If .ActiveDocument.Bookmarks.Exists("Exceldaten") Then
            .ActiveDocument.Bookmarks("Exceldaten").Range.Text = strData
          End If
        End With
       
        objWord.ActiveDocument.SaveAs "Z:\Markus\Touchpanel" & Date & ".docm"
    
        'objWord.Quit
    
        Set objWord = Nothing
        Application.DisplayAlerts = True    
    
    
    End Sub



  •   

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: Luschi
    Geschrieben am: 12.01.2012 11:24:31

    Hallo Knilch,

    sorry..., aber ich hatte gerade meine Brille nicht geputzt.
    Bei dieser Definition: Set rg1 = .Range(.Cells(1, 1), .Cells(ZeileDOC, 2))
    werden ja Spalte 'A' und 'B' durchlaufen im Zeilenbereich 1 bis ZeileDOC
    Wie willst Du die Werte von A?? und B?? in der Word-Datei sehen: nebeneinander mit Trennzeichen
    oder untereinander mit Zeilenwechsel?

    fragt sich Luschi
    aus klein-Paris


      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: drKnilch
    Geschrieben am: 12.01.2012 11:53:56

    Wenn ich manuell die Daten aus Excel kopiere und in Word einfügen gibt es ja mehrere Möglichkeiten, das zu tun:
    Mit "Tabellenstrichen", durchgehender Text, oder eben in urspünglicher Formatierung- diese will ich.
    Also in Tabellenoptik, ohne Striche. So soll das aussehen:
    (Bei dem kleinen Kreuz wird eingefügt)




      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: drKnilch
    Geschrieben am: 12.01.2012 12:54:14

    Eigentlich geht´s jetzt hauptsächlich darum, wie ich ALLE Zellen übertrage und nicht nur die unten links.
    Das sollte dan aber in der richtigen Formatierung sein ;-)

    besten Dank!


      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: Luschi
    Geschrieben am: 12.01.2012 13:10:37

    Hallo Knilch,

    beim Übertragen von Exceldaten nach Word/Powerpoint (PP) mache ich das so:
    - Excel-Bereich, der kopiert werden soll, per Vba in eine Grafik umwandeln
    - in die Word/PP-Textmarke diese Grafik kopieren
    - in Word/PP die Textmarke ein bischen formatieren (Größe usw.).

    Es gibt also keine direkte Verbindung von Excel nach Winword/PP.
    Und bei Datenänderungen muß das Makro neu gestartet werden.
    Damit sind Daten-Veränderungen aber fast ausgeschlossen...
    So ist Excel einfach 'Klasse'! und der Export nach Word/Powerpoint einfach unproblematisch!
    Und bei Datenänderungen in der Excel_Datei laufen die Excel-Makros blitzeschnell.

    Gruß von Luschi
    aus klein-Paris


      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: drKnilch
    Geschrieben am: 12.01.2012 13:47:20

    Wenn Word bei Datenänderungen nicht aktuell ist, macht das nichts.

    Schlussendlich ist es mir aber egal, wie der Datenaustausch funktioniert. Wenn ich es dann allerdings in Word weiterverarbeiten kann, wär´s mir recht- Wird bei einer Grafik warscheinlich nicht funktionieren?!

    Also: Die Übertragung funktioniert ja schon. Nur eben nicht der ganze Bereich.
    Wie ändere ich das denn?

    besten Dank und Grüße aus dem Allgäu


      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: fcs
    Geschrieben am: 12.01.2012 18:30:36

    Hallo Knilch,

    mit folgenden Anpassungen sollte das Kopieren des Bereiches nach Word funktionieren.

    Gruß
    Franz

    Public Sub Worddaten()
    
        Dim ZeileDOC As Long  'testzeile
        ZeileDOC = 4          'testzeile
    '    ...
    
    
    'Daten übertragen:
    
    
        Dim objWord As Object
        Application.DisplayAlerts = False
        
        ZeileDOC = ZeileDOC - 1
        Dim rg1 As Range
            With Worksheets("Daten für Word")
                Set rg1 = .Range(.Cells(2, 1), .Cells(ZeileDOC, 2))
                rg1.Copy
            End With
        Set objWord = CreateObject("Word.Application")
       
        objWord.documents.Open "Z:\Markus\Touch-Panel Verknüpft.docm"
       
        objWord.Visible = True
    
        With objWord                                 'Fügt die Daten in die Textmarke ein
          .Activate
          If .ActiveDocument.Bookmarks.Exists("Exceldaten") Then
            .Selection.GoTo What:=-1, Name:="Exceldaten" '-1 = wdGoToBookmark
            .Selection.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=True
          End If
        End With
       
        objWord.ActiveDocument.SaveAs "Z:\Markus\Touchpanel" & Date & ".docm"
    
        'objWord.Quit
        
        Application.CutCopyMode = False
        Set objWord = Nothing
        Set rg1 = Nothing
        Application.DisplayAlerts = True
    
    
    End Sub
    



      

    Betrifft: AW: String Variable/ Inhalt in Word übertragen von: drKnilch
    Geschrieben am: 16.01.2012 07:43:03

    Super! Vielen Dank, Franz. Es läuft genau so, wie ich es wollte :-)

    Vielen, vielen Dank!!


    Beiträge aus den Excel-Beispielen zum Thema "String Variable/ Inhalt in Word übertragen"