ビルは、スイートとして頻繁に使用する複数のワークブックのセットを持っています。

これらのワークブックの内容からのぞき見を防ぐために、彼はそれぞれにパスワードを設定しました。 Billは、スイート内の他のワークブックへのゲートウェイとしてメニューワークブックを使用します。ワークブックには、個々のワークブックへのハイパーリンクが含まれており、スイート内のワークブックにすばやくアクセスできます。

Excelはパスワードを介して各ブックをファイルレベルで保護するため、ビルがハイパーリンクをクリックするたびに、アクセスしようとしているブックのパスワードを入力する必要があります。彼は、パスワードを1回入力するだけで(スイート内のすべてのブックに同じパスワードである)、パスワードを繰り返し入力しなくてもすべてのブックにアクセスできる方法があるかどうか疑問に思います。

簡単に言うと、Excelは各ファイルを個別に処理するため、これを行うことはできません。ハイパーリンクを介して別のファイルに切り替えると、Excelがもう一度パスワードを要求します。煩わしさを回避する方法は2つしかありません。 1つは、すべての個別のワークブックを1つのワークブックに結合することです。これは、さまざまな理由から、最適なソリューションではない場合があります。 (たとえば、個々のワークブックを他のユーザーに配布する必要がある場合があります。すべてのワークブックを1つにまとめると、この機能が削除されます。)

もう1つの解決策は、ハイパーリンクを使用するのではなく、マクロを使用してブック間の切り替えを処理することです。このようなマクロシステムを設定する方法はたくさんありますが、ハイパーリンク方式を模倣する簡単な方法の1つは、「ゲートウェイ」として機能する新しいワークシートを作成することです。ハイパーリンクを追加するセルに、代わりに、リンクする各ブックのフルパスとファイル名を配置します。

ブックのファイル仕様のリストができあがるはずです。

次に、この新しいワークシートのシートタブを右クリックします。 Excelには、[コードの表示]を選択する必要があるコンテキストメニューが表示されます。これにより、VBAエディターが表示され、ワー​​クシートのコードペインが表示されます。次のマクロをコードペインに入力します:

Private Sub Worksheet_BeforeDoubleClick _   (ByVal Target As Excel.Range, Cancel As Boolean)

Dim sPW As String     Dim sFile As String

sPW = "password" 'Change to your password     sFile = Target.Value     If sFile <> "" Then         If Dir(sFile) <> "" Then             Workbooks.Open _               FileName:=sFile, _               password:=sPW             Cancel = True         End If     End If End Sub

コードで変更する必要があるのは、アクセスするブックに使用するパスワードだけです。 (コードは、すべてのブックに同じパスワードが使用されていることを前提としています。)

Alt + Qを押してVBAエディターを終了すると、ワークシートに戻ります。ブックを保存してから、パスとファイル名を含むセルのいずれかをダブルクリックします。 Excelが行うことは、パスとファイル名を取得してそのブックを開くマクロに制御を渡すことです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2886)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。