Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

hilfe...

hilfe...
11.08.2013 11:39:37
Frank
Hallo @all , da mein Beitrag unter den anderen versunken ist, starte ich hier ein neuen Thread in der Hoffnung das man mir hilft. Zusätzlich lade ich die TabellenMappe hoch.
Gerd L aus diesem Forum, hat mir bereits geholfen, sodass dieses Makro wie folgt arbeitet. Es gibt eine Kenndaten Tabelle und ein Muster. Pro Reihe der KenndatenTabelle wird ein neues gefülltes Muster erstellt und auf den selben Ordner abgelegt wie die TabellenMappe. Nun Existiert das Problem das pro Reihe nicht immer das selbe Muster gefüllt werden sollen, sondern es immer verschiedene für die Reihe existieren. Das heisst für die jeweilige Reihe soll das zugehörige Muster gefüllt werden(um welches Muster es sich handelt steht ebenfalls in der KenndatenTabelle).
Desweiterin möchte ich das man für einzelne Muster noch festlegt, wie man bestimmte Cellen aus _ der KenndatenTabelle in bestimmte Muster einfügt(das entscheide ich dann selbst)....(nicht wundern die anderen Mustter sind noch nich fertig gestellt)

Sub Schaltfläche2_KlickenSieAuf()
Dim rn As Range
Dim i   As Long
Dim ws  As Worksheet
Dim wsRM As Worksheet
Dim strDatei As String
Dim btn As Button
Set wsRM = ThisWorkbook.Worksheets("Rechnung")
Set rn = ThisWorkbook.Worksheets("Kenndaten").UsedRange
Application.ScreenUpdating = False
For i = 2 To rn.Rows.Count
strDatei = Dir(ThisWorkbook.Path & "\" & rn.Cells(i, 1).Value & ".xls*")
If strDatei  "" Then
Workbooks.Open (ThisWorkbook.Path & "\" & strDatei)
Set ws = ActiveWorkbook.Worksheets(rn.Cells(i, 1).Value)
Else
wsRM.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set ws = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ws.Name = rn.Cells(i, 1).Value
End If
rn.Rows(i).Columns("$B:$J").Copy
ws.Range("A21").PasteSpecial
Application.CutCopyMode = False
For Each btn In ws.Buttons
btn.Delete
Next btn
If ActiveWorkbook Is ThisWorkbook Then
ws.Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Name & ".xls."
End If
ActiveWorkbook.Close True
Next i
Application.ScreenUpdating = True
Set wsRM = Nothing: Set ws = Nothing: Set rn = Nothing
End Sub

Hier die Datei
https://www.herber.de/bbs/user/86794.xlsm
Hoffe auf Hilfe, Vielen Dank!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: hilfe...
11.08.2013 11:44:49
Frank
Die enthaltenen Daten sind frei erfunden...nichts entspricht der Wahrheit, das ist alles eine TestMappe.

AW: hilfe...
11.08.2013 13:25:50
fcs
Hallo Frank,
das Rechnungsmuster kannst du in der For-Next-Schleife über den Wert in Spalte G variabel setzen.
In einer Select-Case-Konstruktion legst du dann die individuellen Anweisungen fr die verschiedenen Muste fest.
Achte aber darauf, dass die Namen der Musterblätter in der Liste und auf den Registern identisch geschrieben sind. In deiner Beispieldatei war mehrfach in der Liste oder in einem Register ein Leerzeichen am Ende des Eintrags, was dann zu einem Makrofehler führte.
Gruß
Franz
Sub Schaltfläche2_KlickenSieAuf()
Dim rn As Range
Dim i   As Long
Dim ws  As Worksheet
Dim wsRM As Worksheet, strRM As String
Dim strDatei As String
Dim btn As Button
Set rn = ThisWorkbook.Worksheets("Kenndaten").UsedRange
Application.ScreenUpdating = False
For i = 2 To rn.Rows.Count
strDatei = Dir(ThisWorkbook.Path & "\" & rn.Cells(i, 1).Value & ".xls*")
strRM = rn.Cells(i, 7).Text
'Rechnungsmuster gemäß Name in Spalte G setzen
Set wsRM = ThisWorkbook.Worksheets(strRM)
If strDatei  "" Then
Workbooks.Open (ThisWorkbook.Path & "\" & strDatei)
Set ws = ActiveWorkbook.Worksheets(rn.Cells(i, 1).Value)
Else
wsRM.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set ws = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ws.Name = rn.Cells(i, 1).Value
End If
Select Case strRM
Case "Rechnung"
rn.Rows(i).Columns("$B:$J").Copy
ws.Range("A21").PasteSpecial
Application.CutCopyMode = False
Case "Rechnung 2"
rn.Rows(i).Columns("$B:$J").Copy
ws.Range("A21").PasteSpecial
Application.CutCopyMode = False
Case "Rechnung 3"
rn.Rows(i).Columns("$B:$J").Copy
ws.Range("A21").PasteSpecial
Application.CutCopyMode = False
Case Else
If MsgBox("Für Rechnungsmuster """ & strRM & " fehlt noch eine Case-Anweisung im  _
Makro", _
vbOKCancel + vbInformation, _
"Makro: Schaltfläche2_KlickenSieAuf") = vbCancel Then Exit For
End Select
For Each btn In ws.Buttons
btn.Delete
Next btn
If ActiveWorkbook Is ThisWorkbook Then
'        ws.Copy 'erstelltes Rechnungsblatt in neue Arbeitsmappe kopieren
ws.Move 'erstelltes Rechnungsblatt in neue Arbeitsmappe verschieben
With ThisWorkbook
ActiveWorkbook.SaveAs Filename:=.Path & "\" & ActiveSheet.Name, _
FileFormat:=IIf(.FileFormat = 52, 51, .FileFormat)
End With
End If
ActiveWorkbook.Close True
Next i
Application.ScreenUpdating = True
Set wsRM = Nothing: Set ws = Nothing: Set rn = Nothing
End Sub

Anzeige
AW: hilfe...
11.08.2013 13:52:43
Frank
Hallo Franz , danke für die Hilfe. Hab es ausprobiert, es erscheint direkt ein Laufindex Fehler und diese Zeile wird gelbd makiert
Set wsRM = ThisWorkbook.Worksheets(strRM)

AW: hilfe...
11.08.2013 13:57:02
Frank
Sorry, es klappt doch wunderbar Franz. Ich schaue mir das mal genauer an bei etwaigen Fragen melde ich mich wieder. Vielen großen Dank schonmal!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige