Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Datei auswählen und Namen merken

VBA Datei auswählen und Namen merken
16.01.2021 23:35:50
MarC
Hi alle,
ich komme gerade null weiter. Ich möchte die Zeile der ausgewählten Zelle in eine andere Excel Datei kopieren und danach die aktive löschen. Die andere Datei wähle ich über einen Button aus klicke auf ok und dann sollte es das gewesen sein. Leider funktioniert es noch nicht ganz. Eine ausgewählte Zeile von einem Blatt in eine anderes zu kopieren und dieses danach zu löschen funktioniert. Aber auf Dateiebene schaffe ich es nicht. Könnte bitte mir jemand hier helfen? Ich glaube es scheitert nur noch an der Ermittlung des neuen Dateinamens. Wie ich den herausfinde bzw. übergebe weiß ich nicht.
Eine Beispieldatei mit meinem aktuellen Code habe ich angehängt.
https://www.herber.de/bbs/user/143061.xlsm
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datei auswählen und Namen merken
17.01.2021 00:09:58
onur
Häääh?
"und danach die aktive löschen" ? - Wozu ein Makro schreiben und nach dem 1. Benutzen wieder löschen ?
AW: VBA Datei auswählen und Namen merken
17.01.2021 00:13:17
onur
"Worksheets("ausgewählte Datei")" ? Worksheet ist ein Blatt und keine Datei.
AW: VBA Datei auswählen und Namen merken
17.01.2021 00:30:46
ralf_b
@TE
Was soll das denn sein?
Der Filedialog hat die Überschrift "Ordnerauswahl" und man kann nur Dateien auswählen.
Dann erhälst du einen Dateinamen mit kompletten Pfad und setzt hinten einen Backslash dran.
Z.I: im strOrdner ist dein Dateiname drin.
Du hast dir Code aus dem Netz gezogen und den dann ohne Plan umgebaut.
Worksheets("ausgewählte Datei") ?
die Datei wäre ein Workbook!! Das solltest du erstmal als ansprechbares Objekt initialisieren bevor du versuchst da was reinzuschreiben. Diese Codes gibt's zig mal hier. Aber es geht einfacher, gell? Lass die Anderen die Arbeit machen.
gruß
rb
Anzeige
AW: VBA Datei auswählen und Namen merken
17.01.2021 01:29:29
MarC
Hallo Ralf,
ich habe nicht gesagt das ich den Code für das Dialogfenster selber geschrieben habe. Den habe ich aus dem Forum. Das einzige was ich selber gemacht habe waren die 4 Zeilen mit dem kopieren. Den Fehler mit dem Workbook habe ich auch bemerkt. Ich habe immer ans Workbook gedacht aber nicht bemerkt das ich die Tabelle anspreche.
Und auf das von Onur (Workbooks.Open Filename:=strDatei) bin ich nicht gekommen und habe es auch nicht im Internet gefunden, deswegen habe ich versucht den Dateinamen aus den Datei Pfad zu ziehen und dann zu übergeben. Vielleicht hätte ich etwas mehr Eigenleistung reinstecken sollen, aber ich habe die entscheidenen Begriffe/Befehle nicht gefunden.
strDateiname = Mid(strOrdner, InStrRev(strOrdner, "\") + 1)
strDateiname2 = Left(strDateiname, InStrRev(strDateiname, ".") - 1)

Anzeige
Danke Onur
17.01.2021 01:52:12
MarC
Hätte ich so nicht hinbekommen
Gerne !
17.01.2021 02:01:16
onur
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Datei auswählen und Namen merken


Schritt-für-Schritt-Anleitung

  1. Datei auswählen: Verwende den FileDialog, um dem Benutzer die Auswahl einer Excel-Datei zu ermöglichen.

    Dim strDatei As String
    With Application.FileDialog(msoFileDialogOpen)
       .Title = "Wähle eine Datei aus"
       .AllowMultiSelect = False
       If .Show = -1 Then
           strDatei = .SelectedItems(1)
       End If
    End With
  2. Dateinamen extrahieren: Um den Dateinamen ohne Pfad zu erhalten, kannst du den folgenden Code nutzen:

    Dim strDateiname As String
    strDateiname = Mid(strDatei, InStrRev(strDatei, "\") + 1)
  3. Datei öffnen: Mit dem extrahierten Dateinamen kannst du die Datei öffnen.

    Workbooks.Open Filename:=strDatei
  4. Zeile kopieren und löschen: Kopiere die gewünschte Zeile in die geöffnete Datei und lösche sie anschließend.

    ' Beispiel: Kopiere Zeile 1
    ThisWorkbook.Sheets("DeinBlatt").Rows(1).Copy
    Workbooks(strDateiname).Sheets("Zielblatt").Rows(1).PasteSpecial Paste:=xlPasteAll
    ThisWorkbook.Sheets("DeinBlatt").Rows(1).Delete

Häufige Fehler und Lösungen

  • Fehler: "Worksheet ist ein Blatt und keine Datei": Achte darauf, dass du Workbooks anstelle von Worksheets verwendest, wenn du mit Dateien arbeitest.
  • Fehler: "Datei nicht gefunden": Überprüfe den Pfad, den du mit strDatei ablegst. Stelle sicher, dass die Datei existiert, bevor du versuchst, sie zu öffnen.
  • Lösung: Dateinamen korrekt extrahieren: Stelle sicher, dass dein Code für die Extraktion des Dateinamens richtig ist, um Fehler zu vermeiden.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, eine Datei auszuwählen. Neben dem FileDialog kannst du auch die Application.GetOpenFilename-Methode verwenden:

Dim strDatei As String
strDatei = Application.GetOpenFilename("Excel Files (*.xls; *.xlsx), *.xls; *.xlsx")
If strDatei <> "False" Then
    ' Datei wurde ausgewählt
End If

Praktische Beispiele

Hier ist ein einfaches Beispiel, das die oben genannten Schritte in einem vollständigen Makro zusammenfasst:

Sub DateiAuswaehlenUndKopieren()
    Dim strDatei As String
    Dim strDateiname As String

    ' Datei auswählen
    With Application.FileDialog(msoFileDialogOpen)
        .Title = "Wähle eine Datei aus"
        .AllowMultiSelect = False
        If .Show = -1 Then
            strDatei = .SelectedItems(1)
        End If
    End With

    ' Dateinamen extrahieren
    strDateiname = Mid(strDatei, InStrRev(strDatei, "\") + 1)

    ' Datei öffnen
    Workbooks.Open Filename:=strDatei

    ' Zeile kopieren und löschen
    ThisWorkbook.Sheets("Sheet1").Rows(1).Copy
    Workbooks(strDateiname).Sheets("Sheet1").Rows(1).PasteSpecial Paste:=xlPasteAll
    ThisWorkbook.Sheets("Sheet1").Rows(1).Delete
End Sub

Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass das Makro robust ist.
  • Modularität: Teile deinen Code in kleinere, wiederverwendbare Funktionen auf, um die Wartbarkeit zu verbessern.
  • Dokumentation: Kommentiere deinen Code ausreichend, damit auch andere (oder Du selbst später) ihn leicht verstehen können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Datei existiert, bevor ich sie öffne?
Du kannst die Dir-Funktion verwenden, um zu überprüfen, ob die Datei vorhanden ist:

If Dir(strDatei) <> "" Then
    ' Datei existiert
Else
    MsgBox "Datei nicht gefunden."
End If

2. Was mache ich, wenn ich mehrere Zeilen kopieren möchte?
Ändere die Zeile im Kopierbefehl, um mehrere Zeilen auszuwählen:

ThisWorkbook.Sheets("DeinBlatt").Rows("1:5").Copy

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