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

Forumthread: Wie per VBA .xlsm aus einer Vorlagendatei .xltm erstellen lassen?

Wie per VBA .xlsm aus einer Vorlagendatei .xltm erstellen lassen?
05.12.2019 14:40:41
AleXSR700
Hallo werte Forenmitglieder,
ich grüble gerade über ein neues Problem nach und finde noch nicht den richtigen Ansatz.
Ich würde gerne per VBA Code Exceldateien mit Makrounterstützung aus Excelvorlagen erzeugen lassen. Normalerweise müsste man diese ja öffnen und dann speichern unter neuem Dateinamen.
Ist dies auch per VBA möglich?
Vorgehen wäre:
1. Button klicken
2. Dateiexplorerfenster öffnet sich in im VBA definierten Pfad (kann man dabei bei "Dateiname = Application.GetOpenFilename()" einen Defaultpfad mitgeben?)
3. Vorlage auswählen
4. Definierter Inhalt wird in bestimmte Zellen der neuen xlsm eingetragen
5. Die Datei wird als xlsm im Pfad der Exceldatei in der der VBA Code aufgerufen wird, abgespeichert
Meine ersten Versuche bringen einen Laufzeitfehler. Bisher versuche ich erstmal Datei auszuwählen, dann einen Zellinhalt von der Quelldatei in die Vorlage zu kopieren und dann abzuspeichern.
Kann es daran liegen, dass Voragen mit Makros erst aktiviert werden müssen? ODer habe ich _ irgendwo einen groben Fehler übersehen?

Sub Vorlage_Anlegen()
Dim LIMS As String
Dim Vorlagendateiname As String
Dim Dateiname As String
Dim LIMSwb As Workbook
Dim Vorlagenwb As Workbook
Set LIMSwb = ActiveWorkbook
Vorlagendateiname = Application.GetOpenFilename()
Set Vorlagenwb = Workbooks.Open(Filename:=Vorlagendateiname)
LIMSwb.Worksheets("Probeninformationen").Cells(5, 2).Copy
Vorlagenwb.Worksheets("Probe").Cells(1, 1).PasteSpecial
LIMS = LIMSwb.Worksheets("Probeninformationen").Cells(5, 2).Value
LIMS = Replace(LIMS, "/", "-")
Dateiname = LIMSwb.Path & "\" & LIMS & "_" & Vorlagendateiname & ".xlsm"
Vorlagenwb.SaveCopyAs Dateiname
Set Vorlagenwb = Nothing
Set LIMSwb = Nothing
End Sub

Viele Grüße
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie per VBA .xlsm aus einer Vorlagendatei .xltm erstellen lassen?
05.12.2019 15:46:44
Nepumuk
Hallo Alex,
ein Beispiel:
Option Explicit

Public Sub Beispiel()
    Dim objFileDialog As FileDialog
    Dim objWorkbook As Workbook
    Dim strPath As String
    Set objFileDialog = Application.FileDialog(msoFileDialogOpen)
    With objFileDialog
        .AllowMultiSelect = False
        .FilterIndex = 15
        .InitialFileName = "G:\Eigene Dateien\MEDBO\Fragebogen\" ' Anpassen !!!
        If .Show Then strPath = .SelectedItems(1)
    End With
    Set objFileDialog = Nothing
    If strPath <> vbNullString Then
        Set objWorkbook = Workbooks.Add(Template:=strPath)
        
        'weitere Aktionen
        
        Call objWorkbook.SaveAs(Filename:="D:\Muster.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled) 'Pfad anpassen !!!
        Call objWorkbook.Close
        Set objWorkbook = Nothing
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Wie per VBA .xlsm aus einer Vorlagendatei .xltm erstellen lassen?
06.12.2019 14:30:41
AleXSR700
Hallo Nepumuk,
perfekt, vielen lieben Dank!
Hat perfekt funktioniert und ließ sich mühelos an alle Bedürfnisse anpassen :)
Viele Grüße
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Erstellung von .xlsm-Dateien aus .xltm-Vorlagen mittels VBA


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei mit Makros (.xlsm) aus einer Vorlage (.xltm) zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Prozess besteht aus mehreren Schritten:

  1. Button klicken: Füge einen Button in Dein Excel-Dokument ein und verlinke diesen mit dem VBA-Makro.
  2. Dateiexplorer öffnet sich: Verwende Application.GetOpenFilename(), um den Benutzer eine .xltm-Datei auswählen zu lassen.
  3. Vorlage auswählen: Der Benutzer wählt die Vorlagendatei aus.
  4. Daten eintragen: Definiere, wo die Daten in der neuen .xlsm-Datei eingetragen werden sollen.
  5. Datei speichern: Speichere die neue Datei im gewünschten Pfad.

