Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Active Sheet in neue Datei mit VBA

Betrifft: Active Sheet in neue Datei mit VBA von: Andreas
Geschrieben am: 06.08.2014 18:37:07

Hallo Excelfreunde,

Habe folgenden Code der auch funktioniert.
Mit diesem Code kann ich aus meinem aktiven Sheet über einen CommandButton das aktive Sheet in eine Neue Datei die welche laut Makro Vorgabe neu erstellt wird mit allen Inhalten sowie vorhandenen CommandButtons einfügen. Das ist auch so gewollt.

Sub Speichern3()
Dim strPath As String
Application.ScreenUpdating = False
ChDrive "D:\"
ChDir Sheets("Eingabe").Range("F3").Value ' Pfad aus Zelle F3

Sheets("Eingabe").Copy
strPath = Application.GetSaveAsFilename(InitialFileName:=Sheets("Eingabe").Range("D5").Value & ".xls", FileFilter:="Exceldateien (*.xls),*.xls,Alle Dateien (*.*), *.*") If strPath = "False" Or strPath = "Falsch" Then Exit Sub
ActiveWorkbook.SaveAs strPath

ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub Jetzt möchte ich aber noch verschiedene andere Sheets (aber eben nicht alle) aus der aktiven Datei auf die gleiche Weise kopieren und in die neue Datei einfügen. Wenn das neue Sheet in der neuen Datei schon vorhanden ist soll es nicht reinkopiert werden und eine Meldung kommen. Wenn das zu kopierende Sheet noch nicht in der neu erstellten Datei vorhanden ist soll es eingefügt werden.
Das kann ich aber mit diesem Makro nicht machen.

Ich habe aber noch ein Makro

Private Sub TabellenblattSpeichern()
     'ActiveSheet.Name = ActiveSheet.Range("D13")
     'ActiveSheet.Copy After:=Workbooks("Teilnehmerliste_ViA.xlsm").Sheets(Sheets.Count)
    ActiveSheet.Copy After:=Workbooks("Teilnehmerliste_ViA.xlsm").Sheets(Workbooks(" _
Teilnehmerliste_ViA1.xlsm").Sheets.Count)
     'ActiveSheet.Shapes.Range(Array("CommandButton1")).Select
     'Selection.Delete
     'ActiveSheet.Shapes.Range(Array("CommandButton2")).Select
     'Selection.Delete
     'ActiveSheet.Shapes.Range(Array("CommandButton3")).Select
     'Selection.Delete
 End Sub

mit diesem Makro fett dargestellte Codezeile kann ich das aktive Sheet kopieren. Dieses wird aber in meine aktive Datei eingefügt. Ich will aber das mit dieser Codezeile das wie zuvor beschrieben das aktive Sheet in die Neu erstellte Datei eingefügt wird.

Wie muß ich dies in mein erstes Makro mit einbauen. Leider krieg ich das ohne hilfe nicht hin.
Kann mir jemand meinen ersten Code dementsprechend anpassen. Meine VBA Kenntnisse sind noch eher mangelhaft. Sorry

liebe Grüße Andreas

  

Betrifft: AW: Active Sheet in neue Datei mit VBA von: Luschi
Geschrieben am: 06.08.2014 18:47:35

Hallo Andreas,

ActiveSheet.Copy
kopiert die gerade sichtbare Tabelle in eine neue leere Arbeitsmappe.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Active Sheet in neue Datei mit VBA von: Andreas
Geschrieben am: 06.08.2014 19:37:27

Hallo Luschi,

klappt nicht mit meinem Code
trotzdem Danke

hier nochmal kurz mein Problem geschildert



Private Sub CommandButton3_Click()
     Speichern3
End Sub


Sub Speichern3()
Dim strPath As String
Application.ScreenUpdating = False
ChDrive "D:\"
' Pfad fest vorgeben
ChDir "D:\Users\OH"
' Pfad aus Zelle C1
'ChDir Sheets("Tabelle1").Range("C1").Value
Sheets("Eingabe").Copy
strPath = Application.GetSaveAsFilename(InitialFileName:=Sheets("Eingabe").Range("D5").Value & ".xls", FileFilter:="Exceldateien (*.xls),*.xls,Alle Dateien (*.*), *.*")
If strPath = "False" Or strPath = "Falsch" Then Exit Sub
ActiveWorkbook.SaveAs strPath
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub


habe Deine Codezeile anstatt meiner Codezeile "Sheets("Eingabe").Copy"
an gleicher Stelle in meinem Code ersetzt gehabt. Leider ohne erfolg.
Der Code kopiert eben nur immer ein ausgewähltes Tabellenblatt in die neue Datei. Wenn ich jetzt aber ein neues (zweites) ausgewähltes Tabellenblatt in die neue Datei einfügen will macht der Code dies eigentlich auch. Nur jetzt wird dann meine Neue vorhandene Datei überschrieben und ich habe wieder nur das eine gerade vorher selektierte Tabellenblatt in meiner neuen Datei.

Ich will aber das die Datei nicht überschrieben wird und alle neu einzufügenden Tabellen eingefügt werden.
Dies hätte ich gern in meinem Makro mit eingebaut.

Kann mir da einer weiterhelfen? Und meinen Code dementsprechend anpassen?
Brauch echt Hilfe dazu.

liebe Grüße Andreas


  

Betrifft: AW: Active Sheet in neue Datei mit VBA von: Uduuh
Geschrieben am: 06.08.2014 20:30:17

Hallo,
hilft dir

sheets(array("Tabelle1", "tabelle2","etc")).copy

weiter?

Gruß aus’m Pott
Udo



  

Betrifft: AW: Active Sheet in neue Datei mit VBA von: Andreas
Geschrieben am: 06.08.2014 20:40:55

Hallo Uduuh,

Super das wars.
funktioniert bestens. Wenn ich jetzt in das Array alle meine Tabellen mit Namen eintrage werden sie mit allen Formatierungen , Formeln und allen vorhandenen CommandButtons kopiert. So wollte ich das haben.
Somit ist mein Problem gelöst.
Nochmals besten Dank

liebe Grüße Andreas