2017-10-03 5 views
0

Ich habe einen Code, der für eine Datei funktioniert. Es liest den Namen der .xlsx-Datei und speichert den Application.GetOpenFilename als Variable. Dies wird später im Code verwendet.Excel: Mehrere Datei ausführen, Speichern Sie jeden Dateiname als Variable

Ich möchte diesen Code auf mehrere Dateien in der Lage zu laufen ... Beispiel:

Benutzer wählt Dateien Namen "x", "y" und "z"

Sub Test() 
    Dim myvariable as variant, i As Integer 
    myvariable = Application.GetOpenFilename(FileFilter:="Excel files (*.xlsx), *.xlsx", MultiSelect:=True) 

    On Error GoTo ERRORHANDLER 
    For i = 1 To UBound(myvariable) 
    '''code to do stuff to my variable''' 
    Next i 

    Exit Sub 

ERRORHANDLER: 
    MsgBox "No files were selected, action cancelled." 

End Sub 

Dieser Code sollte jedes Mal laufen, macht das Zeug zu "x", dann "y", dann "z", aber ich bekomme immer die ERRORHANDLER Nachricht.

Update: Wenn ich MsgBox ("Hallo") in den "Code to do sachen" setzen, druckt es es für so viele Dateien wie ich auswählen. Wenn ich MsgBox (myvariable) schreibe, bekomme ich diesen Fehler, also nehme ich an, dass es weil Excel nicht weiß, wie jeder einzelne Dateiname als die Variable während jeder Schleife durch den Code gespeichert wird. -

Jede Hilfe würde geschätzt werden !!

+2

Kommentieren Sie die Fehlerbehandlung - wo genau schlägt es fehl und was ist der Fehler? Sie kodieren Attribute alle Arten von Fehler zu "keine Dateien ausgewählt": das ist nicht unbedingt genau. –

+0

Hallo Tim, ich habe es auskommentiert und bekomme den "Laufzeitfehler 13, Type Mismatch" (Ich habe auch versucht, i = 1 zu i = 0 zu ändern, da jemand unten kommentierte, aber den gleichen Laufzeitfehler bekam. – mitchmitch24

+0

Wenn ich Setzen Sie MsgBox ("Hallo") in den "Code, um Sachen zu tun", es druckt es für so viele Dateien, wie ich wähle. Wenn ich MsgBox (myvariable) schreibe, bekomme ich diesen Fehler, also nehme ich an, dass es weil Excel nicht wissen kann Speichern Sie jeden einzelnen Dateinamen als die Variable während jeder Schleife durch den Code. – mitchmitch24

Antwort

1

Es ist immer gut Fehlerbeschreibung zu drucken, wenn Sie die genauen Fehler kennen. Sie können den Fehler herausfinden, indem Sie die folgende Zeile unter Ihre Fehlerbehandlung setzen.

Ich habe versucht, Ihren Code mit Mehrfachauswahl nach dem Setzen der einfachen msgbox und es scheint für mich arbeiten. Überprüfen Sie, ob Sie fehlen, um das Array zu referenzieren.

MsgBox (myvariable(i)) 
+0

Hallo Imran! Vielen Dank für Ihren Kommentar! Alles, was ich tun musste war das hinzufügen der (i) und es funktionierte! Ist das im Wesentlichen sagen, um ein Array aus den ausgewählten Dateinamen zu erstellen? – mitchmitch24

+1

myvariable wurde bereits als Variante so im Wesentlichen Sie es erstellt wurde Sie nur Zugriff auf seine Mitglieder von I. –

+0

Das macht Sinn. Danke nochmal!! – mitchmitch24

0

In der Schleife Erklärung sollte sein:

For i = 0 To UBound(myvariable) 
+0

Hallo adarti, habe ich versucht, aber leider immer noch die "Laufzeitfehler 13, Typ Mismatch" – mitchmitch24

Verwandte Themen