Via macro een bestand openen in Excel

Met macro’s kan je haast op zichzelf werkende programma’s creëeren. ALs je dit doet, kom je uiteindelijk ooit aan de eis dat een gebruiker een willekeurig bestand kan openen. In plaats van dat je dan hardcoded een bestandsnaam hebt of dat je moet gaan zoeken in voorgedefinieerde mappen, kan je eisen dat de gebruiker op de klassieke manier een bestand gaat selecteren van zodra de macro start.

Sub OpenOneFile()
    Dim fn As Variant
    fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Select One File To Open", , False)
    If TypeName(fn) = "Boolean" Then Exit Sub
    Workbooks.Open fn
End Sub

Dit is de Sub die je nodig hebt. Een woordje uitleg:

Dim fn As Variant

Hierin plaatsen we de filename die de gebruiker selecteert. We weten niet of een gebruiker wel een bestand zal selecteren dus kunnen we er ook niet vanuit gaan dat de GetOpenFilename-procedure een bestandsnaam teruggeeft. Daarom gebruiken we Variant omdat er ook een boolean in kan zitten als de gebruiker geen bestand selecteerde.

fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Select One File To Open", , False)

Laat de gebruiker een bestand openen en plaats het resultaat in fn.

If TypeName(fn) = "Boolean" Then Exit Sub

ALs blijkt dat fn een boolean is, dan is er geen bestand geselecteerd. We gaan dus simpelweg uit de Sub. Niet echt de beste error-handling maar dit moet je dan zelf maar aanpassen aan je wensen. Iets in een log schrijven, de Sub herstarten, … alles is mogelijk.

Workbooks.Open fn

Uiteindelijk laten we de gekozen bestandsnaam openen.

Op zich een zeer simpel stukje code die iedereen kan begrijpen en die zeer makkelijk toegevoegd kan worden aan een macro.

Plaats een reactie

Uw emailadres zal niet gepubliceerd worden.

*

U mag deze HTML tags en attributen gebruiken: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">