[[20140106151318]] 『埋め込みファイル(EMBED)を開くときに、ウィンドメx(ととろいも) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『埋め込みファイル(EMBED)を開くときに、ウィンドウ表示を最大化したい』(ととろいも)

「挿入→オブジェクト→ファイルから」を使って、
別のExeclファイルを埋め込んだ場合、
ダブルクリックで埋め込みを開くと、
表示ウィンドウが「必ずマルチウィンドウ表示」に切り替わってしまいます。

これを必ず「必ず最大化表示」で開く方法はないでしょうか?

< 使用 Excel:Excel2010、使用 OS:Windows7 >


貼り付けるブックに最大化する命令を入れたら…、と思いましたが、駄目でした。

貼り付けた内容が変化しなくても良ければ、普通のボタン等にして、別ブックを開く
マクロで実現できますが、どうしてもOLE貼り付けでないと駄目ですかね?
(???) 2014/01/06(月) 16:46


確かめて頂きありがとうございます。
OLEにこだわりはありません。
「リンクではなく、埋め込んだファイルが最大化で開く」
が実現できれば、何でもOKです。
マクロでの方法をお教えいただけると助かります。
(ととろいも) 2014/01/06(月) 18:54

OLE貼り付けでなくて良いならば、「開発」−「挿入」で、ActiveXのコマンドボタンを選択、
シートにボタンを貼り、以下のようにするだけ。

 Private Sub CommandButton1_Click()
    Workbooks.Open "Book1.xlsx"
 End Sub
(???) 2014/01/07(火) 08:41

情報ありがとうございます。
説明が下手ですいません。
「埋め込んだファイル=OLE」でした。
OLEのファイルをマクロで最大化表示できれば、
と思いましたが難しそうですね。
(OLEファイルの指定方法がわからないため)
(ととろいも) 2014/01/07(月) 17:05


OLE貼り付けした他のExcelファイル、またはハイパーリンクでも同じでしたが、
別のファイルを編集状態にすると、ブックが複数あることを明示するためか、
最大表示が解除されてしまいますよね。

Excelはそういう仕様で作ったのだろうと思います。APIを使ってメッセージを送れば、
最大化復活は不可能ではないように思うのですが、Excelの子ウィンドウハンドラの
情報を得るのは、かなり難しいでしょう。

OLE貼り付けに拘るなら、最大化解除を受け入れるしかないと思います。
(???) 2014/01/07(火) 17:38


技術背景含めた解説参考になります。

今回の要望のそもそもの理由は
「OLEファイルを開く → 最大化解除 → OLEファイルが別ウインドウが表示 → このOLEウインドウがExcelのMDIエリア外で出てしまう → OLEファイルが見られない、と勘違いされる」
のを回避したかったというものです。
「表示 → 整列」で見つけられるんですが、その操作を知らない人が多いので。

OLEに拘る理由は「リンク貼り付けだと、常にリンク切れの可能性がある」ためです。

最大化解除は受け入れようと思います。
(ととろいも) 2014/01/07(火) 20:41


MDI表示時の子ウィンドウ位置を大画面または複数ディスプレイで保持してしまうと、
他PCでは範囲外になって見えなくなることがよくありますね。私も不便に思います。

必ず最大化解除されるので、元のファイルを単体で開き、最大化解除した状態で
保存しておくとどうなるでしょうか?(再度、OLE貼り付けし直しが必要かも)
(???) 2014/01/08(水) 08:49


情報提供ありがとうございます。
その方法で解決することができました。
OLE貼り付け直し不要でした。
そもそもの理由を最初に言えば良かったですね。

検証不足&環境依存っぽい&明示的じゃないやり方、なのでちょっと微妙ですが。

ちなみに、当方も「編集はマルチモニタ、観覧はシングルモニタ」です。

<<位置決めのやり方>>
1.編集側(マルチモニタ側)でExcel本体ウィンドウを最大化する。
  ※複数モニタにまたがるような最大化解除表示はNG。1つのモニタに最大化表示する。
  ※どのモニタで最大化しても問題無いと思われる(プライマリの区別なし)
2.「OLEを埋め込む親ファイル」を最大化解除で表示する。
3.親ファイルのウィンドウ左上を、
  Excel本体のウィンドウ表示エリア内の左上原点に合わせるように移動する。
4.OLE埋め込みを行う。
5.埋め込んだOLEファイルを開く(自動的に最大化解除で表示される)
6.開いたOLEファイルを、表示したい位置に移動させる。
7.その状態で親ファイルを保存する。
8.観覧側(シングルモニタ側)で開くと、表示位置が保持されている。

※2と3は必須ではないが、この方だと親の位置も固定できる。
(ととろいも) 2014/01/08(水) 10:44


 解決後ですが、
 >これを必ず「必ず最大化表示」で開く方法はないでしょうか? 

 「挿入→オブジェクト→ファイルから」を使って、作成したOleオブジェクトには、
 マクロ登録が出来ましたよね

 標準モジュールに

 Sub 最大化1()
    Dim bk As Workbook
    Dim shp As String
    shp = Application.Caller
    With ActiveSheet.OLEObjects(shp)
       .Select
       .Verb xlVerbOpen
       With .Object
          .Activate
          .Windows(1).WindowState = xlMaximized
       End With
    End With
 End Sub

 上記のVBAコードを作成したOleオブジェクトに対し、マクロ登録すると、最大化が出来ました。

 試して見てください。

(ichinose) 2014/01/09(木) 21:16


ichinoseさま

教えていただいた方法でばっちりできました。
親ファイルがマクロを持つので子(OLE)をいじる必要がないので、とても使いやすいです。
子の数が増えても同じマクロを使いまわせるのも便利です。
ありがとうございました。

(ととろいも) 2014/01/10(金) 09:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.