Hier ist ein Beispielcode, den Du verwenden kannst:

Sub Vorlage_Anlegen()
    Dim LIMS As String
    Dim Vorlagendateiname As String
    Dim Dateiname As String
    Dim LIMSwb As Workbook
    Dim Vorlagenwb As Workbook

    Set LIMSwb = ActiveWorkbook
    Vorlagendateiname = Application.GetOpenFilename()

    If Vorlagendateiname <> "False" Then
        Set Vorlagenwb = Workbooks.Open(Filename:=Vorlagendateiname)

        LIMSwb.Worksheets("Probeninformationen").Cells(5, 2).Copy
        Vorlagenwb.Worksheets("Probe").Cells(1, 1).PasteSpecial

        LIMS = LIMSwb.Worksheets("Probeninformationen").Cells(5, 2).Value
        LIMS = Replace(LIMS, "/", "-")
        Dateiname = LIMSwb.Path & "\" & LIMS & "_" & Vorlagendateiname & ".xlsm"

        Vorlagenwb.SaveCopyAs Dateiname
        Set Vorlagenwb = Nothing
    End If

    Set LIMSwb = Nothing
End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler beim Kopieren: Stelle sicher, dass die Quelldaten in der richtigen Zelle sind und dass die Arbeitsblätter existieren.
  • Vorlagendatei wird nicht gefunden: Überprüfe den Pfad, den Du in Application.GetOpenFilename() verwendest. Möglicherweise musst Du den Filter anpassen.
  • Makros nicht aktiviert: Überprüfe die Sicherheitseinstellungen von Excel, damit Makros ausgeführt werden können.

Alternative Methoden

Eine andere Methode, um eine .xlsm-Datei aus einer .xltm-Vorlage zu erstellen, besteht darin, die FileDialog-Klasse zu verwenden. Hier ist ein Beispiel:

Public Sub Beispiel()
    Dim objFileDialog As FileDialog
    Dim objWorkbook As Workbook
    Dim strPath As String

    Set objFileDialog = Application.FileDialog(msoFileDialogOpen)

    With objFileDialog
        .AllowMultiSelect = False
        .InitialFileName = "G:\Eigene Dateien\"
        If .Show Then
            strPath = .SelectedItems(1)
            Set objWorkbook = Workbooks.Add(Template:=strPath)
            objWorkbook.SaveAs Filename:="D:\Muster.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
            objWorkbook.Close
        End If
    End With

    Set objFileDialog = Nothing
End Sub

Praktische Beispiele

Wenn Du eine Excel-Datenbank mit Vorlagen arbeiten möchtest, kannst Du die oben genannten Methoden anpassen, um verschiedene Vorlagen zu nutzen. Beispielsweise kannst Du Excel-Vorlagen für Berichte oder Artikel erstellen, indem Du spezifische Daten in die entsprechenden Zellen kopierst.


Tipps für Profis

  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um Fehler abzufangen und die Benutzerfreundlichkeit zu verbessern.
  • Datenbankanbindung: Überlege, wie Du Excel VBA mit einer Access-Datenbank verbinden kannst, um Vorlagen dynamisch zu befüllen.
  • Vorlagen optimieren: Stelle sicher, dass Deine .xltm-Vorlagen gut strukturiert sind, um die Automatisierung zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich einen Standardpfad für den Dateiauswahldialog festlegen?
Ja, das kannst Du tun, indem Du die Eigenschaft InitialFileName des FileDialog-Objekts verwendest.

2. Was ist der Unterschied zwischen .xltm und .xlsm?
Die .xltm-Datei ist eine Vorlage mit Makros, während die .xlsm-Datei eine Arbeitsmappe mit aktivierten Makros ist.

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