![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセルファイル(A.xls)内のセル($A$1)をダブルクリックすることで、エクセルファイル(B.xls)のワークシート(1)を開くVBAを作成しています。
ここまでは出来たのですが、1つ問題があります。
上記VBAでは、A.xls と B.xls が1つのエクセルファイルとして開かれてしまいます。(表現が誤っていれば申し訳ないです)
どういうことかと言いますと、A.xlsもしくは、B.xlsのどちらかを閉じると両方閉じてしまいます。また、A.xlsとB.xlsを画面上に並べて比較することができず、画面下のタブを切り替えてそれぞれのファイルを見なければなりません。
例えば、スタート→プログラム→MicroSoftOffice→EXCELを2回行えば、エクセルファイルが別ウィンドウでそれぞれ独立して立ち上がります。要は、A.xlsのセル($A$1)をダブルクリックした時にB.xlsはこのような状態で立ち上がってきて欲しいのです。
以下、作成途中のVBAコードの一部です。A.xlsのセル($A$1)をダブルクリックすると、独立したエクセルを開くことはできました。
Dim OP As Double
OP = Shell("EXCEL.EXE", vbMaximizedFocus)
しかし、B.xlsのワークシート(1)はA.xlsと1つのファイルとして開かれてしまいます。
(例:A.xlsのセル($A$1)をダブルクリックすると、B.xlsと新規EXCELファイルの全部で3つの状態になります。)
目標は、A.xlsのセル($A$1)をダブルクリックすれば、B.xlsのワークシート(1)が開く。
A.xlsのセル($B$2)をダブルクリックすれば、B.xlsのワークシート(2)が開くです。
長くなりましたが、どうかご助言よろしくお願い致します。
【作成途中VBAコード】
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
Dim OP As Double
Dim Bfile As String
Bfile = target.Address
Select Case Bfile
Case "$A$1"
OP = Shell("EXCEL.EXE", vbMaximizedFocus)
Workbooks.Open ("C:\B.xls")
Worksheets("ワークシート(1)").Activate
Case Else
End Select
End Sub
No.1ベストアンサー
- 回答日時:
>A.xlsもしくは、B.xlsのどちらかを閉じると両方閉じてしまいます。
どんなコードで閉じているのでしょうか?
通常は個別に閉じることが出来ます。
>A.xlsとB.xlsを画面上に並べて比較することができず
[ウィンドウ]-[整列] で並べて表示する事ができますよ。
コードは記録マクロでも取得できます。
---------------------------------------------------------------
CreateObject()を使えば、いくつでも別プロセスでエクセルを起動する事が出来ます。
VBからエクセルを操作する
http://hanatyan.sakura.ne.jp/vbhlp/excel1.htm
--------------------------------------------------------------
>目標は、A.xlsのセル($A$1)をダブルクリックすれば、B.xlsのワークシート(1)が開く。
A/Bのブックにコードを記入してくださいね。
下記を元に、希望のシートが開くようにコードを追加してみて下さい。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Workbook
If Target.Address = "$A$1" Then
If Workbooks.Count >= 1 Then
For Each c In Workbooks
If c.Name = "B.xls" Then
MsgBox "ブックは開いています。"
End
End If
Next
End If
End If
Workbooks.Open "B.xls"
Windows.Arrange ArrangeStyle:=xlTiled
End Sub
この回答への補足
業務で使用できたらと思い質問させていただきました。
もう少し実現したいことを詳細に書きたいと思います。
A.xlsのセル($A$1)は、1号棟1階と入力されています。
A.xlsのセル($B$2)は、2号棟2階と入力されています。
B.xlsのワークシート(1)には、1号棟1階の地図が貼っています。
B.xlsのワークシート(2)には、2号棟2階の地図が貼っています。
A.xlsを開いている状態で、1号棟1階の地図が見たくなったとします。A.xlsのセル($A$1)をダブルクリックするとB.xlsのワークシート(1)が独立した別ウィンドウで開きます。お互いのファイルが独立しているので並べて両方見ることができます。
次に、この2つのエクセルファイルが開いている状態で、再びA.xlsのセル($B$2)をダブルクリックすると、今開いているB.xlsのワークシート(2)がアクティブになるということを実現したいのです。
A.xlsのセルをダブルクリックした時のアクションに2つの意味を持たしたいのです。1つは、B.xlsが開いてなければB.xlsを開いて目的のワークシートをアクティブにする。もう1つは、B.xlsが開いていれば、その中の目的のワークシートをアクティブにする。です。
ややこしいことを長々と書きましたが、もう少し自身でも考えたいと思います。ご協力お願いします。
さっそくのご回答ありがとうございました。
わたくしの質問の書き方が悪かったので、少し違うご意見でした。
でも、知らなかったコードなどがあり、勉強になりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルVBA 既存エクセルを開きその中のシートとしてCSVファイルを開く 3 2023/05/31 13:11
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) エクセルVBA エクセルを開いた後に編集可能な状態にするには? 2 2023/06/14 11:58
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
液晶タブレット(液タブ)を一年...
-
Windowsのメモ帳でフォントを変...
-
Windows11のメモ帳の文字は見づ...
-
PowerShellにはバージョンがあ...
-
タッチタイピングのコツを教え...
-
スマホを分解するとスマホの防...
-
ノートパソコンのキーキャップ...
-
マイクロソフトのクラウドスト...
-
パソコンの手打ちとスマホの手...
-
マイクロマウス大会について
-
中華ゲーム機のGame Console R3...
-
SSDを放置していたらファイル名...
-
Arduinoやラズパイで電子辞書を...
-
スマホにのりが着いているのは...
-
パソコンがフリーズする
-
遠隔地のPCを操作したい
-
exFATとAPFSではどっちがファイ...
-
Windowsにプリインストールされ...
-
UTF-8とUTF-16とUTF-32ってどれ...
-
エアコンの下に机がありその机...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
中華ゲーム機のGame Console R3...
-
キーボードのキーにある時に押...
-
遠隔地のPCを操作したい
-
パソコンがフリーズする
-
BIOSが破損しているかどうかを...
-
ノートパソコンに付属している...
-
インストーラってインストール...
-
ファイルシステムはノートパソ...
-
BIOSはノートパソコンのバッテ...
-
HandBrakeのエンコーダ設定
-
外付けSSDを直撃雷から守る方法...
-
win11エクセルで作った表を、他...
-
インストールできない
-
延長コードの合計1500ワットを...
-
setup.exeのファイルはインスト...
-
FMV-E8240というパソコンを持っ...
-
nvidia 他に、日本の、これから...
-
光回線とモバイルルーターとSIM...
-
TRIMを外付けSSDに手動でする必...
-
外付けSSDのデータを改ざんされ...
おすすめ情報