PDA

Vollständige Version anzeigen : jeweils 10 Zeilen


Skadie
25.05.2013, 08:30
Hiho zusammen,

ich bin mich nach einiger Zeit wider am einarbeiten ins VBA um mir in der Arbeit etwas zu erleichtern.

Es geht um Folgendes:

Wir haben ein Blatt gefüllt mit Daten (variabel lang) und daraus müssen wir Berichte erstellen. Der Bericht sitzt in einem Word Dokument, das aus verschiedenen Tabellen elementen erstellt ist.
Pro Word Dok können jeweils 10 Zeilen bearbeitet werden.
Dh zur zeit sieht das ganze so aus das wir von hand jeweils 10 zeilen in das dokument kopieren, Dokname ändern und dann ausdrucken, dies gibt immer wider Probleme da der Mitarbeiter bei x100 daten auch mal verrutschen kann. Ich möcht des gerne per Vba lösen, hab auch schon meine word tabelle mit Textmarks versehen das ich das richtige anspringen kann.
jetz zu meiner frage kann ich das irgendwie so schleifenartig aufbauen dass der mir in excel immer jeweils die nächsten 10 zeilen kopiert, dann zelle A1 und J1 in den Speichernamen einbaut, speichert und dann das nächste dok macht?


Grüssle Skadie

hary
25.05.2013, 08:58
Moin
Das mit den Zehner schritten geht so. Wenn der Bereich ab Zeile2 startet.
Dim zehn As Long
'von Zeile2 bis letzte belegte in SpalteA immer Zehnerspruenge
For zehn = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 10
Cells(zehn, 1).Resize(10, 3).Select 'SpalteA(1) bis SpalteC(3)Select als Test
Next
Beim anderen muss ich passen, da ich nix mit Word am Hut habe.
Vlt. hilt es trotzdem weiter.
gruss hary

Gerhard H
25.05.2013, 16:45
Hallo zusammen,

den Word-Teil kann ich beitragen:

Du brauchst das Dokument, dessen Name du bisher immer änderst, als Vorlage (je nach Version also *.dot oder *.dotx).

In meinem Beispiel heißt die Vorlage bericht.dot und enthält die Textmarke "tabelle" zum Einfügen für je einen zehnerblock aus Harys Makro.

Excelmappe und bericht.dot kommen in den gleichen Ordner. Dorthinein werden auch die erzeugten Dokumente gespeichert. Der Dateiname setzt sich zusammen aus: Der Zählvariable "zehn" aus Harys Teil, und den Werten aus A1 und C1.

Sub zehnzeilenweise()
Dim zehn As Long
Dim wordinstanz As Object, neuesdok As Object
Dim datei As String

datei = ThisWorkbook.Path & "\bericht.dot"

On Error GoTo fehler
Set wordinstanz = CreateObject("Word.Application")
wordinstanz.Visible = True

'von Zeile2 bis letzte belegte in SpalteA immer Zehnerspruenge
For zehn = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 10
Cells(zehn, 1).Resize(10, 3).Select 'SpalteA(1) bis SpalteC(3)Select als Test
Selection.Copy

'nach Word übertragen
Set neuesdok = wordinstanz.documents.Add(template:=datei)
neuesdok.bookmarks("tabelle").Select
wordinstanz.Selection.Paste

'speichern und schließen
neuesdok.SaveAs Filename:=ThisWorkbook.Path & "\" & zehn & "_" & _
Cells(1, 1).Value & Cells(1, 3).Value & ".doc"
neuesdok.Close

Set neuesdok = Nothing
Next
wordinstanz.Quit
Set wordinstanz = Nothing
Exit Sub

fehler:
MsgBox Err.Number & " - " & Err.Description
Set wordinstanz = Nothing
Set neuesdok = Nothing
End Sub

Ich häng mal Beispielmappe und Beispiel-Worddokument an.

Skadie
01.06.2013, 14:53
hiho,

danke viel mal es bedarf noch der ein oder anderen anpassung aber du/ihr habt mir doch schon sehr viel weiter geholfen!

danke danke danke =)