ブックが開いているかどうかを判断するためのExcelマクロ

Excelブックを自動的に開くことを考えるときは、すでに開いているブックを開こうとするとどうなるかを考えてください。VBA以外の世界では、Excelはファイルを再度開こうとしますが、保存されていない変更はすべて失われることを警告するメッセージが表示されます。特定のファイルを再度開こうとする前に、そのファイルがすでに開いているかどうかを確認することで、このような事態を防ぐことができます。

ブックが開いているかどうかを判断するためのExcelマクロ

この警告メッセージは避けてください。

マクロのしくみ

このマクロについて最初に気付くのは、それが関数であり、サブプロシージャではないということです。ご覧のとおり、このマクロを関数にすると、任意のファイル名をマクロに渡して、そのファイルがすでに開いているかどうかをテストできます。

このコードの要点は単純です。特定のファイル名をテストして、オブジェクト変数に割り当てることができるかどうかを確認します。オブジェクト変数に割り当てることができるのは、開いているブックのみです。閉じたブックを変数に割り当てようとすると、エラーが発生します。

指定されたワークブックを割り当てることができる場合、ワークブックは開いています。エラーが発生した場合、ブックは閉じられます。

関数FileIsOpenTest(TargetWorkbook As String)As Boolean
'ステップ1:変数を宣言する
    ワークブックとしての薄暗いテストブック
'ステップ2:エラー時に再開するようにExcelに指示する
    エラー時に次を再開
'ステップ3:ターゲットワークブックをTestBookに割り当ててみます
    TestBook = Workbooks(TargetWorkbook)を設定します
'ステップ4:エラーが発生しなかった場合、ブックは既に開いています
    Err.Number = 0の場合Then
    FileIsOpenTest = True
    そうしないと
    FileIsOpenTest = False
    終了する場合
終了機能

マクロが最初に行うことは、ユーザーが選択したファイル名を保持する文字列変数を宣言することです。TestBookは、String変数の名前です。

手順2で、このコードの実行中にエラーが発生する可能性があることをExcelに通知し、エラーが発生した場合はコードを再開します。この行がないと、エラーが発生したときにコードが停止するだけです。ここでも、特定のファイル名をテストして、オブジェクト変数に割り当てることができるかどうかを確認します。指定されたワークブックを割り当てることができる場合、それは開いています。エラーが発生した場合、それは閉じられます。

手順3では、指定されたブックをTestBookObject変数に割り当てようとします。割り当てようとしているブックは、TargetWorkbookと呼ばれる文字列変数です。TargetWorkbookは、関数宣言で関数に渡されます(コードの最初の行を参照)。この構造により、ブック名をハードコーディングする必要がなくなり、代わりに変数として渡すことができます。

手順4では、エラーが発生したかどうかを確認するだけです。エラーが発生しなかった場合は、ブックが開いているため、FileIsOpenTestをTrueに設定します。エラーが発生した場合は、ブックが開かれていないため、FileIsOpenTestをFalseに設定します。

この場合も、この関数を使用して、TargetWorkbook引数を介して渡されたファイルを評価できます。これは、マクロを関数に組み込むことの美しさです。

次のマクロは、この関数を実装する方法を示しています。ここでは、新しいFileIsOpenTest関数を呼び出して、ユーザーが既に開いているファイルを開くことができないことを確認します。

サブMacro1()

'ステップ1:文字列変数を定義する

    バリアントとしてのDimFName

    Dim FNFileOnly As String

'ステップ2:GetOpenFilenameメソッドがダイアログボックスをアクティブにします

    FName = Application.GetOpenFilename(_

            FileFilter:= "Excelワークブック、*。xl *"、_

            Title:= "開くワークブックを選択してください"、_

            MultiSelect:= False)

'ステップ3:まだ開いていない場合は、選択したファイルを開きます

    FName <> Falseの場合

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

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

Leave a Comment

SharePointOnlineドキュメントセットを使用してコンテンツを管理する

SharePointOnlineドキュメントセットを使用してコンテンツを管理する

Microsoft Office365製品スイートの1つであるSharePointOnlineでは、ドキュメントセットを使用すると、効率的にプロジェクトごとにドキュメントをグループ化し、管理できます。

SharePointでタグ付けする方法

SharePointでタグ付けする方法

SharePointでのタグ付けは、コンテンツの可視性と検索性を向上させるための重要な手法です。

Excelのソルバーエラーメッセージはどういう意味ですか?

Excelのソルバーエラーメッセージはどういう意味ですか?

Excelのソルバーが表示するエラーメッセージの意味を理解し、最適な解決策を見つける方法について詳しく解説します。

Excelの[ソルバーオプション]ダイアログボックスで[GRG非線形]タブを使用する方法

Excelの[ソルバーオプション]ダイアログボックスで[GRG非線形]タブを使用する方法

Excelの[GRG非線形]タブには、GRG非線形解法を使用しているときにソルバーが機能する方法を管理するためのボタンとボックスがあります。オプションを利用し、最適な解決策を得るためのステップを解説します。

SharePointをPowerBIと統合する方法

SharePointをPowerBIと統合する方法

SharePointをPower BIと統合する方法と、レポートをSharePointサイトに接続する方法をLuckyTemplates.comから学びます。

SharePointサイトを共有およびフォローする方法

SharePointサイトを共有およびフォローする方法

個人やグループがコミュニケーション、コラボレーション、共有、接続できるSharePointソーシャルネットワーキングツールの使用方法を学びます。

SharePoint列のデータ入力を検証する

SharePoint列のデータ入力を検証する

SharePoint列のデータ入力を検証する方法を学び、データの整合性を確保するための実践的なソリューションを提供します。

スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。