En Excel-makro for å avgjøre om en arbeidsbok er åpen

Mens du tenker på å åpne Excel-arbeidsbøker automatisk, bør du vurdere hva som kan skje hvis du prøver å åpne en bok som allerede er åpen. I ikke-VBA-verdenen prøver Excel å åpne filen igjen, med meldingen som advarer om at eventuelle ulagrede endringer vil gå tapt. Du kan beskytte deg mot en slik hendelse ved å sjekke om en gitt fil allerede er åpen før du prøver å åpne den igjen.

En Excel-makro for å avgjøre om en arbeidsbok er åpen

Unngå denne advarselen.

Hvordan makroen fungerer

Det første å legge merke til med denne makroen er at det er en funksjon, ikke en Sub-prosedyre. Som du vil se, ved å gjøre denne makroen til en funksjon, kan du sende et hvilket som helst filnavn til den for å teste om filen allerede er åpen.

Hovedpoenget i denne koden er enkel. Du tester et gitt filnavn for å se om det kan tilordnes en objektvariabel. Bare åpnede arbeidsbøker kan tilordnes en objektvariabel. Når du prøver å tilordne en lukket arbeidsbok til variabelen, oppstår det en feil.

Hvis den gitte arbeidsboken kan tildeles, er arbeidsboken åpen; hvis det oppstår en feil, lukkes arbeidsboken.

Funksjon FileIsOpenTest(TargetWorkbook As String) Som boolsk
'Trinn 1: Deklarer variablene dine
    Dim testbok som arbeidsbok
'Trinn 2: Be Excel om å fortsette ved feil
    Ved feil på Fortsett neste
'Trinn 3: Prøv å tilordne målarbeidsboken til TestBook
    Sett TestBook = Workbooks(TargetWorkbook)
'Trinn 4: Hvis ingen feil oppstod, er arbeidsboken allerede åpen
    Hvis Err.Number = 0 Da
    FileIsOpenTest = True
    Ellers
    FileIsOpenTest = False
    Slutt om
Avslutt funksjon

Det første makroen gjør er å erklære en strengvariabel som vil inneholde filnavnet som brukeren velger. TestBook er navnet på strengvariabelen din.

I trinn 2 forteller du Excel at det kan være en feil under kjøring av denne koden, og i tilfelle en feil gjenopptar du koden. Uten denne linjen ville koden ganske enkelt stoppet når det oppstår en feil. Igjen tester du et gitt filnavn for å se om det kan tilordnes en objektvariabel. Hvis den gitte arbeidsboken kan tildeles, er den åpen; hvis det oppstår en feil, er den lukket.

I trinn 3 prøver du å tilordne den gitte arbeidsboken til TestBook Object-variabelen. Arbeidsboken du prøver å tilordne er en strengvariabel kalt TargetWorkbook. TargetWorkbook sendes til funksjonen i funksjonserklæringene (se første linje i koden). Denne strukturen eliminerer behovet for å hardkode et arbeidsboknavn, slik at du kan sende det som en variabel i stedet.

I trinn 4 sjekker du bare om det har oppstått en feil. Hvis det ikke oppstod en feil, er arbeidsboken åpen, så du setter FileIsOpenTest til True. Hvis det oppstod en feil, er ikke arbeidsboken åpen, og du setter FileIsOpenTest til False.

Igjen kan denne funksjonen brukes til å evaluere hvilken som helst fil du sender til den, via TargetWorkbook-argumentet. Dette er det fine med å sette makroen inn i en funksjon.

Den følgende makroen viser hvordan du implementerer denne funksjonen. Her kaller du den nye FileIsOpenTest-funksjonen for å sikre at brukeren ikke kan åpne en allerede åpnet fil:

Sub Makro1()

'Trinn 1: Definer en strengvariabel

    Dim FName som variant

    Dim FNFileOnly As String

'Trinn 2: GetOpenFilename Method aktiverer dialogboksen

    FName = Application.GetOpenFilename( _

            FileFilter:="Excel-arbeidsbøker,*.xl*", _

            Title:="Velg en arbeidsbok å åpne", _

            MultiSelect:=False)

'Trinn 3: Åpne den valgte filen hvis den ikke allerede er åpnet

    Hvis FName <> False Da

    FNFileOnly = StrReverse(Left(StrReverse(FName), _

                 InStr(StrReverse(FName), ") - 1))

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]