Ett Excel-makro för att avgöra om en arbetsbok är öppen

När du funderar på att automatiskt öppna Excel-arbetsböcker, fundera på vad som kan hända om du försöker öppna en bok som redan är öppen. I icke-VBA-världen försöker Excel att öppna filen igen, med meddelandet som varnar för att alla osparade ändringar kommer att gå förlorade. Du kan skydda dig mot en sådan händelse genom att kontrollera om en given fil redan är öppen innan du försöker öppna den igen.

Ett Excel-makro för att avgöra om en arbetsbok är öppen

Undvik detta varningsmeddelande.

Hur makrot fungerar

Det första man bör lägga märke till med detta makro är att det är en funktion, inte en Sub-procedur. Som du kommer att se, gör det här makrot till en funktion att du kan skicka vilket filnamn som helst till det för att testa om filen redan är öppen.

Kontentan av denna kod är enkel. Du testar ett givet filnamn för att se om det kan tilldelas en objektvariabel. Endast öppnade arbetsböcker kan tilldelas en objektvariabel. När du försöker tilldela en stängd arbetsbok till variabeln uppstår ett fel.

Om den givna arbetsboken kan tilldelas är arbetsboken öppen; om ett fel uppstår stängs arbetsboken.

Funktion FileIsOpenTest(TargetWorkbook As String) Som Boolean
'Steg 1: Deklarera dina variabler
    Dim testbok som arbetsbok
'Steg 2: Be Excel att återuppta vid fel
    Vid fel Resume Next
'Steg 3: Försök att tilldela målarbetsboken till TestBook
    Set TestBook = Workbooks(TargetWorkbook)
'Steg 4: Om inget fel inträffade är arbetsboken redan öppen
    Om Err.Number = 0 Då
    FileIsOpenTest = Sant
    Annan
    FileIsOpenTest = Falskt
    Avsluta om
Avsluta funktion

Det första makrot gör är att deklarera en String-variabel som kommer att hålla filnamnet som användaren väljer. TestBook är namnet på din strängvariabel.

I steg 2 berättar du för Excel att det kan finnas ett fel när den här koden körs och, i händelse av ett fel, återupptar koden. Utan denna rad skulle koden helt enkelt stanna när ett fel uppstår. Återigen testar du ett givet filnamn för att se om det kan tilldelas en objektvariabel. Om den givna arbetsboken kan tilldelas är den öppen; om ett fel uppstår är det stängt.

I steg 3 försöker du tilldela den givna arbetsboken till variabeln TestBook Object. Arbetsboken du försöker tilldela är en strängvariabel som heter TargetWorkbook. TargetWorkbook skickas till funktionen i funktionsdeklarationerna (se första raden i koden). Denna struktur eliminerar behovet av att hårdkoda ett arbetsboksnamn, vilket gör att du kan skicka det som en variabel istället.

I steg 4 kontrollerar du helt enkelt om ett fel uppstod. Om ett fel inte uppstod är arbetsboken öppen, så du ställer in FileIsOpenTest på True. Om ett fel inträffade är arbetsboken inte öppen och du ställer in FileIsOpenTest på False.

Återigen, den här funktionen kan användas för att utvärdera vilken fil som helst som du skickar till den, via dess TargetWorkbook-argument. Det här är det fina med att sätta makrot i en funktion.

Följande makro visar hur man implementerar denna funktion. Här anropar du den nya FileIsOpenTest-funktionen för att säkerställa att användaren inte kan öppna en redan öppnad fil:

Sub Macro1()

'Steg 1: Definiera en strängvariabel

    Dim FName som variant

    Dim FnFileOnly As String

'Steg 2: GetOpenFilename Method aktiverar dialogrutan

    FName = Application.GetOpenFilename( _

            FileFilter:="Excel-arbetsböcker,*.xl*", _

            Title:="Välj en arbetsbok att öppna", _

            MultiSelect:=False)

'Steg 3: Öppna den valda filen om den inte redan har öppnats

    Om FName <> False Då

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

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

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows

