
エクセルファイル(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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
宮崎駿作品集15枚組を購入した...
-
【地球の未来】イーロン・マス...
-
【これからのAI時代はコンテキ...
-
色々な言語について。
-
Windows用アプリ作成方法
-
外付けSSDを暗号化する機能はAn...
-
coPilotにかけられた、制限(?...
-
ノートパソコンを落としてしま...
-
ハッシュ値はGitHubに書いてあ...
-
GitHubはオープンソースのプロ...
-
AndroidはLinuxディストリビュ...
-
UQモバイルやLINEモバイルやmin...
-
電線からインターネットに接続...
-
rsyncをインストールするとssh...
-
Linuxユーザーはリモートアクセ...
-
COBOLは1000年後にも使われてる...
-
パスワードマネージャーってあ...
-
bashでコマンドを正しく書けて...
-
テキストファイルの編集や閲覧...
-
マイナー保健証で、紙の時より...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイナー保健証で、紙の時より...
-
coPilotにかけられた、制限(?...
-
youtubeで、意図しない...
-
Windows用アプリ作成方法
-
soc、マイコン、ARM、組み込み...
-
世界中で、人気のある、1000万...
-
X線解析装置の出力、オートロッ...
-
宮崎駿作品集15枚組を購入した...
-
LinuxではUTF8のBOMなし、UTF8...
-
rsyncをインストールするとssh...
-
ハッシュ値はGitHubに書いてあ...
-
スマホのUSBポートやタブレット...
-
GitHubの使い方が分からないの...
-
microSDカードと外付けSSDって...
-
PCで、「リストナビゲーター」...
-
至急です。 電源入れたままSIM...
-
ノートパソコンを落としてしま...
-
AI を おちょくる質問
-
電線からインターネットに接続...
-
チャタリングが起きるのはメカ...
おすすめ情報