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

Mehrere Dateien erstellen und Inhalte au

Mehrere Dateien erstellen und Inhalte au
07.09.2021 11:06:47
Christina
Hallo!
Ich arbeite erst seit kurzem mit VBA Excel (Microsoft Windows 10 Pro, Microsof Office Standard 2016) und habe ein Problem, das ich nicht alleine lösen kann.
Ich würde gerne mit einem Kommandobutton eine Prozedur auslösen, die mir mit einem Zellinhalt aus der Datei in der dieses Kommandofeld liegt eine neue Datei aus einer Vorlage mit Dateinamen aus Zellinhalt erstellt und in die neu erstellte Datei anschließend Inhalte aus einer anderen Datei einfügen, die ich über den Explorer auswähle.
Dabei habe ich zwei Probleme:
1. Es funktioniert zumindest mit dem untenstehenden Code einmal, dass die neue Datei aus der Vorlage erstellt wird und unter dem richtigen Namen abgespeichert wird. Ursprünglich wollte ich die "Basisdatei" auch automatisch über den Code aufrufen und öffnen, das funktioniert aber leider nicht bzw. weiß ich nicht wie ich das machen muss, deshalb kommt jetzt die Aufforderung zur Auswahl der Datei.
2. Ich würde gerne Daten von den "Basisdaten" in die Datei "Bestellung" kopieren, aber mit dem untersten Code funktioniert das leider nicht. Wie muss ich die Dateinamen vergeben bzw. diese aufrufen, dass ich mit den vorher bearbeiteten/erstellten Dateien weiter arbeiten kann?

Private Sub CommandButton_OK_Click()
'Dim Bestellung As New Excel.Application
'Dim Basisdaten As New Excel.Workbook
Dim Bestellung As Object
Dim Basisdaten As Object
Dim strFilter As String
Dim strFileName
Dim strDateiname As String
Dim strDateiname2 As String
Dim strPfad As String
'Neues Bestellungsformular erstellen
Set Bestellung = ActiveWorkbook
strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
Set Bestellung = Workbooks.Open(strDateiname, False, True)
'Bestellung speichern
strDateiname2 = Range("B2").Value & " " & Range("D2").Value & ".xls"
Bestellung.SaveAs ("C:\Users\cg\Desktop\" & strDateiname2)
'Neue Basisdatei öffnen und bearbeiten
'** Dateifilter definieren
strFilter = "Excel-Dateien(*.xls*), *.xls*"
'** Laufwerk und Pfad definieren, welcher geöffnet werden soll
ChDrive "C"
ChDir "C:\Users\cg\Desktop\"
'** Den im Dialogfeld gewählten Namen auslesen
strFileName = Application.GetOpenFilename(strFilter)
'** Prüfen, ob eine gültige Datei ausgewählt wurde
If strFileName = False Then Exit Sub
'** Gewählte Datei öffnen
Set Basisdaten = Workbooks.Open(strFileName)
'** Hinweis ausgeben
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Dateien aus Basisdatei in Bestellung kopieren
Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("A").Value = Bestellung.Worksheets("fenster").Columns("A").Value
End Sub

Danke für eure Hilfe!!

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Dateien erstellen und Inhalte au
08.09.2021 23:19:53
Yal
Hallo Christina,
zur besseren Lesbarkeit habe ich das Öffnen der Basisdaten in einem separaten Function abgelegt.
Das wesentlich ist die Übertragung der Daten von A nach B: für jede einzelne Zelle von Basisdaten (nur der verwendete Bereich von Spalte A), den Inhalt in der Zelle mit dieselbe Adresse in Bestellung übergeben.
Variable, deren Inhalt sich im Lauf des Codings nicht ändern habe ich als Const (Konstante) deklariert. Algemein die Anzahl von Variable so klein wie möglich halten (wobei für die Fehlersuche eine Variable hilfreich sein kann)

Const strPfad = "C:\Users\cg\Desktop\"
Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook
Dim Basisdaten As Workbook
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Next
End With
End If
'Übergetragene Daten speichern
Bestellung.Save
End Sub
Private Function BasisDatei_öffnen() As Workbook
Dim strFileName As String
Const strFilter = "Excel-Dateien(*.xls*), *.xls*" 'Dateifilter
ChDrive "C"
ChDir strPfad 'Laufwerk und Pfad definieren, welcher geöffnet werden soll
strFileName = Application.GetOpenFilename(strFilter) 'Datei auswählen
If strFileName Then 'Wenn Auswahl getroffen
Set BasisDatei_öffnen = Workbooks.Open(strFileName) 'Gewählte Datei öffnen und übergeben
End If
End Function
VG
Yal
Anzeige
AW: Mehrere Dateien erstellen und Inhalte au
12.09.2021 19:00:13
Christina
Hallo Yal,
danke für deine Hilfe. Das schaut schon ganz gut aus.
Leider kommt beim Ausführen bei deiner neue Funktion in der Zeile If strFileName Then 'Wenn Auswahl getroffen die Fehlermeldung "Typen unverträglich".
Weißt du was hier das Problem ist?
Danke!
LG Christina
AW: Mehrere Dateien erstellen und Inhalte au
12.09.2021 22:40:34
Oberschlumpf
Hi Christina,
wegen der Fehlermeldung ändere mal diese Zeile

Dim strFileName As String
um in

Dim strFileName As Variant
oder in

Dim strFileName
Der Fehler sollte nun weg sein.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Mehrere Dateien erstellen und Inhalte au
12.09.2021 20:03:40
Christina
Hallo Yal,
noch eine Frage:
Diesen Teil in deinem Code verstehe ich leider nicht ganz. Was passiert hier genau in welchem Teilbereich (Was macht Intersect, UsedRange? Was Range(Z.Address)=Z.Value?)
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Danke! LG

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige