KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

241 :以前ActiveだったページをActiveにする(23)  242 :GetWindowRectの誤差(?)(03)  243 :シェイプのカスタムプロパティの数(06)  244 :プロの方に質問です。(02)  245 :IVSelection型からVisio.Shape型のキャスト(04)  246 :このプログラムのフローチャートを作ってください(05)  247 :タイマーイベント(03)  248 :ListBoxに横スクロールバーを表示したい(04)  249 :印刷について(02)  250 :意外と便利なDropメソッド(01)  251 :半角→全角に変換する関数(03)  252 :VB.net2003でスキャンディスク・デフラグ(01)  253 :Microsoft Forms2.0 ListBoxのイベントについて(03)  254 :Microsoft Forms2.0 ListBoxの操作方法2(09)  255 :Excelファイルの保存終了方法(07)  256 :GUID(03)  257 :テキストの表示/非表示(04)  258 :変形中の直線の始点・終点の判別(08)  259 :カスタムプロパティに制限(04)  260 :VBAから別のBOOKのVBAにstringのパラメータ付きで起動したい(02)  261 :LabVIEWからデータベースリフレッシュを自動で行う(02)  262 :総合計 と GrandTotal(02)  263 :空白(03)  264 :VB6で作ったExeをモーダルで表示する方法(09)  265 :メニューに追加した項目が表示されない(02)  266 :追加したメニューにイベントが追加できない(05)  267 :VBで(02)  268 :dllを作成しなくても動かせる方法(05)  269 :DrawingControlでコネクタツールを使用する方法(13)  270 :カスタムプロパティーの値を取得する(13)  271 :質問です(06)  272 :VBで「CAD Drawingオブジェクト」-「変換」を実行する方法(09)  273 :VB6で印刷(10)  274 :カスタムプロパティの内容を一部削除したい(04)  275 :シェイプの色を変える(03)  276 :TabStrip、MultiPageのページ制御(03)  277 :VB6でシェイプを描く方法(13)  278 :ギリシャ文字の大文字・小文字の区別(03)  279 :マウスポインタの座標(05)  280 :モジュールの戻り値をプロパティに設定できますか?(07) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696241 - 250 を表示


241: 以前ActiveだったページをActiveにする  全レス

01: 名前:隆志投稿日:2005/02/22(火) 13:13
はじめまして
Activeなページをオブジェクト変数に代入しておき
処理の過程で、そのオブジェクト変数を使用し
ページをActiveにしたいのですが
VBAでどのように行うのでしょうか。
初心者ですので、教えていただけないでしょうか。

15: 名前:yoda投稿日:2005/02/24(木) 09:31
mAppObj.ActiveWindow.Page = gPage
は、Visio2003でなければ、使えません。

この場合は、前にも申し上げましたが、
PageFromNameプロパティになります。

このプロパティについは、Visio2003の
HELPでは参照できませんので、お手元の
Visio2002のHELPをご参照ください。

16: 名前:yoda投稿日:2005/02/24(木) 09:57
Visio2002の入っているPCはありませんが、
Visio2000のあるPCで調べたところ、
ActiveWindow.PageFromName = pg2.Name
とすれば、よいようでした。

17: 名前:隆志投稿日:2005/02/24(木) 13:00
PageFromNameがマクロで自動的に表示されないのですが
ActiveWindow.の次にPageFromNameが出力されません
以下をどのように変更するとうまく出力されるのでしょうか

Dim mAppObj As Visio.Application
Dim gPage As Visio.Page
Set mAppObj = Visio.Application
Set gPage = mAppObj.ActivePage
mAppObj.ActiveWindow.Page = ThisDocument.Pages(2)
MsgBox ActivePage.Name
Set gPage = Nothing
mAppObj.ActiveWindow.Page = gPage
MsgBox ActivePage.Name

18: 名前:yoda投稿日:2005/02/24(木) 14:46
まず、Set gPage = Nothing を削除してください。
これは、13で申し上げた事です。
次に、mAppObj.ActiveWindow.Page = gPage
を、mAppObj.ActiveWindowPageFromName=gPageName
とすれば、よいのではないでしょうか。

19: 名前:yoda投稿日:2005/02/24(木) 14:50
以上で動くなら、
Dim gPage As Visio.Page
Set gPage = ActivePage
ActiveWindow.Page = ThisDocument.Pages(2)
MsgBox ActivePage.Name
ActiveWindow.PageFromName = gPage.Name
MsgBox ActivePage.Name
でも問題ないはずですので、
よろしければ、お試しください。

20: 名前:yoda投稿日:2005/02/24(木) 14:53
失礼、それから、
mAppObj.ActiveWindow.Page = ThisDocument.Pages(2)
も、
mAppObj.ActiveWindow.PageFromName = ThisDocument.Pages(2).name
とする必要があります。

21: 名前:隆志投稿日:2005/02/24(木) 21:19
何度も申し訳ありませんが、
VBAでのマクロの自動表示の段階で
PageFromNameのプロパティが出力されませんので
エラーとなってしまいます。

22: 名前:yoda投稿日:2005/02/24(木) 21:55
Visio2003でも、コーディング時に候補として、
PageFramNameは出てきません。
しかし、かまわずにコーディングし、
動かしても問題なく動きます。
Visio2002でもたぶん同じだと思います。
Visio2003では、PagweFromNameは廃止されていますが、
下位サポートのために動くということがHELPに書いてあります。
念のために、Visio2002のHELPにPageFromNameがあるか
確認してください。
Visio2002でも廃止されているのなら、
もう一度HELPの最初のページプロパティを、
読み直してください。
何かヒントがつかめるかももしれません。

23: 名前:yoda投稿日:2005/02/24(木) 21:57
訂正します。
>もう一度HELPの最初のページプロパティを、
は、「もう一度、HELPで、最初のPageプロパティを」
の間違いでした。

■トップに戻る リロード  全レスを表示



242: GetWindowRectの誤差(?)  全レス

01: 名前:名無しさん投稿日:2005/02/20(日) 22:51
Visio2003のGetWindowRectメソッドは、
ウィンドウのクライアント領域のサイズと
位置を取得するとHELPに書いてありますが、
誤差というより、かなり大きなずれがあるよ
うですが、いかがでしょう?
Visio2003 SDKのコードライブラリーには
MapDrawingToScreenという関数のサンプル
コードがあります。この関数は、Visioの図面
上の座標をWindowの座標に変換する簡単な
関数ですが、この関数では、WindowRect
(ウインドウのクライアント領域)とViewRect
(Visioの図面ウインドウの領域)とが等しい
ものとして、計算していますが、実際には
GetWindowRect関数の誤差のため、等しく
なっていないようです。このため「雑談欄」
にあります「マウスアイコンのアニメーション」
のマクロを作るときにMapDrawingToScreen
関数が使えず、おかしなキャリブレーション
をしなければならなくなりました。

02: 名前:yoda投稿日:2005/02/21(月) 21:09
もう一つ、分かったことは、Visioのウインドウのズーム倍率
の性質です。ズームの倍率を連続的に変化させても、表示
された実際の倍率は段階的にしか変化しません。
そのため、指定したズームに対して、正確な倍率で表示され
るのは、ズームの値が以下の場合に限られるようです。
単位はパーセントです。
10,15,20,25,30,35,50,75,100,150,200,500
実際、Visioの画面で、ズームの値を最初100%にしておい
て、次に110%に変えても、画面が全く変わりません。
このため、01で問題にしたGetWindowRecの誤差をなくすこと
ができたとしても、GetWindowRecの誤差誤差を小さくすること
はできないので、意味がないかもしれません。

03: 名前:yoda投稿日:2005/02/23(水) 09:28
Visioの画面のズームについて、マイクロソフトのマーク・ネルソンさんから
以下のようなコメントをいただきました。参考になるので原文のまま、引用します。

『Visio uses specific zoom factors to show drawings and cannot display intermediate zoom levels. This was done to keep an
integral number of pixels between gridlines in the drawing. If this isn't done, shape size and alignment can appear to vary.
(How do you display a line that is supposed to be 4.5 pixels long? 4 pixels or 5 pixels?)

This is probably a technical problem that can be overcome with today's modern rendering surfaces, but Visio would need to
rewrite a big portion of its display engine first.』

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



243: シェイプのカスタムプロパティの数  全レス

