controle op aanwezigheid van een sheet

Status
Niet open voor verdere reacties.

boule

Gebruiker
Lid geworden
20 jan 2011
Berichten
42
Het probleem is het volgende :

In het programma zit een userform waarin de naam van een te importeren sheet moet worden opgegeven.
De sheet heeft bv de naam 118T5.csv en wordt in een textbox ingegeven.
Wanneer de naam goed is ingebracht dan gaat de verwerking perfect.
Maak je echter een tikfout en dan is dat sheet niet aanwezig dan komt er een fout melding "Subscript buiten bereik" of ""subscript out of array"

Is er iemand die kan vertellen hoe dit kan worden opgevangen.
a. met een stuk coding waarmee gecontroleerd wordt dat de gevraagde naam niet aanwezig is, en terug naar het invoer veld. of
b het afvangen van de foutmelding met een melding en terugkeer naar de userform

Onderstaand een deel van de coderring

Dim Bestandsnaam As String
Dim regelteller As Double

Sheets("Inschrijvingen").Visible = True
Sheets("Inschrijvingen").Select
Range("I1").Select
Bestandsnaam = Range("I1").Value
Sheets("Basis ").Visible = True
Sheets("Basis ").Select
Range("P40").Select
regelteller = Range("P40").Value * 2
Sheets("Basis ").Visible = False



'' If WorksheetExists(Bestandsnaam) = True Then
'' Windows(Bestandsnaam).Activate
'' Else
'' MsgBox "Er is een verkeerde naam gebruikt nl : " & Bestandsnaam & " Opnieuw doen !!"
'' Exit Sub
'' End If

Deze routine werkte wel maar alleen als de gebruikte bestandsnaam juist was. (er stonden dan geen "" voor)
Op internet de onderstaande routine gevonden :


Set wBook = Workbooks(Bestandsnaam)

If wBook Is Nothing Then 'Not open
MsgBox "Opgegeven bijlage naam : " & Bestandsnaam & " bestaat niet, opnieuw opgeven "
Set wBook = Nothing
On Error GoTo 0
Else 'It is open
MsgBox "ja gevonden "
Windows(Bestandsnaam).Activate
'' Set wBook = Nothing
On Error GoTo 0
End If

Ook deze werkt aleen als de naam juist is.
 
Laatst bewerkt:
of een combobox, ingesteld als dropdownlist, met alle geldige namen.
 
Dus als ik het goed begrijp, wil je controleren of een bepaald bestand wel of niet bestaat?
Dan kun je onderstaande code (Dir) voor gebruiken. Die geeft als resultaat de naam van het bestand. Als het bestand echter niet bestand, geeft het een lege waarde. Vergeet niet om ook de directory of te geven en de extensie van het bestand (vb. C:\bureaublad\test\bestandsnaam.csv).

x = Dir("mydirectory\myfile.csv")
If x = "" Then MsgBox ("file bestaat niet")
If Not x = "" Then MsgBox ("file bestaat")

Gr. Tom
 
bedankt

Mensen bedankt, vooral Daan die verwees naar een stuk documentatie.
De teks:)t moest niet zijn if exists maar if open . Het werkt nu goed
 
Je kunt de gebruiker ook laten browsen m.b.v. het GetOpenFilename -command, dan weet je zeker dat het goed gaat. Met onderstaande code krijg je in het browsevenster een lijst met .csv-bestanden en na klikken op juiste bestand krijg je als resultaat het pad en de naam als string. Je moet wel checken of de string een geldige pad en naam is, voor het geval de gebruiker Cancel heeft geklikt :

Code:
    'Voorbereiden voor Browse-venster
        Fil = "Databestanden (*.csv), *.csv"
        Caption = "Selecteer een bestand"
        Knoptekst = "Selecteren"
        
    'Laat window zien om te browsen
        PadEnNaam = Application.GetOpenFilename(Fil, , Caption, Knoptekst)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan