Indholdsfortegnelse:
Video: Brug hjertestarter - sådan bruges en hjertestarter. 2024
Hvis din VBA-procedure skal bede brugeren om et filnavn, kan du kunne bruge InputBox-funktionen og lade Excel-brugeren skrive noget. En indtastningsboks er normalt ikke det bedste værktøj til dette job, fordi de fleste brugere har svært ved at huske stier, backslashes, filnavne og filudvidelser. Det er med andre ord alt for nemt at skrue op, når du skriver et filnavn.
For at få en bedre løsning på dette problem, skal du bruge GetOpenFilename-metoden i applikationsobjektet, som sikrer, at din kode får hænderne på et gyldigt filnavn, herunder dets komplette sti. Metoden GetOpenFilename viser den velkendte Åbn dialogboks (en død opkald til dialogboksen Excel vises, når du vælger Fil → Åbn → Gennemse).
Metoden GetOpenFilename åbner faktisk ikke den angivne fil. Denne metode returnerer blot det bruger-valgte filnavn som en streng. Derefter kan du skrive kode for at gøre hvad du vil med filnavnet.
Syntaksen til GetOpenFilename-metoden
Den officielle syntaks af GetOpenFilename-metoden er som følger:
objekt. GetOpenFilename ([fileFilter], [filterIndex], [title], [buttonText], [multiSelect])
GetOpenFilename metode tager valgfrie argumenter nedenfor.
Argument | Hvad det gør |
---|---|
FileFilter | Bestemmer de typer af filer, der vises i dialogboksen
(f.eks. *. TXT). Du kan angive flere filtre for brugeren at vælge imellem. |
FilterIndex | Bestemmer hvilken af filfiltrene dialogboksen viser ved
standard. |
Titel | Angiver billedteksten for dialogboksens titel
bar. |
ButtonText | Ignoreret (bruges kun til Macintosh-versionen af Excel). |
MultiSelect | Hvis det er sandt, kan brugeren vælge flere filer. |
Et eksempel på GetOpenFilename
Argumentet FileFilter bestemmer, hvad der vises i dialogboksen Filer af type-rullemenuen. Dette argument består af par filfilestrenge efterfulgt af wildcard filfilterspecifikationen med kommaer, der adskiller hver del og par. Hvis udeladt, standardiserer dette argument følgende:
Alle filer (*. *), *. *
Bemærk, at denne streng består af to dele, adskilt af et komma:
Alle filer (*. *)
og
*. *
Den første del af denne streng er den tekst, der vises i rullelisten Filer af type. Den anden del bestemmer hvilke filer dialogboksen viser. For eksempel, *. * betyder alle filer.
Koden i det følgende eksempel åbner en dialogboks, der spørger brugeren om et filnavn.Proceduren definerer fem filfiltre. Bemærk, at VBA line-continuation-sekvensen bruges til at indstille filtervariablen; gør det lettere at forenkle dette ret komplicerede argument.
Sub GetImportFileName () Dim Finfo Som String Dim FilterIndex Som Lang Dim Titel Som String Dim FileName Som Variant 'Opstil liste over filfiltre FInfo = "Tekstfiler (*. Txt), *. txt, "& _" Lotusfiler (*.prn), *. prn, "& _" Kommaseparerede filer (*.csv), *. csv, "& _" ASCII-filer (*. asc), *. asc, "& _" Alle filer (*. *), *. *" ' Skærm *. * som standard FilterIndex = 5 'Indstil dialogboksen billedtekst Titel = "Vælg en fil, der skal importeres"' Hent filnavnet FileName = Program. GetOpenFilename (FInfo, _ FilterIndex, Title) 'Håndter returoplysninger fra dialogboksen Hvis FileName = False Then MsgBox "Ingen fil blev valgt. "Else MsgBox" Du valgte "& FileName End Hvis End Sub
Her vises dialogboksen Excel, når du udfører denne procedure. Udseendet kan variere afhængigt af hvilken version af Windows du bruger, og de visningsindstillinger, du har angivet.
Metoden GetOpen Filename viser en brugerdefineret dialogboks og returnerer den valgte fils sti og navn. Det åbner ikke filen.I en rigtig applikation ville du gøre noget mere meningsfuldt med filnavnet. Du kan f.eks. Åbne det ved at bruge en erklæring som dette:
Workbooks. Åbn filnavn
Bemærk, at filenName-variablen er angivet som en variantdatatype. Hvis brugeren klikker på Cancel, indeholder denne variabel en boolsk værdi (False). Ellers er FileName en streng. Derfor håndterer begge typer muligheder ved hjælp af en Variant datatype.