|
Pasteメソッドの対象オブジェクトに、UserFormやFrameがあったので
こちらでテストしてみましたが、どうしてもCanPasteプロパティがFalse
を返してしまって成功しませんでした(Excel2000)。
なのでExcel95以前に、現在のユーザーフォームの代用として存在していた
ダイアログシートを使ってやってみたところ、コピーした図形や画像を問題なく表示
することが出来ました。
ダイアログシートの出し方ですが、ワークシートタブを右クリックし、「挿入」から「MS Excel5.0 ダイアログ」を選択するだけです。すると"OK"と"キャンセル"ボタン
が配置された "ダイアログフレーム" が一つ見つかるはずですから、マウスドラッグで
思い切り大きさを拡大します。ついでにタイトルバーにカーソルを合わせ、適当な
タイトル文字列に変更します。それからメニューの「書式」「シート」「表示しない」
を選んで非表示にしておき、図形や画像が挿入されているシートに戻り、任意の
オブジェクトを一つ選択してから以下のマクロを実行してください。
Sub Ap_Obj_Dialog()
Dim Lp As Single, Tp As Single
Dim Wp As Single, Hp As Single
If VarType(Selection) <> vbObject Then Exit Sub
With DialogSheets(1)
If .DrawingObjects.Count > 0 Then
.DrawingObjects.Delete
End If
With .DialogFrame
Lp = .Left + 5: Tp = .Top + 10
Wp = .Width - 10: Hp = .Height - 15
End With
Selection.Copy
.Paste
With .DrawingObjects(1)
.Left = Lp: .Top = Tp
.Width = Wp: .Height = Hp
End With
.Show
End With
Application.CutCopyMode = False
End Sub
ここで
>DialogFrame
というのがユーザーフォームの外枠に該当します。その形はDialogSheet上で
自由に変形できるため、Lp,Tp,Wp,Hp の各変数に入れる値は、マクロを実行
して実際に表示された状態から判断して調節(何ポイント + するか)して下さい。
|
|