VBA / ausgewählte Zellen aus Excel-Tabelle per Knopfdruck in Word-Datei einfügen
Hallo,
aus einer excel-datei werden z.B. in der zeile 2 das feld a,c und d markiert.
diese zellen werden dann in eine word-datei in eine tabelle (3 spalten, 8 zeilen) geschrieben:
Sub Aufkleber()
Dim r_Liste As Range
Dim r_Felder As Range
Dim r_Datensatz As Range
Dim word As Object
Dim int_AnzFelder As Integer
Dim int_Spalte As Integer
Dim str_Adresse As String
'Die Liste beginnt bei Zelle A1 und ist zusammenhängend
Set r_Liste = Range("a1").CurrentRegion
'In der ersten Zeile stehen die Spaltenüberschriften
Set r_Felder = r_Liste.Rows(1)
'Es wird die Anzahl der Felder festgehalten
int_AnzFelder = r_Felder.Columns.Count
'Dann wird der ausgewählte Datensatz ermittelt
Set r_Datensatz = Application.Intersect(r_Liste, ActiveCell.EntireRow)
''Dieser Datensatz wird zu einem gesamtstring zusammengesetzt
'For int_Spalte = 1 To int_AnzFelder
' str_Adresse = str_Adresse & r_Datensatz.Cells(int_Spalte) & vbCr
'Next
'Dieser Datensatz wird zu einem gesamtstring zusammengesetzt
For int_Spalte = 1 To int_AnzFelder
Select Case int_Spalte
Case 1, 3, 4 ' Wenn es die 1., 3. oder 4. Spalte ist, wird hinzugefügt
str_Adresse = str_Adresse & r_Datensatz.Cells(int_Spalte) & vbCr
Case Else ' andernfalls nicht
End Select
Next
'Wenn ein Datensatz ausgewählt worden ist
If Not r_Datensatz Is Nothing Then
'wird Word gestartet
Set word = CreateObject("Word.Application")
'sichtbar gemacht ( kann evtl. entfallen!)
word.Visible = True
'und ein neues Dokument auf der Basis der Vorlage Adressaufkleber.dot erstellt
word.Documents.Add Template:="G:\EDV\GP\Aufkleber.dot"
'In diesem neuen Dokument
With word.ActiveDocument
'wird in alle Tabellenzelle der zusammengesetzte String eingefügt
For Each c In .Tables(1).Range.Cells
c.Range.Text = str_Adresse
Next
'Am Schluss wird das ganze ausgedruckt
.PrintOut
End With
'Dann wird Word beendet (ohne Speichern, bei Bedarf auch mit)
word.Quit
Set word = Nothing
Else
MsgBox "Kein Datensatz ausgewählt!"
End If
End Sub
was ich jetzt noch bräuchte wäre erst einmal ein button damit das makro startet und eine eingabemaske für ein Anzahlfeld um anzugeben wieviele zellen in der word datei beschrieben werden.
aus einer excel-datei werden z.B. in der zeile 2 das feld a,c und d markiert.
diese zellen werden dann in eine word-datei in eine tabelle (3 spalten, 8 zeilen) geschrieben:
Sub Aufkleber()
Dim r_Liste As Range
Dim r_Felder As Range
Dim r_Datensatz As Range
Dim word As Object
Dim int_AnzFelder As Integer
Dim int_Spalte As Integer
Dim str_Adresse As String
'Die Liste beginnt bei Zelle A1 und ist zusammenhängend
Set r_Liste = Range("a1").CurrentRegion
'In der ersten Zeile stehen die Spaltenüberschriften
Set r_Felder = r_Liste.Rows(1)
'Es wird die Anzahl der Felder festgehalten
int_AnzFelder = r_Felder.Columns.Count
'Dann wird der ausgewählte Datensatz ermittelt
Set r_Datensatz = Application.Intersect(r_Liste, ActiveCell.EntireRow)
''Dieser Datensatz wird zu einem gesamtstring zusammengesetzt
'For int_Spalte = 1 To int_AnzFelder
' str_Adresse = str_Adresse & r_Datensatz.Cells(int_Spalte) & vbCr
'Next
'Dieser Datensatz wird zu einem gesamtstring zusammengesetzt
For int_Spalte = 1 To int_AnzFelder
Select Case int_Spalte
Case 1, 3, 4 ' Wenn es die 1., 3. oder 4. Spalte ist, wird hinzugefügt
str_Adresse = str_Adresse & r_Datensatz.Cells(int_Spalte) & vbCr
Case Else ' andernfalls nicht
End Select
Next
'Wenn ein Datensatz ausgewählt worden ist
If Not r_Datensatz Is Nothing Then
'wird Word gestartet
Set word = CreateObject("Word.Application")
'sichtbar gemacht ( kann evtl. entfallen!)
word.Visible = True
'und ein neues Dokument auf der Basis der Vorlage Adressaufkleber.dot erstellt
word.Documents.Add Template:="G:\EDV\GP\Aufkleber.dot"
'In diesem neuen Dokument
With word.ActiveDocument
'wird in alle Tabellenzelle der zusammengesetzte String eingefügt
For Each c In .Tables(1).Range.Cells
c.Range.Text = str_Adresse
Next
'Am Schluss wird das ganze ausgedruckt
.PrintOut
End With
'Dann wird Word beendet (ohne Speichern, bei Bedarf auch mit)
word.Quit
Set word = Nothing
Else
MsgBox "Kein Datensatz ausgewählt!"
End If
End Sub
was ich jetzt noch bräuchte wäre erst einmal ein button damit das makro startet und eine eingabemaske für ein Anzahlfeld um anzugeben wieviele zellen in der word datei beschrieben werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38560
Url: https://administrator.de/contentid/38560
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
1 Kommentar
Für den Button:
Wähle im Menü: Extras -> Anpassen
Dort dann im Reiter Befehle links Makros auswählen. Dann das Symbol "Benutzerdefinierte Schaltfläche" einfach auf eine Symbolleiste ziehen.
Mit Rechtsklick auf das Symbols kannst Du anschließend ganz unten unter "Makro zuweisen" das Makro auswählen was beim anklicken gestartet werden soll. Weiter kann man auch beim Rechtsklick auf das Symbol ein anderes Zeichen auswählen, bearbeiten oder Text mit anzeigen lassen.
Für die Eingabe:
Schau mal in der Hilfe vom vba die "InputBox" an.
miniversum
Wähle im Menü: Extras -> Anpassen
Dort dann im Reiter Befehle links Makros auswählen. Dann das Symbol "Benutzerdefinierte Schaltfläche" einfach auf eine Symbolleiste ziehen.
Mit Rechtsklick auf das Symbols kannst Du anschließend ganz unten unter "Makro zuweisen" das Makro auswählen was beim anklicken gestartet werden soll. Weiter kann man auch beim Rechtsklick auf das Symbol ein anderes Zeichen auswählen, bearbeiten oder Text mit anzeigen lassen.
Für die Eingabe:
Schau mal in der Hilfe vom vba die "InputBox" an.
miniversum