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

Forumthread: GetOpenFilename

GetOpenFilename
21.10.2014 12:29:37
rag
Hallo,
Code funktioniert wunderbar, problem ist nur beid er GetOpenFilename...da muss ich die datei zweimal Öffnen...also wird zweimal abgefragt. Ich will es nur einmal!
Sub Vergleichen()
'
' Vergleichen Makro
'
'
Range("K1").Select
ActiveCell.FormulaR1C1 = "Erfasst"
Range("K2").Select
Columns("K:K").EntireColumn.AutoFit
Range("K2").Select
ActiveCell.FormulaR1C1 = ""
Dim var As Variant
ChDrive "C:"
ChDir "C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste"
' Workbooks.Open Filename:= _
' "C:\Users\Z212723\Dokumente\Wöchentliche Report\Erfassungslieste\Erfassungsliste_Solidcore.xlsx" _
' , Origin:=xlWindows
var = Application.GetOpenFilename( _
FileFilter:="Excel-Dateien (*.xls; *.xlsx),*.xls;*.xlsx", _
MultiSelect:=False)
If var False Then
Workbooks.Open var, UpdateLinks:=False
End If
ActiveWindow.ActivateNext
Range("K2").Select
ActiveCell.FormulaR1C1 = _
"=COUNTIF(C[-10],[var]Tabelle1!C1)"

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GetOpenFilename
21.10.2014 15:14:00
fcs
Hallo rag,
die Syntax für den Einbau des Dateinamens ist falsch, deshalb wird für die Formel nochmals nach einer Datei gefragt.
Meiner Meinung nach ist das "C1" in der Formel auch noch falsch, hier müßte eine einzelne Zelle stehen. Also z.B.: R1C1 für Zelle "A1"
Gruß
Franz
angepasstes Makro:
Sub Vergleichen()
' Vergleichen Makro
Range("K1").Select
ActiveCell.FormulaR1C1 = "Erfasst"
Range("K2").Select
Columns("K:K").EntireColumn.AutoFit
Range("K2").Select
ActiveCell.FormulaR1C1 = ""
Dim var As Variant, wkb As Workbook, wkbAktiv As Workbook
Set wkbAktiv = ActiveWorkbook
ChDrive "C:"
'ChDir "C:\Users\Dokumente\Wöchentliche Report\Erfassungslieste"
' Workbooks.Open Filename:= _
' "C:\Users\Z212723\Dokumente\Wöchentliche Report\Erfassungslieste\Erfassungsliste_Solidcore. _
xlsx" _
' , Origin:=xlWindows
var = Application.GetOpenFilename( _
FileFilter:="Excel-Dateien (*.xls; *.xlsx),*.xls;*.xlsx", _
MultiSelect:=False)
If var  False Then
Set wkb = Workbooks.Open(var, UpdateLinks:=False)
Else
Exit Sub
End If
wkbAktiv.Activate
Range("K2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-10],'[" & wkb.Name & "]Tabelle1'!C1)"
Set wkb = Nothing: Set wkbAktiv = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von GetOpenFilename in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Methode Application.GetOpenFilename in Excel VBA anzuwenden, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du im Menü auf Einfügen > Modul klickst.
  3. Schreibe den folgenden Code in das Modul:
Sub Vergleichen()
    Dim var As Variant, wkb As Workbook

    var = Application.GetOpenFilename( _
        FileFilter:="Excel-Dateien (*.xls; *.xlsx),*.xls;*.xlsx", _
        MultiSelect:=False)

    If var <> False Then
        Set wkb = Workbooks.Open(var, UpdateLinks:=False)
        ' Hier kannst du weitere Operationen durchführen
    Else
        MsgBox "Keine Datei ausgewählt."
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro im Excel durch ALT + F8 aus.

Häufige Fehler und Lösungen

  • Problem: Das Makro fragt mehrfach nach einer Datei.

    • Lösung: Überprüfe die Syntax in der Formel, insbesondere wenn du auf Daten in der geöffneten Datei zugreifen möchtest. Stelle sicher, dass du den Namen der Arbeitsmappe korrekt verwendest, z.B. ActiveCell.FormulaR1C1 = "=COUNTIF(C[-10],'[" & wkb.Name & "]Tabelle1'!C1)".
  • Problem: Die Methode gibt False zurück, obwohl eine Datei ausgewählt wurde.

    • Lösung: Stelle sicher, dass du die richtige Bedingung verwendest: If var <> False Then.

Alternative Methoden

Falls Application.GetOpenFilename nicht die gewünschten Ergebnisse liefert, kannst du auch folgende Alternativen nutzen:

  • FileDialog: Verwende die FileDialog-Methode, um eine Datei auszuwählen. Diese Methode bietet eine benutzerfreundlichere Oberfläche.
Sub FileDialogExample()
    Dim fd As FileDialog
    Dim var As Variant

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.AllowMultiSelect = False
    fd.Filters.Clear
    fd.Filters.Add "Excel-Dateien", "*.xls; *.xlsx"

    If fd.Show = -1 Then
        var = fd.SelectedItems(1)
        ' Arbeite mit der ausgewählten Datei
    End If
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du Application.GetOpenFilename verwenden kannst, um eine Excel-Datei auszuwählen und Daten zu verarbeiten:

Sub DatenVerarbeiten()
    Dim var As Variant
    var = Application.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx), *.xls; *.xlsx", , "Wähle eine Datei aus")

    If var <> False Then
        Dim wkb As Workbook
        Set wkb = Workbooks.Open(var)

        ' Beispiel: Daten aus Zelle A1 lesen
        Dim wert As Variant
        wert = wkb.Sheets(1).Range("A1").Value
        MsgBox "Der Wert in A1 ist: " & wert

        wkb.Close SaveChanges:=False
    End If
End Sub

Tipps für Profis

  • Nutze MultiSelect:=True in Application.GetOpenFilename, um mehrere Dateien auszuwählen, wenn nötig.
  • Experimentiere mit verschiedenen FileFilter-Einstellungen, um die Benutzererfahrung zu verbessern.
  • Verwende Application.FileDialog für eine bessere Benutzeroberfläche, besonders wenn du komplexere Dateiauswahlen benötigst.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen GetOpenFilename und FileDialog? GetOpenFilename ist eine einfache Methode zur Dateiauswahl, während FileDialog eine benutzerfreundlichere Oberfläche bietet und mehr Anpassungsoptionen hat.

2. Kann ich GetOpenFilename verwenden, um Textdateien auszuwählen? Ja, du kannst den FileFilter anpassen, um auch andere Dateiformate wie Textdateien auszuwählen.

3. Wie kann ich mehrere Dateien mit GetOpenFilename auswählen? Setze den Parameter MultiSelect auf True, um die Auswahl mehrerer Dateien zu ermöglichen.

4. Warum wird False zurückgegeben, wenn ich eine Datei auswähle? Das kann passieren, wenn der Benutzer den Dialog schließt, ohne eine Datei auszuwählen. Stelle sicher, dass du die Rückgabewerte korrekt überprüfst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige