用於確定工作簿是否打開的 Excel 宏

當您考慮自動打開 Excel 工作簿時,請考慮如果您嘗試打開已打開的工作簿可能會發生什麼情況。在非 VBA 世界中,Excel 嘗試再次打開文件,並顯示警告消息,警告任何未保存的更改都將丟失。您可以通過在嘗試再次打開之前檢查給定文件是否已打開來防止發生此類情況。

用於確定工作簿是否打開的 Excel 宏

避免出現此警告消息。

宏的工作原理

關於這個宏,首先要注意的是它是一個函數,而不是一個 Sub 過程。正如您將看到的,使這個宏成為一個函數使您可以將任何文件名傳遞給它以測試該文件是否已經打開。

這段代碼的要點很簡單。您正在測試給定的文件名以查看它是否可以分配給 Object 變量。只能將打開的工作簿分配給 Object 變量。當您嘗試將關閉的工作簿分配給變量時,會發生錯誤。

如果可以分配給定的工作簿,則該工作簿處於打開狀態;如果發生錯誤,工作簿將關閉。

函數 FileIsOpenTest(TargetWorkbook As String) As Boolean
'第 1 步:聲明變量
    Dim TestBook 作為工作簿
'第 2 步:告訴 Excel 在出錯時恢復
    出錯時繼續下一步
'第 3 步:嘗試將目標工作簿分配給 TestBook
    設置 TestBook = Workbooks(TargetWorkbook)
'第 4 步:如果沒有發生錯誤,則工作簿已經打開
    如果 Err.Number = 0 那麼
    FileIsOpenTest = True
    別的
    FileIsOpenTest = False
    萬一
結束函數

宏所做的第一件事是聲明一個 String 變量,該變量將保存用戶選擇的文件名。TestBook 是您的 String 變量的名稱。

在第 2 步中,您告訴 Excel 運行此代碼可能出錯,並在出現錯誤時恢復代碼。如果沒有這一行,代碼將在發生錯誤時簡單地停止。同樣,您測試給定的文件名以查看它是否可以分配給 Object 變量。如果可以分配給定的工作簿,則它是打開的;如果發生錯誤,則關閉。

在步驟 3 中,您嘗試將給定的工作簿分配給 TestBook Object 變量。您嘗試分配的工作簿是一個名為 TargetWorkbook 的字符串變量。TargetWorkbook 在函數聲明中傳遞給函數(參見代碼的第一行)。這種結構消除了對工作簿名稱進行硬編碼的需要,允許您將其作為變量傳遞。

在步驟 4 中,您只需檢查是否發生錯誤。如果未發生錯誤,則工作簿已打開,因此您將 FileIsOpenTest 設置為 True。如果發生錯誤,則工作簿不會打開,您將 FileIsOpenTest 設置為 False。

同樣,此函數可用於評估您通過其 TargetWorkbook 參數傳遞給它的任何文件。這就是將宏放入函數的美妙之處。

下面的宏演示瞭如何實現這個功能。在這裡,您調用新的 FileIsOpenTest 函數以確保用戶無法打開已打開的文件:

子宏1()

'第一步:定義一個字符串變量

    Dim FName 作為變體

    Dim FNFileOnly 作為字符串

'第 2 步:GetOpenFilename 方法激活對話框

    FName = Application.GetOpenFilename(_

            FileFilter:="Excel 工作簿,*.xl*", _

            標題:="選擇要打開的工作簿", _

            多選:=假)

'第 3 步:如果尚未打開,請打開所選文件

    如果 FName <> False 那麼

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

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

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。