01: 名前:田辺投稿日:2005/02/20(日) 22:20
シェイプが保持しているカスタムプロパティの数とユーザー定義の数を取得したいのですが
visioマクロで可能でしょうか。
シェイプのカスタムプロパティ名すべて取得できる方法はあるのでしょうか
どなたかご教授願います。

02: 名前:yoda投稿日:2005/02/20(日) 22:30
カスタムプロパティセクションの行数を数えればよいと思います。
Section(visSectionProp)に対してcountプロパティを使えば
よいと思います。

03: 名前:yoda投稿日:2005/02/20(日) 23:11
>シェイプのカスタムプロパティ名すべて取得
については、上の1行目から最終行まで、label
欄を読み取ればよいと思います。そのためには、
CellsSRCプロパティを使うとよいと思います。
詳しいことは、HELPで調べてください。

04: 名前:田辺投稿日:2005/02/20(日) 23:38
早速の回答ありがとうございます
Section(visSectionProp).countを使用し取得することができましたが
カスタムプロパティを持っていない場合エラーとなってしまいます。
(Section(visSectionProp).countの値が0)を期待したのですが、
カスタムプロパティがあるかないかの判断はどうすればいいのか
教えてください。
シェイプのカスタムプロパティ名すべて取得できる方法も
教えてください

05: 名前:田辺投稿日:2005/02/21(月) 00:09
shpObj.RowCount(Visio.visSectionProp)
で取得することができました。
ありがとうございます。

06: 名前:yoda投稿日:2005/02/21(月) 08:52
>shpObj.RowCount(Visio.visSectionProp)で取得することができました。
なるほど、こういう手もあったのですね。勉強になりました。
>シェイプのカスタムプロパティ名すべて取得できる方法も教えてください
03でお答え済みだと思いますが。

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



244: プロの方に質問です。  全レス

01: 名前:AR投稿日:2005/02/14(月) 13:57
こんにちわ。
VBAでマウスカーソルを操作することは可能ですか?
Ex 座標を決めてやるとその場所にマウスカーソルが動いてクリックするなど。

02: 名前:yoda投稿日:2005/02/14(月) 15:01
出来ません。
apiでするしかないでしょう。
本当に下手なサンプルですが、
ここにあります。
http://www.mster.co.jp/visiosquare/cgi-bin/upload/image/112.lzh [source] [check]

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



245: IVSelection型からVisio.Shape型のキャスト  全レス

01: 名前:NBS投稿日:2001/07/06(金) 18:06
こんにちは。
質問を書いておきながら、返事が遅くなりまして恐縮です。

図面を削除するイベントで
vsdPageObj_QueryCancelSelectionDelete
の引数Selectionに付いてなのですが、
このSelectionをVisio.Shape型にキャストする方法を知っている方
おられましたら回答宜しくお願いします。
一度以下の方法で試してみたのですが、「サポートされていない」
というエラーが出ました。
以下に例を示します。
<Ex.>
Dim ObjShape as Visio.Shape
Dim GetValue as Integer

ObjShape = Selection.PrimaryItem

GetValue = ObjShape.Cells("?????.Value")

シート上の値が取れない。

02: 名前:キョロちゃん投稿日:2005/02/07(月) 16:45
いつもお世話になっています。

今、私も上記の問題で悩んでいます。
私の場合は、Document_BeforeSelectionDeleteイベントのSelection(IVSelection型)
ですが、Visio.Shape型にキャストする方法は無いでしょうか?

VISIOのバージョンは2003です。
よろしくお願い致します。

03: 名前:yoda投稿日:2005/02/07(月) 17:23
IVを取り去っても、影響はないようですし、
Dim mySelection as Selection
Set mySelection =Selection
としても、正常に動きます。

shapeを取得するには、
For Each shp In Selection
   Debug.Print shp.Name
Next
で、できます。

04: 名前:キョロちゃん投稿日:2005/02/10(木) 19:32
風邪でダウンしていたため、レスが遅れました。失礼しました。

まさか、そのままFor Eachで取れるとは思いませんでした。
助かりました。ありがとうございます。

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



246: このプログラムのフローチャートを作ってください  全レス

01: 名前:プログラマー初心者投稿日:2005/01/30(日) 15:59
Option Explicit

Const MaxTeki = 47
Const MaxTaihou = 2
Const MaxTama = 2

