Innholdsfortegnelse:
Video: Slik bruker du kart og kompass 2024
Hvis din VBA-prosedyre må spørre brukeren om et filnavn, kan du kunne bruke InputBox-funksjonen og la Excel-brukeren skrive noe. En inntastingsboks er vanligvis ikke det beste verktøyet for denne jobben, fordi de fleste brukere har det vanskelig å huske baner, tilbakemelding, filnavn og filutvidelser. Det er med andre ord altfor lett å skru opp når du skriver et filnavn.
For å få en bedre løsning på dette problemet, bruk GetOpenFilename-metoden i Programobjektet, som sikrer at koden får hendene på et gyldig filnavn, inkludert den komplette banen. GetOpenFilename-metoden viser den kjente Åpne dialogboksen (en blindring for dialogboksen Excel vises når du velger Arkiv → Åpne → Bla gjennom).
Metoden GetOpenFilename åpner faktisk ikke den angitte filen. Denne metoden returnerer bare det valgte brukernavnet som en streng. Deretter kan du skrive kode for å gjøre hva du vil med filnavnet.
Syntaxen for GetOpenFilename-metoden
Den offisielle syntaksen til GetOpenFilename-metoden er som følger:
objekt. GetOpenFilename ([fileFilter], [filterIndex], [title], [buttonText], [multiSelect])
GetOpenFilename-metoden tar valgfrie argumenter under.
Argument | Hva det gjør |
---|---|
FileFilter | Bestemmer hvilke typer filer som vises i dialogboksen
(for eksempel *. TXT). Du kan spesifisere flere filtre for brukeren å velge mellom. |
FilterIndex | Bestemmer hvilken fil filtre dialogboksen viser ved
standard. |
Tittel | Angir bildeteksten for dialogboksen tittel
bar. |
ButtonText | Ignorert (brukes kun for Macintosh-versjonen av Excel). |
MultiSelect | Hvis True, kan brukeren velge flere filer. |
Et eksempel på GetOpenFilename
Argumentet FileFilter bestemmer hva som vises i rullegardinlisten Filer av type. Dette argumentet består av par filfilterstrenger etterfulgt av wildcard filfilterspesifikasjonen, med kommaer som skiller hver del og par. Hvis utelatt, gjelder dette argumentet for følgende:
Alle filer (*. *), *. *
Merk at denne strengen består av to deler, adskilt av et komma:
Alle filer (*. *)
og
*. *
Den første delen av denne strengen er teksten som vises i rullegardinlisten Filer av type. Den andre delen avgjør hvilke filer dialogboksen viser. For eksempel, *. * betyr alle filer.
Koden i følgende eksempel åpner en dialogboks som spør brukeren om et filnavn.Prosedyren definerer fem filtre. Legg merke til at VBA line-continuation-sekvensen brukes til å sette opp filtervariabelen; å gjøre det bidrar til å forenkle dette ganske kompliserte argumentet.
Sub GetImportFileName () Dim Finfo Som String Dim FilterIndex Så Lang Dim Titel Som String Dim FileName Som Variant 'Sett opp liste over filfiltre FInfo = "Tekstfiler (*. Txt), *. txt, "& _" Lotusfiler (*.prn), *. prn, "& _" Comma Separated Files (*. csv), *. csv, "& _" ASCII-filer (*. asc), *. asc, "& _" Alle filer (*. *), *. *" ' Vise *. * som standard FilterIndex = 5 'Angi dialogboksen bildetekst Tittel = "Velg en fil som skal importeres"' Hent filnavnet FileName = Program. GetOpenFilename (FInfo, _ FilterIndex, Tittel) 'Håndter returinformasjon fra dialogboksen Hvis FileName = False Then MsgBox "Ingen fil ble valgt. "Else MsgBox" Du valgte "& FileName End hvis End Sub
Her vises dialogboksen Excel når du utfører denne prosedyren. Utseendet kan variere, avhengig av hvilken versjon av Windows du bruker, og visningsalternativene du har angitt.
Metoden GetOpen Filename viser en tilpassbar dialogboks og returnerer den valgte filens sti og navn. Det åpner ikke filen.I en ekte applikasjon ville du gjøre noe mer meningsfylt med filnavnet. For eksempel kan du åpne den ved å bruke en uttalelse som dette:
Arbeidsbøker. Åpne filnavn
Legg merke til at filenName-variabelen er deklarert som en variantdatatype. Hvis brukeren klikker Avbryt, inneholder denne variabelen en boolsk verdi (False). Ellers er FileName en streng. Derfor håndterer begge typer muligheter ved hjelp av en Variant datatype.