November 25, 2020, 09:08:36

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Bereich aus Excel Sheet mit VBA auf Word kopieren.

Begonnen von Carlos_C, September 21, 2014, 21:45:27

⏪ vorheriges - nächstes ⏩

Carlos_C

Guten Abend liebes Forum,

ich habe eine Frage bzgl. Einfügen von einer Excel Tabelle in Word.

Also, ich habe ein Excel Sheet, die ich per Knopfdruck auf Word exportieren möchte.

Das Sheet besteht aus dem Bereich C2:HX. Mit HX meine ich, dass die Länge des Sheets variabel ist.

Wenn ich z.B. den Bereich C2:H37 auf Word kopieren möchte, kann ich folgenden Code benutzen:

Private Sub CommandButton1_Click()
Dim wd As Object
Range("C2:H37").Copy
Set wd = CreateObject("word.application")
wd.documents.Add
wd.Visible = True
wd.activedocument.Range.Paste
End Sub

Den Code habe ich beim googeln gefunden. Funktioniert im Prinzip sehr gut! Damit habe ich aber leider mein Problem noch nicht gelöst. Warum?

1.   Die Tabelle (oder der eingefügte Bereich) ist bei Word breiter als das Word Blatt und muss angepasst werden (also rechte Maustaste auf das Plus Zeichen oben links bei Word, dann auf ,,AutoAnpassen" klicken, dann auf ,,Größe an Fenster anpassen" klicken) und die Spaltenbreiten müssen auch angepasst werden, damit die Tabelle ordentlich aussieht. Das kann ich alles manuell machen, möchte aber, dass VBA sich darum kümmert.
2.   Wie am Anfang erwähnt, ist die Länge der Tabelle variabel. Der Code kopiert den Bereich C2:H37, die Länge kann aber zwischen H9 und H-undendlich sein. Die Tabelle ist so lang, wie die letzte ausgefüllte Zelle in der Spalte C. Also, in diesem Fall ist der letzte Wert in der Spalte C genau in der Zelle C37 und deshalb ist der Bereich C2:H37.

Also, zusammengefasst, der Code, denn ich suche, soll folgendes machen (Beispiel: die letze ausgefüllte Zelle der Spalte C ist die Zelle C80):

1.   Bestimme die letzte ausgefüllte Zelle der Spalte C (Antwort: C80).
2.   Bestimme den zu kopierenden Bereich (Antwort: C2:H80).
3.   Kopiere den Bereich auf Word.
4.   Größe der Tabelle bei Word an Fenster anpassen.
5.   Breite der Spalte C bei Word anpassen (Z.B.: 1 cm).
6.   Breite der Spalte D bei Word anpassen (Z.B.: 6 cm).

Ist das alles mit VBA machbar?

Ich freue mich auf jeden Vorschlag!

Liebe Grüße,

Carlos
Gruß,

Carlos

Carlos_C

Guten Morgen, liebes Forum,

könnte mir jemand mit diesem Thema helfen? Ich wäre dafür sehr dankbar.

LG,

Carlos
Gruß,

Carlos

Sebi

Hallo,

zu 1. ja das geht
Public Sub letzte_zeile_1()
'Hier wird die letzte Zeile ermittelt
'Egal in welcher Spalte sich die letzte Zeile befindet
'Es werden alle Spalten geprüft und die letzte Zeile ausgegeben
letztezeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
MsgBox letztezeile
End Sub


zu 2. ja das geht auch, die Range kannst du ja dann als Variable übergeben.
zu 3. das hattest du ja gepostet.
zu 4-6 ist jetzt die Frage ob man das zuerst in Excel anpasst vor dem Export oder im Nachgang in Word.
Eingefügte Exceltabellen in Word sind m.W. in Word via VBA nicht ansprechbar.

Liebe Grüße Sebi

ebs17

September 26, 2014, 11:13:12 #3 Letzte Bearbeitung: September 26, 2014, 13:13:39 von ebs17
Als Ansatz:
Private Sub CommandButton1_Click()
    Dim oWrd As Object
    Dim oDoc As Object

    With ActiveSheet
        .Range(.Cells(2, 3), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 8 )).Copy
    End With
   
    Set oWrd = CreateObject("Word.Application")
    Set oDoc = oWrd.Documents.Add
    oWrd.Visible = True
    oDoc.Range.Paste
   
    With oDoc.Tables(1)
        .Columns.AutoFit
    End With
   
End Sub


Durch das Einfügen wird die Tabelle zur Wordtabelle und muss dann entsprechend angesprochen werden.

Innerhalb der Wordtabelle sind Zeilen, Spalten sowie Zellen referenzierbar und somit dann auch änderbar. Ein Blick in die VBA-Hilfe von Word sowie in den Objektkatalog (Taste F2 aus VBA-Editor) zeigen da mögliche Methoden und Eigenschaften.
Mit freundlichem Glück Auf!

Eberhard

Sebi

Hallo,

danke für den Tip mit einer Umwandlung in eine Word Tabelle, daran hatte ich gar nicht gedacht.

lg Sebi
Liebe Grüße Sebi

Carlos_C

Super! Vielen Dank Sebi und ebs17 für Eure Antworten! Ich werde das heute testen und über das Ergebnis berichten.

Nochmal vielen Dank, Leute!

LG

Carlos
Gruß,

Carlos

Carlos_C

Hallo Leute! Ich habe damals vergessen zu sagen, dass ich es getestet hatte, und es super funktioniert hat. Danke vielmals!
Gruß,

Carlos