Dim TaihouNokori As Integer
Dim Dx As Integer, Dy As Integer
Dim BakuF(MaxTeki) As Integer
Dim PODf As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim n As Integer

If KeyCode = vbKeyLeft Then
imgTaihou.Left = imgTaihou.Left - Abs(Dx) * 1.5
ElseIf KeyCode = vbKeyRight Then
imgTaihou.Left = imgTaihou.Left + Abs(Dx) * 1.5
End If

If imgTaihou.Left <= 0 Then
imgTaihou.Left = 0
ElseIf imgTaihou.Left + imgTaihou.Width >= Form1.ScaleWidth Then
imgTaihou.Left = Form1.ScaleWidth - imgTaihou.Width
End If

For n = 0 To MaxTama
If KeyCode = vbKeySpace And imgTama1(n).Visible = False Then
With imgTama1(n)
.Left = imgTaihou.Left + imgTaihou.Width / 2
.Top = imgTaihou.Top
.Visible = True
End With
Exit For
End If
Next n
End Sub

Private Sub Form_Load()

Form1.Height = 11000
Form1.Width = 13000

Randomize
Dx = 100
Dy = 100
TaihouNokori = MaxTaihou
MakeObject
InitGame
lblTokuten.Top = 120
lblTokuten.Left = Form1.ScaleWidth - lblTokuten.Width - 60
End Sub

Private Sub MakeObject()
Dim n As Integer

For n = 1 To MaxTeki
Load imgTeki(n)
Load imgTama2(n)
Next n
For n = 1 To MaxTama
Load imgTama1(n)
Next n
End Sub

Private Sub InitGame()
Dim n As Integer

imgTeki(0).Top = 480
imgTeki(0).Left = 600
BakuF(0) = -1
For n = 0 To MaxTeki
With imgTeki(n)
.Top = imgTeki(0).Top + imgTeki(0).Height * 1.5 * Int(n / 8)
.Left = imgTeki(0).Left + imgTeki(0).Width * 1.5 * (n Mod 8)
.Picture = Image1(Int(n / 16)).Picture
.Visible = True
End With
imgTama2(n).Visible = False
BakuF(n) = -1
Next n
imgPOD.Visible = False
PODf = -1

imgTaihou.Left = Form1.ScaleWidth / 2
imgTaihou.Top = Form1.ScaleHeight - imgTaihou.Height * 1.5
For n = 0 To MaxTama
imgTama1(n).Visible = False
Next n

TaihouNokoriHyouji TaihouNokori


Dx = Abs(Dx)
Dy = Abs(Dy)
End Sub

Private Sub TaihouNokoriHyouji(x As Integer)

Dim n As Integer

If x = -1 Then
Exit Sub
End If
For n = 0 To x - 1
With imgTNokori(n)
.Left = .Width * n * 1.5
.Top = Form1.ScaleHeight - .Height
.Visible = True
End With
Next n
For n = x To MaxTaihou - 1
With imgTNokori(n)
.Left = .Width * n * 1.5
.Top = Form1.ScaleHeight - .Height
.Visible = False
End With
Next n
End Sub

Private Sub
<省略されました> [全文を見る]

02: 名前:yoda投稿日:2005/01/30(日) 17:31
ここは、VisioのVBAやVBでプログラムを作る
勉強をしている人たちが、お互いに
分らない点についてを教え合う場所だと思います。
相手に作業を丸ごと一方的に依頼する場所で
はないと思います。
ですから、ご自分でフローチャートの描き方など
を勉強して、分らない点だけを、議題にした方が
よいと思います。

03: 名前:プログラマー初心者投稿日:2005/01/30(日) 22:13
すみません。特にわからないところは、
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim n As Integer

If KeyCode = vbKeyLeft Then
imgTaihou.Left = imgTaihou.Left - Abs(Dx) * 1.5
ElseIf KeyCode = vbKeyRight Then
imgTaihou.Left = imgTaihou.Left + Abs(Dx) * 1.5
End If

If imgTaihou.Left <= 0 Then
imgTaihou.Left = 0
ElseIf imgTaihou.Left + imgTaihou.Width >= Form1.ScaleWidth Then
imgTaihou.Left = Form1.ScaleWidth - imgTaihou.Width
End If

For n = 0 To MaxTama
If KeyCode = vbKeySpace And imgTama1(n).Visible = False Then
With imgTama1(n)
.Left = imgTaihou.Left + imgTaihou.Width / 2
.Top = imgTaihou.Top
.Visible = True
End With
Exit For
End If
Next n
End Sub
の部分です。この部分のフローチャートを作っていただけないでしょうか

他の部分は自分でフローチャートを作ることができました。

04: 名前:yoda投稿日:2005/01/31(月) 06:52
もし、本当にご自分で作れるようになりたいと
お思いなら、どうしたら出来るようになるか、
お考えになる方がよいと思います。
そのためには、コードの意味の分からない
点を調査した方がよいと思います。
そのためには、VisioのHelpで検索したり、
インターネットで検索したりすると、良い場合が
あると思います。
重ねて申し上げますが、ここはVisioについて
お互いに情報を交換する場所です。
相手に作業を頼む場所ではないと思います。

05: 名前:yoda投稿日:2005/02/03(木) 09:56
Visio Flow Chart Generator というのがありますが。
URLはここです。
http://www.fatesoft.com/s2f/ [source] [check]
体験版もあるようですので、試してみてはいかが?

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



247: タイマーイベント  全レス

01: 名前:けん投稿日:2005/02/01(火) 09:31
はじめまして。
タイマーイベントについて質問です。
現在、35個のタイマーを使用していて、タイマーのIntervalで設定した値で本当に処理しているか
調べたいのですがどのようにすればいいのでしょうか?
又、タイマーそれぞれの負荷を調べるにはどのようにすればいいのでしょうか?
アドバイス宜しくお願いします。

02: 名前:yoda投稿日:2005/02/01(火) 10:42
VBAにはタイマーがないそうです。
VB6については、こんなHPがありました。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t15.htm [source] [check]
ご参考には程遠いですが。

03: 名前:けん投稿日:2005/02/01(火) 11:07
回答ありがとうございます。
VBAでなく、VB6です。記述が足りなくてすみません。

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



248: ListBoxに横スクロールバーを表示したい  全レス

01: 名前:キョロちゃん投稿日:2005/01/26(水) 16:19
VISIOにフォームを追加し、その上に標準のListBoxを追加していますが、
ListBoxの表示幅より長い文字列をリスト項目に追加しても
横スクロールバーが表示されません。
自動で表示されるものと思ってたのですが、どうすれば表示させられる
のでしょうか?

02: 名前:yoda投稿日:2005/01/26(水) 19:41
スレッドを乱立させないよう協力しましょう。

03: 名前:名無しさん投稿日:2005/01/27(木) 14:50
APIを勉強してみては、いかがでしょうか?
丸投げの質問はどうかと思います。

04: 名前:M.K投稿日:2005/01/27(木) 15:43
こんにちは

With ListBox1

.ColumnWidths = .Width * 2
.AddItem "これはサンプルの長い長い文字列です"

End With

とすれば、リストボックスの幅が文字列よりも小さい場合は
水平スクロールバーが出てきます...
これでいかがですか?

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



249: 印刷について  全レス

01: 名前:ピピ投稿日:2005/01/22(土) 20:20
初歩的な質問で申し訳ありませんが、Printer.print Text1で印刷すると、
Text1が長文で改行がない場合、紙に収まりきらず全てを印刷できません。
どのようにしたら紙に収まるよう印刷出来るになるでしょうか。

よろしくお願いします。

02: 名前:yoda投稿日:2005/01/22(土) 20:43
Visioの図面の印刷ですか?
visioのVBAにPrinter.print というのが
あるのでしょうか?不勉強でした。

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



250: 意外と便利なDropメソッド  全レス

01: 名前:yoda投稿日:2005/01/22(土) 06:54
Dropメソッドは、シェイプをステンシルから
図面ページにドロップするメソッドです。
と、思っていました。
しかし、逆に、図面からステンシルにドロップ
することも、図面ページから図面ページに
ドロップすることもできるのでした。
その上、Dropメソッドは座標を指定してドロップ
出来るので、図形を指定の位置にコピーアンド
ペーストすることが出来きるのでした。
たとえば、
Public Sub CopyPaste(shp As Shape, _
x As Double, y As Double)
ActivePage.Drop shp, x, y
End Sub

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


ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696241 - 250 を表示