Hur man blockerar Microsoft Word från att öppna filer i skrivskyddat läge på Windows Microsoft Word öppnar filer i skrivskyddat läge, vilket gör det omöjligt att redigera dem? Oroa dig inte, metoderna finns nedan

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Hur man åtgärdar felaktig utskrift av Microsoft Word-dokument

Så här åtgärdar du fel vid utskrift av felaktiga Microsoft Word-dokument Fel vid utskrift av Word-dokument med ändrade teckensnitt, röriga stycken, saknad text eller förlorat innehåll är ganska vanligt. Men gör det inte

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Radera ritningar med penna och överstrykningspenna på dina PowerPoint-bilder

Om du har använt pennan eller överstrykningspennan för att rita på dina PowerPoint-bilder under en presentation, kan du spara ritningarna till nästa presentation eller radera dem så att nästa gång du visar den börjar du med rena PowerPoint-bilder. Följ dessa instruktioner för att radera ritningar med penna och överstrykningspenna: Radera linjer ett på […]

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteksinnehåll i SharePoint 2010

Stilbiblioteket innehåller CSS-filer, XSL-filer (Extensible Stylesheet Language) och bilder som används av fördefinierade mallsidor, sidlayouter och kontroller i SharePoint 2010. För att hitta CSS-filer i stilbiblioteket på en publiceringswebbplats: Välj Webbplatsåtgärder→Visa Allt webbplatsinnehåll. Innehållet på webbplatsen visas. Style-biblioteket ligger i […]

Formatera siffror i tusentals och miljoner i Excel-rapporter

Formatera siffror i tusentals och miljoner i Excel-rapporter

Överväldiga inte din publik med gigantiska siffror. I Microsoft Excel kan du förbättra läsbarheten för dina instrumentpaneler och rapporter genom att formatera dina siffror så att de visas i tusentals eller miljoner.

Hur man delar och följer SharePoint-webbplatser

Hur man delar och följer SharePoint-webbplatser

Lär dig hur du använder SharePoints sociala nätverksverktyg som låter individer och grupper kommunicera, samarbeta, dela och ansluta.

Hur man konverterar datum till Julian-format i Excel

Hur man konverterar datum till Julian-format i Excel

Julianska datum används ofta i tillverkningsmiljöer som en tidsstämpel och snabbreferens för ett batchnummer. Denna typ av datumkodning tillåter återförsäljare, konsumenter och serviceagenter att identifiera när en produkt tillverkades och därmed produktens ålder. Julianska datum används också i programmering, militären och astronomi. Annorlunda […]

Hur man skapar en Access Web App

Hur man skapar en Access Web App

Du kan skapa en webbapp i Access 2016. Så vad är en webbapp egentligen? Tja, webben betyder att den är online, och appen är bara en förkortning för "applikation". En anpassad webbapp är en onlinedatabasapplikation som nås från molnet med en webbläsare. Du bygger och underhåller webbappen i skrivbordsversionen […]

Snabbstartsfält i SharePoint 2010

Snabbstartsfält i SharePoint 2010

De flesta sidor i SharePoint 2010 visar en lista med navigeringslänkar i snabbstartsfältet till vänster på sidan. Snabbstartsfältet visar länkar till utvalt webbplatsinnehåll som listor, bibliotek, webbplatser och publiceringssidor. Snabbstartsfältet innehåller två mycket viktiga länkar: Länken Allt webbplatsinnehåll: […]

Vad betyder lösarens felmeddelanden i Excel?

Vad betyder lösarens felmeddelanden i Excel?

För enkla problem hittar Solver i Excel vanligtvis snabbt de optimala Solver-variabelvärdena för objektivfunktionen. Men i vissa fall har Solver problem med att hitta Solver-variabelvärdena som optimerar objektivfunktionen. I dessa fall visar Solver vanligtvis ett meddelande eller ett felmeddelande som beskriver eller diskuterar problemet som […]