- 01: 名前:odyssey投稿日:2001/09/19(水) 19:48
- VBからVisio図面を描画し、最後にページ設定で「図面の内容に合わせる」
に設定しようとしていますが、うまくいきません。
設定しているソースは以下のとおりです。
ご存知の方がいらっしゃいましたら、ご教授願います。
pagObj.PageSheet.Cells("DrawingSizeType").Formula = 1
※「ファイル」メニューからページ設定を開くと、「図面の内容に合わせる」に
設定されてはいますが、見た目は図面の内容に合ってません。
またShapeSheet上も、値は設定されています。
Windows98 SE、Visio2000 Professional Editionにて開発しており
SR-1は当てていません。
よろしくお願い致します。
- 02: 名前:JOE投稿日:2002/06/18(火) 20:12
- お望みなのは、すべてのシェイプを包括する必要最小限のページサイズの設定でしょうか?近いことでしたら、以下のコードを試してください。
「近い」と申しますのは、ファイル(F) - ページ設定(U) - … によるものですと、以下のコードとは違い、選択ハンドルもテキストも包括できると言う意味です。この違いは、三角形などのようなシェイプの外側に選択ハンドルが飛び出ているシェイプを回転させたり、シェイプを突き抜けるくらいに文字を入力すると、はっきりします。
この差異を解決する方法が見つかりましたら、レスポンスしてください。
Dim w, h, lw As Double
Visio.Application.DoCmd (visCmdUFEditSelectAll) '編集/すべてを選択
Visio.Application.DoCmd (visCmdObjectGroup) '図形/グループ操作/グループ化
With ActivePage.Shapes(1)
w = .Cells("Width")
h = .Cells("Height")
lw = .Cells("LineWeight")
End With
With ActivePage.PageSheet
.Cells("PageWidth") = w + 2 * lw
.Cells("PageHeight") = h + 2 * lw
End With
Visio.Application.DoCmd (visCmdCenterDrawing) 'ツール/図面をページ中央へ
Visio.Application.DoCmd (visCmdUFEditSelectAll) '編集/すべてを選択
Visio.Application.DoCmd (visCmdObjectUngroup) '図形/グループ操作/グループ解除
Visio.Application.DoCmd (visCmdViewFitInWindow) '表示/ページ全体を表示
- 03: 名前:JOE投稿日:2002/06/26(水) 11:21
- すこし改良しました。#1の行でテキストも含む外接長方形を求めるようにしました。
BoundingBox のヘルプにもあるように、コントロール ポイントや接続ポイントの位置は、図形のセルに問い合わせるしかないようです。
Sub サブルーチン名()
Dim w As Double, h As Double, lw As Double
Dim t As Double, b As Double, l As Double, r As Double
With Visio.Application
.DoCmd (visCmdUFEditSelectAll) '編集/すべてを選択
.DoCmd (visCmdObjectGroup) '図形/グループ操作/グループ化
With ActivePage.Shapes(1)
lw = .Cells("LineWeight")
.BoundingBox 0 + visBBoxUprightWH + visBBoxUprightText + visBBoxExtents, l, b, r, t '#1
.Cells("PinX") = .Cells("PinX") - (l - lw)
.Cells("PinY") = .Cells("PinY") - (b - lw)
End With
With ActivePage.PageSheet
.Cells("PageWidth") = (r - l) + 2 * lw
.Cells("PageHeight") = (t - b) + 2 * lw
End With
.DoCmd (visCmdUFEditSelectAll) '編集/すべてを選択
.DoCmd (visCmdObjectUngroup) '図形/グループ操作/グループ解除
.DoCmd (visCmdDeselectAll) '(全ての図形選択を解除)(#2)
.DoCmd (visCmdViewFitInWindow) '表示/ページ全体を表示
End With
Visio.ActiveWindow.DeselectAll '(わたしの環境に限ってか、上の#2がうまく行かなかったので付け焼刃的に追加。(なぜでしょう?))
End Sub
■トップに戻る リロード 単独スレ表示
|