KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

 KoMaDo / Headline / category :  【VISIO全般】  【News/宣伝】  【図形・操作】  【ファイル変換】  【ShapeSheet】  【VB/VBA】  【雑談その他】 ;

661 :印刷機能について (02)  662 :ポップアップメニューについて (05)  663 :シェイプ名称 (02)  664 :曲線を線分で表現するには (02)  665 :カスタムツールバーに (02)  666 :shapeオブジェクトのフォントサイズ変更 (03)  667 :座標の判定 (01)  668 :全Sectionの全Rowの全Cellを取得 (07)  669 :レイヤに属するシェイプ (03)  670 :STRSAMEEX関数について (03)  671 :VBAとVBのちがい (03)  672 :SelectionChangedイベントの取得について (02)  673 :カスタムメニュー (03)  674 :VC++によるカスタムプロパティへの値の設定方法 (07)  675 :StatusBar への表示 (02)  676 :GlueToメソッドの利用方法 (05)  677 :画面からのデータの取得 (07)  678 :右ショートカットメニューのカスタマイズ (05)  679 :PRINTがうまくいきません。 (03)  680 :ステンシル内のマスタシェイプ名を取得する方法? (03)  681 :VBのフォームにステンシルのシェイプを表示できる? (03)  682 :VBAのWindow表示について (02)  683 :VC++から作図したい (04)  684 :ユーザーインターフェースのカスタマイズ (06)  685 :VBのコントロールのライセンス (03)  686 :VisioWindowでのフォームの表示について (07)  687 :テンプレートとファイル (03)  688 :VSL の配布ってどうするんですか? (03)  689 :ユーザーインターフェースについて (08)  690 :図形と図形の接続について (07)  691 :ステンシルのプロシージャを呼び出す方法 (03)  692 :connectsコレクションのオブジェクト数 (04)  693 :[リンクを破棄します]ダイアログを出さない方法 (04)  694 :あらかじめ決めてある画像を取込むには (03)  695 :Deleteイベントで別シェイプを削除 (04)  696 :「オートメーション」を作成しました。(01) 
ログ検索  リロード  前のページ  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 次のページ  総てのスレッド  スレッド総数 696661 - 670 を表示


661: 印刷機能について  全レス

01: 名前:VisioMania投稿日:2000/07/19(水) 15:20
・メニューからの印刷で部数やページ範囲を指定しますが、これをVBAのprintメソッド
などを使って実現できるのでしょうか?
・印刷ダイアログボックスの画面のカスタマイズはできるのでしょうか?

02: 名前:Licca 投稿日:2000/07/20(木) 15:27
部数などの指定はループ処理をしなければ出来ないと思います。
ページ範囲の設定も一ページずつコードで指定する必要があると思います。
#そういう指定をすれば出来る
印刷プレビュー画面のカスタマイズは出来ると思いますが、ダイアログボックスをカスタマイズするのは無理でしょう。
自分でフォームを作成してオリジナルのダイアログボックスを使うようにしては如何でしょうか?

■トップに戻る リロード  単独スレ表示



662: ポップアップメニューについて  全レス

01: 名前:かど 投稿日:2000/07/13(木) 11:55
かどです。

<
上記環境で変な現象が発生し、大変困っています。
サンプルを「ファイルアップローダ」においています。

変な現象というのは、ポップアップメニューをカスタマイズすると
その図面を閉じる時 Visio32.exe がスタックオーバーフローを起こして
死んでしまう、というものです。

本現象は、Visio5.0では発生しません。
また、普通のメニューやツールバーでは落ちません。
5.0 --> 2000 になり、かなりメニュー周りが変更になっていますので、
ひょっとしたらプログラミング方法を変えなければならないのでは?とも
思っています。

もし、サンプル図面をダウンロードしていただけたら、マクロに
「MenuAdd」というのがありますから、これを実行後、すぐ図面を
閉じてみてください。

もし、「うちでは落ちません」という方もご連絡いただけたら幸いです。

宜しくお願いします。

MSのサポートに電話したら、「VisioVBAのサポートは今のところやっていません。やる
予定ではあります」と言われました。

明日(7/14)発売予定の MSVisioに期待するしかないのでしょうか?

02: 名前:かずどん投稿日:2000/07/14(金) 19:34
かずどんです。

Visio2000 + Win2000proの環境ですけど落ちます。

03: 名前:かど 投稿日:2000/07/15(土) 08:55
かどです。

>かずどんです。
>Visio2000 + Win2000proの環境ですけど落ちます。

早速のご確認、ありがとうございます。

さて、前述した現象は、Microsoft Visio2000Std では発生しませんでした。
直っているのかどうかは、Service Release1 の修正内容を見ないと
わかりませんが。
でも、この世に Visio2000 がある限りポップアップメニューは使えないです・・・。

04: 名前:Licca 投稿日:2000/07/18(火) 13:52
落ちませんでした。
Visio2000+Win98です。
でも、マクロも実行されていなかったようだけど・・・
マクロを実行するとどうなるの?(・・)
#変化が分からない

05: 名前:かど 投稿日:2000/07/20(木) 09:17
かどです。
返事が遅れましたことをお詫びいたします。

>落ちませんでした。
>Visio2000+Win98です。

・・そうですか。。。
プログラムが行けないのかな?

ちなみに Visio2000(Not For Release)版(出荷直前版)では落ちませんでした。
エンジンは製品版と同じという言葉を信じていたのに・・・。

>でも、マクロも実行されていなかったようだけど・・・
>マクロを実行するとどうなるの?(・・)
>#変化が分からない

表立った変化はありません。
ポップアップメニューに「プロパティ」、「コメント」、
コメントのサブメニューに「設定」と3つ追加している
だけのマクロです。
表示上は disable になっているかもしれません。
当方では落ちるため、成功したらどうなるか見ることが
できません。;-<

ご投稿、感謝します。

■トップに戻る リロード  単独スレ表示



663: シェイプ名称  全レス

01: 名前:osamu投稿日:2000/07/18(火) 10:53
はじめまして。こんにちは。
シェイプ名称を自動でつける事が出来る、マクロやツールがありましたら教えて下さい。
お願いします。

02: 名前:Licca投稿日:2000/07/19(水) 16:04
こんにちは、ドキュメントにシェイプを追加した際に自動的に名称を追加するには、
以下のコードで実行出来ます。
但し、基本的に同名のシェイプは自動では作成出来ませんので二つ目からは勝手にAAA.2のように番号が付加されてしまいます。

Private Sub Document_ShapeAdded(ByVal Shape As IVShape)

Dim shpObj As Visio.Shape
Set shpObj = Shape
shpObj.Name = "AAA" '←ここに自分がつけたい名前を設定する

End Sub

外していたらごめんなさい。

■トップに戻る リロード  単独スレ表示



664: 曲線を線分で表現するには  全レス

01: 名前:Licca 投稿日:2000/07/10(月) 16:13
こんにちは、Visioの曲線のデータを近い形状の線分のデータに置き換えるにはどうしたら良いでしょうか?
Pointsメソッドを使えば良いのかな、と思うのですが、数学の知識がありません。
どなたかご教授していただけませんでしょうか?

02: 名前:Licca 投稿日:2000/07/19(水) 15:55
自己レス
Pointsメソッドを利用し、曲線上の座標を取得し、その座標を元にポリラインを描く事にしました。

■トップに戻る リロード  単独スレ表示



665: カスタムツールバーに  全レス

01: 名前:Licca 投稿日:2000/07/14(金) 16:31
Visio内部のアイコンを貼り付けることって出来ないのでしょうか?(・・)

02: 名前:Licca 投稿日:2000/07/19(水) 15:49
自己レスです。
FaceIDプロパティを使って設定できることが分かりました。

■トップに戻る リロード  単独スレ表示



666: shapeオブジェクトのフォントサイズ変更  全レス

01: 名前:kami 投稿日:2000/07/16(日) 00:42
はじめまして。

現在Windows2000上にてVisio2000 Pro.を用いてツールを作成しているのですが、
drawRectangleメソッドによって生成したVisio.Shapeオブジェクトの、内部テキスト
のフォントサイズを変更する方法がわからずに悩んでおります。

一応、オンラインヘルプは一通り検索してみたつもりなのですが、未だにやり方が
わからないままです。
(DocumentオブジェクトからFontオブジェクトを取り出して・・・とか、
Shape.SectionでvisSectionCharacterを取り出してみたりとかしてみましたが・・・)

Shapeオブジェクトの内部テキストフォントのサイズ変更方法か、その情報への
ポインタでも、どなたかお教え願えませんでしょうか。

02: 名前:かど 投稿日:2000/07/16(日) 09:53
かどです。

>現在Windows2000上にてVisio2000 Pro.を用いてツールを作成しているのですが、
>drawRectangleメソッドによって生成したVisio.Shapeオブジェクトの、内部テキスト
>のフォントサイズを変更する方法がわからずに悩んでおります。
VBA からの変更でしょうか?

shpObj.Cells("Char.Size").Formula = "36pt"

でどうでしょうか?

03: 名前:kami 投稿日:2000/07/16(日) 23:32
>VBA からの変更でしょうか?
そうです。記述が抜けておりました。

>shpObj.Cells("Char.Size").Formula = "36pt"
>でどうでしょうか?
ありがとうございます。うまく設定できました。

フォントのサイズって、Shapeのセルで直接設定できたんですね・・・。
オンラインヘルプではそこまで追えなかったんですが、
見方が悪かったのでしょうか・・・。

■トップに戻る リロード  単独スレ表示



667: 座標の判定  全レス

01: 名前:かずどん投稿日:2000/07/05(水) 09:55
VISIO SQUARE のみなさん。
かずどん と申します。

お世話になります。
2点ほどわからない事があるのですが...

〜 その1 〜

新しくファイルをOpenした時に、図面の縮尺を変更するプログラムを作成
したのですが、図面縮尺を設定すると、ページサイズまで変更されてしま
います。
この為、図面の表示倍率が19081%とかとんでもない倍率になります。
40%にしたら虫眼鏡でも探せないくらい小さくなります。

ShapeObj := visio.ActivePage.PageSheet;
ShapeObj.Cells['PageScale'].Result['mm'] := ButtonOK.Tag;
ShapeObj.Cells['DrawingScale'].Result['m'] := 1;

上のコードを実行するとページサイズが
「プリンター用紙サイズにあわせる」
からサイズ指定に変更されて、サイズ指定の中のサイズの値が非常に小さ
な値に書き換わります。
そこで下記の文を入れて強制的に「プリンター用紙・・・」になるように
してみたのですが...

ShapeObj.Cells['DrawingSizeType'].Formula := '0';

値に0を入れた時だけまったく反応しません。
1以上の値の時は命令をちゃんと実行すうるのですが・・・

〜 その2 〜

シェイプの座標に関してですが、シェイプを選択して、シェイプシートを開
くとシェイプの情報がみられますが、幅、高さ、ピンの位置以外に、選択し
たシェイプの図面上の位置を取得したいのですが、方法がさっぱりわかりま
せん?

具体的には、四角形のシェイプを図面に置いて、その四角形の図面選択して
ドラッグすると下のステータスバーに左、右、下、上の情報が出ます。
この情報がほしいのです。ドラッグに関係なく・・・

方法をご存知の方おられましたら、どうぞよろしくお願いします。

-------------------------
Visio2000 pro + Windows2000 pro
-------------------------

■トップに戻る リロード  単独スレ表示



668: 全Sectionの全Rowの全Cellを取得  全レス

01: 名前:佐々木 投稿日:2000/07/03(月) 20:06
こんにちは。
Visioのオブジェクトモデルについて質問です。

シェイプの情報を全て取得したいのですが、全Sectionの全Rowの全Cellを取得するのって
For〜などを使って行うのは、無理でしょうか?
いづれもコレクションになっていないので、無理だと思っているのですが…。
取得したいSection,Row,Cellをプログラムで指定する以外に方法はないのでしょうか?
なにかいい方法がありましたら、ご教授お願いします。
Visio2000です。

02: 名前:かど 投稿日:2000/07/03(月) 20:22
かどです。
>シェイプの情報を全て取得したいのですが、全Sectionの全Rowの全Cellを取得するのって
>For〜などを使って行うのは、無理でしょうか?

SectionExits() でそのセクションが存在するかどうか調べて
RouCount分の情報を
GetResults() or GetFormulas() で一気に取得するっていうのは
どうでしょうか?

もっとスマートな方法があるかもしれません。

03: 名前:Licca 投稿日:2000/07/04(火) 10:39
Sectionインデックス定数などを指定せずにForループで一気にデータを取得するのは出来ないと思います。
面倒かもしれませんが、一つずつのSectionを指定する作業は避けられないのではないでしょうか。
かどさんの
>Row.Count分のデータ
は、その行のデフォルトのデータしか取得できないと思います。
例えばコントロールセクションのY座標のデータは取得できないとか。

外していたらごめんなさい。

04: 名前:かど投稿日:2000/07/04(火) 13:12
かどです。
言葉足らずでした。
>Sectionインデックス定数などを指定せずにForループで一気にデータを取得するのは出来ないと思います。
>面倒かもしれませんが、一つずつのSectionを指定する作業は避けられないのではないでしょうか。
確かに一つ一つのセクションをアクセスする事になりますが、例えば、
SectionとCellIndexをテーブルに持ち For で回すことは出来ると思います。

>かどさんの
>>Row.Count分のデータ
(タイプミス、修正感謝します >> Licca さん)
>は、その行のデフォルトのデータしか取得できないと思います。
>例えばコントロールセクションのY座標のデータは取得できないとか。

Dim cellTables() as Integer
...
cellTables = (visSectionControls, visCtlX, visCtlY, visCtlXDyn...)

のようなテーブルを事前に準備し、これと RowCount を織り交ぜれば
何とかなりませんかねぇ?
(テーブルを作るのが結構大変かも!!)

これも、1個ずつSection の Cell の情報をもとめるのと
大して変わらないというお話であれば、退散します。

予断ですが、2000のSetFormulas()は5.0のそれに比べてはるかに処理スピードが
遅いと思うのですが、皆さん、どうでしょう?

05: 名前:佐々木 投稿日:2000/07/04(火) 14:07
かどさん、Liccaさん、情報ありがとうございます。

GetFormulasメソッドの存在を知りませんでした。
取得したい情報のSection、Row、Cellのテーブルを定義しておいて、
それを使おうと思っていたところです。

Type TYPE_CELL_INDEX
iSec As Integer
iRow As Integer
iCel As Integer
End Type
Dim aryCells() As TYPE_CELL_INDEX

↑こんな構造体の配列です。

ところが、GetFormulasメソッドの使い方がよく分かりません。
あらかじめ取得したいCellのインデックス(Section、Row、Cell)を配列で用意して
実行すると、一気に取得できると思っているのですが、ヘルプでいう「SID_SRCStream」の指定方法について、
ヒントを頂けないでしょうか?

06: 名前:かど 投稿日:2000/07/04(火) 18:18
かどです。

既に解決されたかも知れませんが・・・。

>ところが、GetFormulasメソッドの使い方がよく分かりません。
>あらかじめ取得したいCellのインデックス(Section、Row、Cell)を配列で用意して
>実行すると、一気に取得できると思っているのですが、ヘルプでいう「SID_SRCStream」の指定方法について、
>ヒントを頂けないでしょうか?

SID_SRCStream を Dim pSrc() As Integer とします。
佐々木さんもお書きになっておられますが、pSrc() にはSection,Row,CellIndexを
記述します。
つまり、1つのセルに対し、配列3つ必要になります。

Dim aryCells() as TYPE_CELL_INDEX
Dim pSrc() as Integer
Dim pArray() as Variant
....

Redim pSrc(0)
If Shape.SectionExists(aryCells(i).iSec, 0) = True Then
For j = 1 To Shape.RowCount(aryCells(i).iSec)
Redim Preserve pSrc(Ubound(pSrc)+1)
pSrc(Ubound(pSrc)) = aryCells(i)
Redim Preserve pSrc(Ubound(pSrc)+1)
pSrc(Ubound(pSrc)) = j '''' 行番号
Redim Preserve pSrc(Ubound(pSrc)+1)
pSrc(Ubound(pSrc)) = aryCells(i).iCel '''' CellIndex
Next j
EndIf

