Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

mit VBA eine neue Datei erzeugen und daten rein ko

mit VBA eine neue Datei erzeugen und daten rein ko
29.04.2015 14:01:21
Jappe
Hallo Forum Gemeinde,
ich benötige mal wieder Hife bei einem VBA Problem.
Ich habe eine fertige Berechnung über ein Makro in Excel. Verschiedene User können einige Parameter (Zeitraum, PIN) - siehe Beispiel - selber ändern.
Dann möchte diese Berechnung in eine neue Datei als Werte kopieren, dann soll der User den Pfad und den Dateiname angeben können und abspeichern. Danach soll die Datei geschlossen werden und die Ursprungsdatei wieder aktiviert werden.
Ich hoffe mir kann dabei jemand helfen. Meine Versuche sind kläglich gescheitert.
Beispiel Datei: https://www.herber.de/bbs/user/97362.xlsx
Danke
Henning

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

Betreff
Datum
Anwender
Anzeige
AW: mit VBA eine neue Datei erzeugen und daten rein ko
29.04.2015 17:52:59
fcs
Hallo Henning,
hier 2 Makro-Varianten.
Gruß
Franz
Sub Berechnung_Copy_and_Save()
'einzelnes Berechnungs-Blatt in neue Datei kopieren
Dim varDatei
'Blatt mit Berechnung in neue Datei kopieren
ActiveWorkbook.Sheets("Tabelle1").Copy
'in Kopie in allen Blättern Formeln durch Werte ersetzen
With ActiveWorkbook.Worksheets(1).UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
Range("B1").Select
'Kopie speichern
With Application.FileDialog(msoFileDialogSaveAs)
.ButtonName = "Auswählen"
.Title = "Datei speichern - Bitte Dateiname eingeben/auswählen"
.FilterIndex = 1
'      .InitialFileName = "Berechnung" & Format(Now, "_YYYYMMDD_hhmmss") & ".xlsx"
.InitialFileName = "Berechnung_neu" & ".xlsx"
If .Show = -1 Then
varDatei = .SelectedItems(1)
ActiveWorkbook.SaveAs Filename:=varDatei, FileFormat:=51, addtomru:=True
ActiveWorkbook.Close savechanges:=False
End If
End With
End Sub
Sub Berechnung_Copy_and_Save_2()
'Komplette Datei unter neuem Namen speichern und Formeln entfernen
Dim varDatei, wks As Worksheet
Dim varDatei_Temp, wkbCopy As Workbook
With Application.FileDialog(msoFileDialogSaveAs)
.ButtonName = "Auswählen"
.Title = "Berechnung speichern - Bitte Dateiname eingeben/auswählen"
.FilterIndex = 1
'      .InitialFileName = "Berechnung" & Format(Now, "_YYYYMMDD_hhmmss") & ".xlsx"
.InitialFileName = "Berechnung_neu" & ".xlsx"
If .Show = -1 Then
varDatei = .SelectedItems(1)
Else
Exit Sub
End If
End With
'temporäre Kopie speichern
With ActiveWorkbook
varDatei_Temp = .Path & "\tmp" & .Name
.SaveCopyAs varDatei_Temp
End With
'temporäre Datei öffnen
Set wkbCopy = Application.Workbooks.Open(Filename:=varDatei_Temp)
'in Kopie in allen Blättern Formeln durch Werte ersetzen
For Each wks In wkbCopy.Worksheets
With wks.UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
wks.Activate
Range("B1").Select
Next
wkbCopy.Sheets(1).Activate
'Berechnungs-Datei unter neuem Namen speichern
Application.DisplayAlerts = False 'vermeidet Rückfrage wegen Makros
wkbCopy.SaveAs Filename:=varDatei, FileFormat:=51, addtomru:=True
wkbCopy.Close savechanges:=False
Application.DisplayAlerts = True
'temporäre Datei wieder löschen
VBA.Kill varDatei_Temp
End Sub

Anzeige
AW: mit VBA eine neue Datei erzeugen und daten rein ko
30.04.2015 09:24:55
Jappe
Hallo Franz,
das sieht ja wirklich super aus, nur habe ich jetzt ein kleines Problem.
Die Quelle hat einen Blattschutz, den ich wärhrend des Makrolaufes abschalte und zum Schluß wieder einschalte, mit
Worksheets("Berechnung").Protect Password:="test", DrawingObjects:=True
Jetzt hat das neue Sheet auch den Blattschutz, kann man das umgehen?
Viele Grüße
Henning

AW: mit VBA eine neue Datei erzeugen und daten rein ko
30.04.2015 11:29:59
fcs
Hallo Henning,
einfach nach dem Kopieren des Blattes in die neue Datei den Blattschutz des kopierten Blatts aufheben.
Gruß
Franz
Sub Berechnung_Copy_and_Save()
'einzelnes Berechnungs-Blatt in neue Datei kopieren
Dim varDatei
'Blatt mit Berechnung in neue Datei kopieren
ActiveWorkbook.Sheets("Berechnung").Copy
'in Kopie in allen Blättern Formeln durch Werte ersetzen
With ActiveWorkbook.Worksheets(1)
.Unprotect Password:="test" 'Blattschutz aufheben - Passwort ggf. anpassen
With .UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End With
Range("B1").Select
'Kopie speichern
With Application.FileDialog(msoFileDialogSaveAs)
.ButtonName = "Auswählen"
.Title = "Datei speichern - Bitte Dateiname eingeben/auswählen"
.FilterIndex = 1
'      .InitialFileName = "Berechnung" & Format(Now, "_YYYYMMDD_hhmmss") & ".xlsx"
.InitialFileName = "Berechnung_neu" & ".xlsx"
If .Show = -1 Then
varDatei = .SelectedItems(1)
ActiveWorkbook.SaveAs Filename:=varDatei, FileFormat:=51, addtomru:=True
ActiveWorkbook.Close savechanges:=False
End If
End With
End Sub
in der Variante 2, in der die ganze Datei kopiert wird eine zusätzliche Zeile einbauen.
    'in Kopie in allen Blättern Formeln durch Werte ersetzen
For Each wks In wkbCopy.Worksheets
wks.Unprotect Password:="test" 'Blattschutz aufheben - Passwort ggf. anpassen ##Neu##
With wks.UsedRange

Anzeige
AW: mit VBA eine neue Datei erzeugen und daten rein ko
30.04.2015 13:50:38
Jappe
Hallo Franz,
ja so funktioniert es. Ich muss jetzt erst mal weiter testen und daas ergebnis vorstellen.
Könnte ich mich bei wieteren Fragen noch mal an dich wenden?
Viele Grüße und vielen Dank
Henning

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige