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

ブックが開いているかどうかを判断するための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))

スマートシート 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 は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。