Shape.GetFormulas pSrc(), pArray()


pSrc() の配列を増やす部分はもっとうまい方法を考えてください。:-)
ただし、このプログラムは試していませんし、タイプミスもあるかとは
思いますが、ご容赦ください。

07: 名前:佐々木投稿日:2000/07/04(火) 19:59
かどさん、ありがとうございます。
Section,Row,Cellのインデックスを順番にセットした配列を用意するのですね。
たしかにヘルプの言っているとおりです。やっと理解できました。
ありがとうございます。

■トップに戻る リロード  単独スレ表示



669: レイヤに属するシェイプ  全レス

01: 名前:佐々木 投稿日:2000/06/28(水) 22:14
はじめまして。質問させてください。

あるシェイプが属しているレイヤは取得できるのですが、
その逆である、あるレイヤに属するシェイプ(コレクション)は取得できないものでしょうか?
イメージとしては、ActivePage.Shapesでページ内のシェイプを取得できるように
レイヤ内のシェイプコレクションを取得したいのです。

できないように思うのですが、ご存じの方がいらっしゃったらご教授お願いします。
#シェイプをレイヤに割り当てるのには、LayerオブジェクトのAddメソッドを使うのに、
#できないのも変な気がします。

環境はVisio2000です。

02: 名前:Licca 投稿日:2000/06/29(木) 12:31
その方法は多分無理だと思います。

03: 名前:佐々木 投稿日:2000/06/29(木) 21:10
Liccaさんありがとうございます。
やはりそうですか…。

妥協案として思いついた苦肉の策が、取得したいレイヤ以外をすべてロックし、
その後、全選択してSelectionから取得する方法です。
ただし、ActivePageを切り替えなければいけないのと、全てのシェイプがレイヤに
属してなければいけません。イマイチです。

これならば、全シェイプをループして、特定のレイヤだけを対象にした方が
まだマシですね。

■トップに戻る リロード  単独スレ表示



670: STRSAMEEX関数について  全レス

01: 名前:中沢 投稿日:2000/06/27(火) 17:47
STRSAMEEX関数の使用方法で質問です。

STRSAMEEX関数の3番目の引数[localeID]には、何を入れたら良いのでしょうか?
ヘルプや開発ガイドを見ても載っていませんでした。
どなたか御存知の方がいましたら、お教えて頂けないでしょうか?

02: 名前:Licca 投稿日:2000/06/28(水) 09:05
良く分からないのですが、多分"英語版"とか"日本語版"とか識別するIDのことだと思います。

ApplicationオブジェクトのLanguageプロパティを使って取得することが出来ます。
以下VisioのLanguageプロパティについてのヘルプをそのまま引用
>Language プロパティ
> 使用例
>
>Language プロパティの値は、Application オブジェクトで表される Visio&reg; インスタンスのバージョンの言語 ID です。
>
>初出バージョン
>Visio 3.0
>
>構文
>intRet = Application.Language 要素 説明
>intRet 言語 ID が返されます。


備考
Language プロパティは、指定されたオブジェクトの VERSIONINFO リソースに登録されている言語 ID を返します。この ID は、さまざまな言語バージョンを識別するときに Windows が使用する標準の ID です。たとえば、Visio の米国バージョンの場合、Language プロパティは &H0409 を返します。詳細は、Microsoft Platform SDK の「VERSIONINFO」を検索してください。

03: 名前:中沢 投稿日:2000/06/28(水) 14:42
Liccaさん、ありがとうございました。

VBAで似たような関数を作って、CALLTHIS関数で呼び出して使っていたのですが、返り値が使えず不便していました。
全てのヘルプに使用例(日本語版)が載っていれば良いのですが…

■トップに戻る リロード  単独スレ表示


ログ検索  リロード  前のページ  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 次のページ  総てのスレッド  スレッド総数 696661 - 670 を表示