Probleem met GetOpenFileName

Status
Niet open voor verdere reacties.

RobBlok

Gebruiker
Lid geworden
10 mei 2016
Berichten
33
Beste mensen,

Ik heb een klein probleempje dat ik niet direct weet op te lossen

Om een bestand te openen gebruik ik onderstaande code

Code:
Sub OpenBestand
                Bestand = Application.GetOpenFilename("Bestanden (*.*), *.*", 2, "Selecteer het lessenbestand van afdeling " & AfdelingNaam, , True)
                        For Y = 1 To UBound(Bestand)
                            Sheets.Add Type:=Bestand(Y), After:=Sheets(Sheets.Count)
                        Next
         End Sub

Op zich werkt dit goed en wordt het geopende bestand aan de werkmappen toegeoegd

Echter als er op Annuleren of Sluitkruisje wordt geklikt zonder dat men een bestand selecteert dan loopt de zaak vast

Als ik er bij plaats

Code:
Sub OpenBestand
                Bestand = Application.GetOpenFilename("Bestanden (*.*), *.*", 2, "Selecteer het lessenbestand van afdeling " & AfdelingNaam, , True)
                If Bestand = False then Exit Sub
                        For Y = 1 To UBound(Bestand)
                            Sheets.Add Type:=Bestand(Y), After:=Sheets(Sheets.Count)
                        Next
         End Sub
dan krijg ik een foutmelding Fout 13 tijdens uitvoering
Typen komen niet overeen en dan loopt hij ook vast

Wie kan mij verder helpen?

Bijvoorbaat dank

Rob
 
Probeer het zo maar eens.
Code:
Sub OpenBestand
 [COLOR=#ff0000]on error goto xlexit[/COLOR]
                Bestand = Application.GetOpenFilename("Bestanden (*.*), *.*", 2, "Selecteer het lessenbestand van afdeling " & AfdelingNaam, , True)
                        For Y = 1 To UBound(Bestand)
                            Sheets.Add Type:=Bestand(Y), After:=Sheets(Sheets.Count)
                        Next
  [COLOR=#ff0000]xlexit:[/COLOR]
         End Sub
 
Nog een ander probleempje

Beste HSV

Enorm bedankt, precies wat ik zocht

Nu nog een klein bijkomend probleemje.
Kan de Bestandsnaam ook worden uitgelezen als het is geopend zodat ik weet dat men de goede Afdeling heeft geopend?

Code:
Bestand = Application.GetOpenFilename("Bestanden (*.*), *.*", 2, "Selecteer het lessenbestand van afdeling " & AfdelingNaam, , True)
For Y = 1 To UBound(Bestand)
      Sheets.Add Type:=Bestand(Y), After:=Sheets(Sheets.Count)
Next
 
Bij mij loopt
Code:
Sub M_snb()
  on error resume next

  For each it in Application.GetOpenFilename("Bestanden (*.*), *.*", 2, "Selecteer het lessenbestand van afdeling " & AfdelingNaam, , True)
    Sheets.Add , Sheets(Sheets.Count),,it
  Next
End Sub

Maar wellicht is deze methode beter:

Code:
Sub M_snb()
    With Application.FileDialog(1)
        If .Show Then Sheets.Add , , Sheets(Sheets.Count), .SelectedItems(1)
    End With
End Sub
 
Laatst bewerkt:
Oplossing met show.dialog

Best snb

Bedankt voor het meedenken maar als ik dat doe valt hij in een foutmelding.
Gaat me nu om puur de Bestandsnaam uit te lezen als het bestand is geselecteerd :o
 
Sjonge ....
Code:
Sub M_snb()
    With Application.FileDialog(1)
        If .Show Then Sheets.Add , Sheets(Sheets.Count), , .SelectedItems(1)
    End With
End Sub
 
Reactie

Wellicht beschrijf ik het probleem niet goed.
Ik wil pas het bestand toevoegen nadat ik de naam heb gecontroleerd en een stuk uit die Bestandsnaam aan een string heb toegevoegd zodat ik weet dat bestanden abusievelijk niet nogmaals worden ingelezen
In dit geval wordt hij gelijk toegevoegd en dat wil ik niet want dan kan het bestand corrupt raken.
Hopelijk heb ik nu het probleem duidelijk omschreven
 
Probleem is opgelost

Beste mensen,

Ik heb het probleem inmiddels kunnen oplossen.
Hartelijk dank voor het meedenken
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan