[[20071114233058]] 『デザインモードをマクロで』(純丸) ページの最後に飛ぶ

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

 

『デザインモードをマクロで』(純丸)

 デザインモードのオンオフをマクロで操作するって可能ですか?
 可能でしたらコードをご教授下さい。
(純丸)(o^-')b


 表示>ツールバー>ユーザー設定で
任意のツールバーにデザインモードボタンをドロップ、
ボタンを「テキストのみ表示」にしてアクセラレータキーを既存の
データ(D)と重複しないように名前の部分をカスタマイズ。
例えば、デザインモード(&D)→デザインモード(&M)とすれば、
アクセラレータキーはAlt+Mになります。
その上で、
SendKeys "%m",true
 
ただ、この方法では、Onにした時点でマクロがBreakしちゃうので
別のブックから実行してもマクロでOff(デザインモード解除)に
はできません。(ただし、デザインモードOffのブックから再度
SendKeysを実行すれば解除は出来ます)
具体的にはどんな制御をしたいのでしょう?
(みやほりん)(-_∂)b


 Onにするとリセット信号が入って、マクロがリセットされちゃうから
 あまり意味がないですね。
 BJ

 Sub StOff()
 Application.CommandBars.FindControl(ID:=1605).Reset
 MsgBox 123
 End Sub

 Sub Ston()
 Application.CommandBars.FindControl(ID:=1605).Execute
 MsgBox 123  '← 動かない
 End Sub

 こうすれば動くみたいです。 追加11:23

 Sub Ston()
 Application.OnTime Now(), "aaa"
 Application.CommandBars.FindControl(ID:=1605).Execute
 End Sub

 Sub aaa()
 DoEvents
 MsgBox 123
 End Sub


 夕べ質問をUPした後、布団の中で、なんてお馬鹿な質問を
 してしまったのだろうと反省しました。
 なぜなら、デザインモードの解除をイベントで実行するのは
 不可能だと気が付いたから。(汗)

 質問した事情はですね、Aブックに下記のイベントがあります。

 Private Sub Workbook_Activate()
   Application.ActivePrinter = "OKI MICROLINE 8350SE on LPT1:"
 End Sub

 Private Sub Workbook_Deactivate()
   Application.ActivePrinter = CreateObject("Excel.Application").ActivePrinter
 End Sub

 この時、Aブックのシートのセル範囲をコピーして、別のブックの
 シートに貼り付けようとしても出来ない。上記のDeactivateイベントで
 クリップボードがクリアされてしまうらしい。
 従って、デザインモードにしてコピペをする訳ですが、どうかすると
 Aブックに戻った時、デザインモードの解除を忘れてしまう。

 そこで、Activateイベントで、デザインモードの解除をしようと考え、
 質問におよびました。これが不可能なのは当然。

 みやほりんさん、BJさん、ありがとうございました。
 いろいろと考えて見ます。
(純丸)(o^-')b


 Cutcopymodeをフラグにすれば出来そうです。
 
 Private Sub Workbook_Deactivate()
     If Application.CutCopyMode Then exit sub
     Application.ActivePrinter = CreateObject("Excel.Application").ActivePrinter
 End Sub
(みやほりん)(-_∂)b

 みやさん、ありがとうでした。おかげで問題点が1つ解決しました。
 CutCopyModeって値の取得も出来たのですね。全然、考えつかんかった。
(純丸)(o^-')b

コメント返信:

[ 一覧(最新更新順) ]


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