Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA neue Arbeitsmappe erzeugen

VBA neue Arbeitsmappe erzeugen
11.07.2014 00:50:43
Uwe
Hallo,
habe folgendes Problem
Meine Arbeitsmappe "Ursprung" hat 123 Register
In Tabelle1 stehen Daten, welche für Tabellen 3 bis 123 notwendig sind.
In Tabelle2 Spalte B Zeile 6 bis 126 stehen die 120 Namen der Tabellen 3 bis 123.
Die Zellen der Tabellen 3 bis 123 werden über SVERWEIS individuell mit Daten aus Tabelle1 versorgt.
Ich benötige ein Makro, welches x neue Arbeitsmappen erzeugt.
Z.B. heißt in "Ursprung" die 3. Tabelle Messung1.
Die neue Arbeitsmappe soll Messung1.XLS heißen.
In der neuen Arbeitsmappe Messung1.XLS soll dann wiederum
die Tabelle "Messung1" aus "Ursprung" stehen.
Aber nur mit den Ergebnissen aus den SVERWEISEN,
keine Bezüge nach "Ursprung", Schriftfuß etc. soll aber bleiben.
Weil nicht immer alle Arbeitsmappen erzeugt werden sollen,
muss in "Ursprung" "Tabelle2" in Spalte C Zeile 6 bis 126
mit x die zu erzeugende Arbeitsmappe angewählt werden.
Die neuen Arbeitsmappen sollen im gleichen Verzeichnis von "Ursprung" abgelegt werden.
Falls eine neu zu erzeugende Arbeitsmappe bereits existiert,
soll eine MSG-Box zum überschreiben Ja / Nein kommen.
Habe versucht aus einzelnen Beiträge mir etwas zusammenzubauen, bin aber gescheitert.
Vielen Dank für eure Hilfe
mit freundlichen Grüßen
Uwe

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA neue Arbeitsmappe erzeugen
11.07.2014 07:53:34
Martin
Hallo Uwe,
ich hoffe, dass ich alles korrekt verstanden habe:
Sub WorkbookExport()
Dim i As Integer
Dim wbkOpen As Workbook
Dim strFileName As String
With ThisWorkbook
For i = 6 To 126
If .Worksheets(2).Cells(i, 3) = "x" Then
'Dateiname von Tabellenblatt
strFileName = .Worksheets(i - 3).Name & ".xls"
'Dateien mit dem Namen schließen
For Each wbkOpen In Workbooks
If wbkOpen.Name = strFileName Then
wbkOpen.Close SaveChanges:=False
Exit For
End If
Next
'Tabelle kopieren
.Worksheets(i - 3).Copy
'Formels durch Werte ersetzen
With ActiveSheet.UsedRange
.Cells = .Cells.Value
End With
'neue Arbeitsmappe speichern
On Error Resume Next
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & strFileName
On Error GoTo 0
'falls neue Datei geschlossen werden soll
'ActiveWorkbook.Close
End If
Next i
End With
End Sub
Viele Grüße
Martin

Anzeige
AW: VBA neue Arbeitsmappe erzeugen
11.07.2014 08:27:24
Uwe
Hallo Martin,
das Makro "Export" funktioniert einwandfrei.
vielen Dank.
Eine Sache habe ich noch vergessen:
In Arbeitsmappe "Ursprung" befindet sich ein Makro mit dem Namen "Makro1"
dieses Makro wird auch in den neuen Arbeitsmappen benötigt.
Kannst Du mir bitte Dein Makro entsprechend erweitern?
nochmals vielen Dank
Uwe

Anzeige
AW: VBA neue Arbeitsmappe erzeugen
11.07.2014 09:17:41
Martin
Hallo Uwe,
bitte wechsle in den VBA-Editor (Alt+F11) und exportiere das Modul mit dem benötigten Makro1. Anschließend passt du in folgendem Makro noch den Dateipfad zu dem exportierten Modul an (Zeile strImportModul = "c:\..."):
Sub WorkbookExport()
Dim i As Integer
Dim wbkOpen As Workbook
Dim strFileName As String
Dim strImportModul As String
'Dateipfad für Makromodul anpassen
strImportModul = "C:\Programme\Microsoft Office\OFFICE11\Modul1.bas"
With ThisWorkbook
For i = 6 To 126
If .Worksheets(2).Cells(i, 3) = "x" Then
'Dateiname von Tabellenblatt
strFileName = .Worksheets(i - 3).Name & ".xls"
'Dateien mit dem Namen schließen
For Each wbkOpen In Workbooks
If wbkOpen.Name = strFileName Then
wbkOpen.Close SaveChanges:=False
Exit For
End If
Next
'Tabelle kopieren
.Worksheets(i - 3).Copy
ActiveWorkbook.VBProject.VBComponents.Import (strImportModul)
'Formeln durch Werte ersetzen
With ActiveSheet.UsedRange
.Cells = .Cells.Value
End With
'neue Arbeitsmappe speichern
On Error Resume Next
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & strFileName
On Error GoTo 0
'falls neue Datei geschlossen werden soll
'ActiveWorkbook.Close
End If
Next i
End With
End Sub
Viele Grüße
Martin

Anzeige
AW: VBA neue Arbeitsmappe erzeugen
11.07.2014 12:30:15
Uwe
Hallo Martin
habe Dich nicht verstanden.
Das Makro steht doch in "Ursprung"
anbei meine Datei
https://www.herber.de/bbs/user/91472.xlsm
Die neuen Dateien sollen nur Makro1 und natürlich das Register enthalten.
mfG
Uwe

Anzeige
AW: VBA neue Arbeitsmappe erzeugen
11.07.2014 14:00:32
Martin
Hallo Uwe,
du hattest geschrieben:

In Arbeitsmappe "Ursprung" befindet sich ein Makro mit dem Namen "Makro1"
Du sollst einmalig das Modul mit dem darin enthaltenen Makro in eine externe Datei exportieren:
Userbild
Das von mir geschriebene Makro soll dein Makro1 dann immer aus der exportierten bas-Datei in die jeweils neu angelegte Arbeitsmappe importieren.
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige