KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

221 :AutoCadの図面ファイルをVBに取り込む方法を教えて(03)  222 :VBAで構文エラーになります(01)  223 :シェイプのダブルクリックされた位置を取得方法(03)  224 :FileDialogオブジェクト(06)  225 :図形やテキストのサイズ・位置を取得したい(07)  226 :シェープ(連続線)の角点の指定(03)  227 :Excel→Visioの文字列コピーについて(17)  228 :VB6からVisio2003のプロジェクトのロックを外すには?(04)  229 :Microsoft Forms2.0 ListBoxの操作方法(05)  230 :挿入したEXCELオブジェトの下位オブジェクトへのアクセス方法(08)  231 :カスタムプロパティ変更のイベントをとらえるには(08)  232 :エクセルファイルのデータをvisioに反映させるには(02)  233 :図形を違うVSDにコピー(06)  234 :アイコン色替えでVisio.exeメモリ増加(09)  235 :シェイプの指定(02)  236 :グループ図形の中の図形のID(02)  237 :Visioのアプリケーションのサイズについて(03)  238 :指定したカスタムプロパティの削除(02)  239 :テキストファイルを自作アプリケーションで表示(06)  240 :グループ化されたレイヤの変更について(19)  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) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696221 - 230 を表示


221: AutoCadの図面ファイルをVBに取り込む方法を教えて  全レス

01: 名前:ぱんぱらぱん投稿日:2005/05/05(木) 17:15
AutoCadの図面ファイルをVisualBasic6.0のイメージ枠かPicture Boxに貼り付けたいのですが
どうやったらいいのでしょうか?ちなみにACadで外部ファイルへ出力し、イメージに貼り付けをしても
図面枠いっぱいに貼り付けられ、縮小した図になりません。初歩的な事だと思うのですが、
何とかお助け下さい。

02: 名前:M.K投稿日:2005/05/05(木) 23:29
こんばんは、

AutoCadでの保存形式にあるかどうか分かりませんが、メタファイル(EMFかWMF)形式がサポートされているのであれば、
その形式で保存したものをVBのイメージボックスに持ってきてみてはいかがでしょうか?
(Intelli CADでは、メタファイル形式が保存形式にあったため...)

※このとき、イメージボックスのStretchプロパティをTrueにしておき読み込ませます。
 読み込ませたら、イメージボックスのHeightとWidth各プロパティで拡大縮小できます。

もし、上記の手順をすでに行っている場合は申し訳ありません。

03: 名前:ぱんぱらぱん投稿日:2005/05/06(金) 17:33
ありがとうございました。
アドバイスからいろいろ考えて次の方法で解決できました。
また、AutoCadのバージョンは2000LTです。
1.図面ファイル(dwg)を「書き出し」でWMF形式で保存
  (AutoCadより直接WMFで保存できなかったため)
2.必要な図形をペイントで選択し、コピー
3.VBのイメージボックスに貼り付け
これで必要な部分だけをVBに表示できました。

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



222: VBAで構文エラーになります  全レス

01: 名前:win投稿日:2005/05/02(月) 10:41
'将棋
Private Sub 対局_Click()
Initial_set '将棋盤に駒を配置・初期化する!
For X = 1 To 15
For Y = 1 To 15
Draw Piece Board(X, Y), X, Y
Next Y
Next X
End Sub

構文エラーとなります。
Draw Piece Board(X, Y), X, Y
ここが、記述の間違いですか?
ご指導お願い致します

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



223: シェイプのダブルクリックされた位置を取得方法  全レス

01: 名前:Mita投稿日:2005/04/23(土) 00:15
初心者です。
投稿日:2002/05/31(金) 01:48の「VBからShapeをダブルクリックした時のイベントの制御」を見て、VBAのプロシージャ呼び出しまでは問題なくできたのですが、シェープ上のどこでマウスがダブルクリックされたのかを取得する方法をどなたか教えて頂けないでしょうか?
実はシェープ上でダブルクリックされた点を基準にシェープシートをいじくり、図形を変形させたいのですが、Helpを散々探しても、ダブルクリックの位置を取得する方法が判らず、3日程悩んでいます。
どなたか助けてください。
よろしくお願いします。

02: 名前:yoda投稿日:2005/04/23(土) 11:38
Visio2003でなければできませんが、
マウスイベントを使う方法があるかも知れません。

03: 名前:Mita投稿日:2005/04/24(日) 08:44
御指導、ありがとうございました。
残念ながら、当方、Visio2002なので、駄目なんですね。
でも、マウスイベントを受け取れないグラフィックソフトのプログラミングって?
バージョンアップを検討します。

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



224: FileDialogオブジェクト  全レス

01: 名前:sakudara投稿日:2005/04/21(木) 12:36
FileDialogオブジェクトはVISIOでは使えないのでしょうか?

Office 2003 StandardのPowerPointなどからは使えるのですが、
Visio 2003 Standardからは使えません。
同じOffice 11.0 Object Libraryを参照しているのに片方だけ
使えないのは不思議です。
何か設定が不足しているのでしょうか?
何かヒントをいただければ幸いです。

こちらの環境はWindowsXP SP2, Office 2003です。
開発環境(Visual Studioなど)はインストールしておりません。
よろしくお願いいたします。

02: 名前:yoda投稿日:2005/04/21(木) 14:34
何故なのかは分かりませんが、多分ダメでしょう。
Visioでは、 Docmd メソッド が使えます。
たとえば、  Application.DoCmd visCmdFileSaveAs
で、”名前をつけて保存” ダイアログが出てきます。

その他、どうしても、Office Standard のが使いたいのでしたら、
たとえば、PoerPoint の Formに Visioの Drawing Object
を貼り付けて、Power Point から Dialog を 呼び出す方法が
あるかもしれません。 実際に試したわけではないので、
本当にできるかどうか分かりませんが。

03: 名前:sakudara投稿日:2005/04/21(木) 16:11
yoda様、ご回答ありがとうございます。
やはり出来ないようですね。

実はDoCmdまわりも一応調べてみたのですが、
VBAから直接ファイルの読み書きをするためにファイルを選択
したかったので、ファイルの書き出しまでやってしまう
visCmdFileSaveAsはちょっと目的に合わないようです。

他のofficeツールにvisioを貼り付けるのとは逆ですが、
visioにexcelシートを貼り付けて、
Set fd = sheetshape.Object.Application.FileDialog(...)
のようにしたらできました。

どうもありがとうございました。
(若干気持ち悪い :-) ですけど)

04: 名前:yoda投稿日:2005/04/22(金) 06:27
>visioにexcelシートを貼り付けて、
>Set fd = sheetshape.Object.Application.FileDialog(...)
>のようにしたらできました
もう少し、詳しく教えていただぇませんか?
私も、同じようにやろうとしましたが、わかりませんでした。

05: 名前:sakudara投稿日:2005/04/22(金) 10:12
おはようございます。

結局、visioにexcelシートをあらかじめ張る必要はなくて、
そのかわりVBAの参照メニューでExcelのオブジェクトライブラリを
参照すればよいことがわかりました。
以下のようなプロシジャで一応動いています。

Sub test()
Dim x As New Excel.Application
Dim fd As Office.FileDialog
Dim f As String

Set fd = x.FileDialog(msoFileDialogOpen)

With fd
If .Show = -1 Then
f = fd.SelectedItems.Item(1)
End If
End With

Set x = Nothing

MsgBox f
End Sub

Excelのウィンドウが表示されてしまうので、
Applicationオブジェクトを開放してウィンドウを閉じています。
(MsgBoxをSetの前に持って試してみてください)

06: 名前:yoda投稿日:2005/04/22(金) 18:17
どうもありがとうございました。
大変勉強になりました。
ありがとうございます。

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



225: 図形やテキストのサイズ・位置を取得したい  全レス

01: 名前:うっき投稿日:2005/04/19(火) 12:00
直線の場合は、始点(XY)終点(XY)
テキストの場合は、XYと幅・高さ
この値を参照したいのですが、Cellsのなかの文字列を何を指定していいのかがわかりません。

また、直線の場合は、線の種類・太さ
テキストは、表示している文字列とフォントの情報を知りたいのが、
どのような手順でやったらいいか教えてください。
よろしくお願いします

02: 名前:yoda投稿日:2005/04/19(火) 14:35
Visio2000開発者マニュアルを勉強してください。
http://counter.onamae.com/chubu/r6/visio/intro.html [source] [check]
その中の、特に第 4 章 VISIO の数式( 4. 数式 )
「セクション 1 シェイプシート ウィンドウ」を勉強してください。
これがわからないと、一から十まで聞かなければわからない、
ことになります。


を勉強して

03: 名前:yoda投稿日:2005/04/19(火) 15:54
そのほか、
『visioの裏をのぞいてみよう!  ―シェイプシート徹底解説―』
も、参考になります。
http://wan6-6.hp.infoseek.co.jp/sheet/sheet_mokuji.html [source] [check]

04: 名前:うっき投稿日:2005/04/19(火) 16:33
ありがとうございます。
VisioのVBAは初めてだったので、
どこから手をつけていいか、途方にくれていたところでした。
教えていただいたサイトみて、勉強します。

05: 名前:うっき投稿日:2005/04/20(水) 10:57
線とテキストの座標はとることができました。
ありがとうござます。

頂いたサイトをみたのですが、どうしてもみつけることができなかったので
再度質問です。
直線か矩形かテキストか?というように、
シェープのタイプ(?)はどのように判定すればよいのでしょうか?
よろしくお願いします。

06: 名前:わんこ投稿日:2005/04/20(水) 13:07
ヘルプで、一次元図形、二次元図形で検索してみましょう。
一次元図形にしか存在しないセクションがありますので、それで判断できると思います。

07: 名前:yoda投稿日:2005/04/20(水) 14:47
そうですね。一次元図形と二次元図形を実際に描いてみて、
シェイプシートを比較してみれば、すぐにわかると思います。

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



226: シェープ(連続線)の角点の指定  全レス

01: 名前:IWA投稿日:2005/04/14(木) 14:24
連続線(シェープ)で複数の曲点がある場合の任意の点を指定し位置の変更及び点の削除をVBAで連続して行う事は出来ないでしょうか?
(最後の点を連続して削除など)

02: 名前:yoda投稿日:2005/04/14(木) 16:25
シェイプシートを見ると、Geometry1に線分のデータが
順番に入っているので、そのデータの行を後ろから
消してゆけばよいと思います。

03: 名前:yoda投稿日:2005/04/14(木) 17:06
以上は、折れ線の場合ですが、曲線の場合は、
Geometry1のE項のNurbs関数を編集する形に
なるのではないかと思います。詳しいことは、
わかりません。HELPをよく読んで、いろいろ
やってみるしかないでしょう。

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



227: Excel→Visioの文字列コピーについて  全レス

01: 名前:HIRO投稿日:2005/03/30(水) 10:31
Visio素人で申し訳ありませんがご教示願います。
VisioのVBAにて、以下のようにExcelセルの文字列をVisioのカスタムプロパティにセットしようとしました。

visShape.Cells("Prop.Row_5").Formula = xlApp.Range(xlCellRange).Formula

Excel側のシートのセルに「”””文字列”””」と記述し保存しておくと、
Visioのカスタムプロパティに「”文字列”」のようにセットされることはできたのですが、

本当の目的は、
Excel側のシートのセルの「文字列」と記述してあるものに対して
Visioのカスタムプロパティに「文字列」のようにセットされるようにしたいのです。

これを直接行える記述はあるのでしょうか?
それとも別途で文字列置換を行わなければならないのでしょうか?

Visio2003で作成しております。

09: 名前:yoda投稿日:2005/04/07(木) 16:28
図面を開くことが必要です。

10: 名前:HIRO投稿日:2005/04/07(木) 16:47
図面を開くとはページを開くという意味でしょうか?
省略してしまいましたが実際にはファイルを開いた後、目的のページを開くコードは記述しています。

具体的な質問として展開しますと、ExcelVBA上でCellSRCやRowCountに相当する記述はできないものかということなのですが、
シェイプひとつを更に展開するようなコードを記述しなければならないという意味なのでしょうか?

11: 名前:yoda投稿日:2005/04/07(木) 17:21
ExcelVBA上でも 04 がそのまま使えます。

12: 名前:名無しさん投稿日:2005/04/07(木) 17:25
ご参考までに、私が試行したコードは以下の通りです。

Sub test()
Dim visApp As Visio.Application
Dim doc As Visio.Document
Dim shp As Visio.Shape
Dim N As Long, I As Long
Set visApp = New Visio.InvisibleApp
Set doc = visApp.Documents.OpenEx("D:\Documents and Settings\Owner\My Documents\Visio図面\カスタムプロパティのラベルを読み取る.vsd", visOpenRW)
Set shp = visApp.ActivePage.Shapes(2)
N = shp.RowCount(visSectionProp)
For I = 0 To N - 1
Debug.Print shp.CellsSRC(visSectionProp, I, visCustPropsLabel).ResultStr("")
Next
visApp.Quit
Set visApp = Nothing
End Sub

13: 名前:HIRO投稿日:2005/04/08(金) 10:39
ご回答ありがとうございました。

レス04の記述がそのまま使えるとなると私はもっと基本的なところで間違っているのではないかと思えてきました。
以下は私のソースで余計な部分を省いたものです。

ステップインしながらウォッチウィンドウで見ると、
visShape.RowCount(visSectionProp)の値が0なのでこの記述では指定図形を見ていないのでしょうか?
ここに整数を入れて続行してみましたが、visShape.CellsSRC(visSectionProp, Indx, visCustPropsValue).Formulaに文字列が格納された様子はありませんでした。


Public Sub Visio指定図形に値をセット(thisPath As String, thisBook As String, thisSheet As String)
Dim CellValue As String
Dim visApp As Object
Dim visShape As Object
Dim visShapeCount As Long

visFileName = "Visioファイル名"
visPageName = "Visioシート名"
visShapeName = "目的の図形のID"

Set visApp = CreateObject("visio.application")
visApp.documents.Open visFileName
visApp.ActiveWindow.PageFromName = visPageName

'図形を検索
visShapeCount = visApp.ActivePage.Shapes.Count
For i = 1 To visShapeCount
Set visShape = visApp.ActivePage.Shapes(i)
If visShape.CellExists("Prop.Row_1", True) Then
If visShape.Cells("Prop.Row_1").ResultStr("") = visShapeName Then
visApp.ActiveWindow.Select visShape, 2
Exit For
End If
End If
Next i

'ここまでは予定通りの動きをしています。

'選択図形のカスタムプロパティに値を格納する
Row = 1
Col = 2
For Indx = 1 To visShape.RowCount(visSectionProp) - 1
visShape.CellsSRC(visSectionProp, Indx, visCustPropsValue).Formula = QW(Workbooks(thisBook).Worksheets(thisSheet).Cells(Row, Col).Formula)
Col = Col + 1
Next Indx

visApp.Quit
Set visApp = Nothing
Set visShape = Nothing
End Sub

Public Function QW(s As String) As String
QW = Chr(34) & s & Chr(34)
End Function

14: 名前:HIRO投稿日:2005/04/08(金) 10:41
12:名無しさんのサンプルコードを試してみようとしたのですが、
Dim visApp As Visio.Application
Dim doc As Visio.Document
Dim shp As Visio.Shape

について、「コンパイルエラー:ユーザ定義型は定義されていません。」と出ます。
すごい基本的なことが分かってないのかなと泣きたくなってきました・・・・

15: 名前:yoda投稿日:2005/04/08(金) 10:59
Visio Type Libraly への参照設定はしましたか?

16: 名前:yoda投稿日:2005/04/08(金) 11:40
参照設定については、ここに詳しい説明があります。
http://counter.onamae.com/chubu/r6/visio/DVS_15_VBA_Programming_in_Visio763.htm [source] [check]

17: 名前:HIRO投稿日:2005/04/08(金) 13:36
仰るとおりでした。
Includeが無きゃ関数使えるわけ無いですよね・・・

やっぱり根本的なところでのミスでした。お恥ずかしい・・・


でも、前に進めたので気分は結構いいです。
眠気も醒めて続きに没頭できます。

どうもありがとうございました。

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



228: VB6からVisio2003のプロジェクトのロックを外すには?  全レス

01: 名前:わだしこう投稿日:2005/03/25(金) 10:42
いつも、お世話になっております。
過去ログで、Visioプロジェクトのマクロのインポート/エクスポートの方法があり、参考にさせて頂きました。ありがとうございました。
そこで、さらに突っ込んで、VB6よりVisioプロジェクトのマクロのインポート/エクスポートを行おうとしており、Visioプロジェクトにて「保護」を掛けていた場合、解除する方法があるならば、教えて頂きたく書き込みました。
ご存じの方がおられましたら、宜しくお願いします。

02: 名前:わだしこう投稿日:2005/03/25(金) 10:43
すいません。環境は、VB6→Visio2003です。

03: 名前:yoda投稿日:2005/03/25(金) 14:19
たぶん、ないと思います。
Visioの画面で、手作業で、はずすしかないと思います。

04: 名前:わだしこう投稿日:2005/03/25(金) 15:13
yoda様
そうですか・・・。了解です。ありがとうございます。

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



229: Microsoft Forms2.0 ListBoxの操作方法  全レス

01: 名前:キョロちゃん投稿日:2005/01/06(木) 17:15
VISIO VBA初心者です。
ご存知がいましたら教えてください。

VISIO上でリストボックスを扱いたくて[コントロールの挿入]から
Microsoft Forms2.0 ListBoxを追加したのですが、
操作(例えば値挿入)しようとするとオブジェクト名が見つからないとかで
エラーになってしまいます。
ちなみに、名前は初期値の"ListBox1"から変えておらず、ソース上でも
"ListBox1"を使用しています。

コントロールを使用する場合に何か設定しないといけないのでしょうか?

02: 名前:yoda投稿日:2005/01/06(木) 21:04
ソースを見せてください。

03: 名前:yoda投稿日:2005/01/06(木) 21:14
その前の段階のようですね。
実際に行った手順を、
順番に詳しく教えてください。

04: 名前:キョロちゃん投稿日:2005/01/11(火) 10:14
自己解決できました。

原因はListBoxを扱うソースをThisDocumentではなく、
標準モジュールに記述していたためでした。

返事が遅れてすみませんでした。

05: 名前:ともちゃん投稿日:2005/03/11(金) 17:31
突然はじめて参加します。
表紙ページを1ページ目に作成し、内容ページを背景を利用して作成
しています。
表紙以外にページを表示させたいのですが、フッダで指定すると、表紙
にもページが表示されてしまいます。
何か設定方法をご存知の方、教えていただけますか?

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



230: 挿入したEXCELオブジェトの下位オブジェクトへのアクセス方法  全レス

01: 名前:ねこ投稿日:2005/03/10(木) 12:41
以前、こちらで大変お世話になったものです(多謝!)。また、よい方法をご教示ください。


VISIO上に挿入したEXCELワークシートオブジェクト(type=visTypeForeignObject)の中にあるセルを取得したい、または、シェイプのプロパティ値を指定セルに配置したいのですが、できないのでしょうか?
 具体的には、
Set shp = ActivePage.Shapes.Item("挿入したEXCEL表")
  A= shp.worksheet(“sheet.1”).range(“変数1“)
  shp.worksheet(“sheet.1”).cells(1,1)=B
などの作業をしたいのですが、参照設定なども「MS Excel Object9.0 Library 」にしてみたのですが、埒があきません。自動マクロ機能(VISO2003)で試してみても判然としなかったので、何方かよい方法をご教示ください。
宜しくお願いします。

02: 名前:yoda投稿日:2005/03/10(木) 15:56
VisioのVBAで、Visioのシェイプやなどから、OLEオブジェクトに
アクセスできるような、メソッドや、プロパティがないのかも知れませんね。
なにか、別のことを考えた方がよさそうです。

03: 名前:yoda投稿日:2005/03/11(金) 03:03
私には、難しくてよく分からないのですが、
OLEObject オブジェクト に Object プロパティ
があります。
ここに、IDispatch インターフェイス というものがあります。
この IDispatch インターフェイス について研究してみては
いかがでしょうか。インターネットで検索すると、何か見つか
ります。たとえば、
http://hyons.hp.infoseek.co.jp/prog/vb003.shtml [source] [check]

04: 名前:yoda投稿日:2005/03/11(金) 03:04
もし、なにか分かったら、教えてくださいね。

05: 名前:M.K投稿日:2005/03/11(金) 03:23
こんばんは、
サンプル(下手で申し訳ありませんが...)をVisio2002で作成しました。
アップローダーへUpしておきます。
貼り付けたExcelシートは2000(Excel9)です。

※ただ...Excelがタスクに頓挫してしまうかもしれません。
 何かいい方法はないですかね?

06: 名前:M.K投稿日:2005/03/11(金) 03:31
↑アップローダーに掲載のファイル名「123.lzh」

07: 名前:yoda投稿日:2005/03/11(金) 08:07
わたしも、ようやく、ここまで来ました。
Dim shp As Shape
Dim dis As Object
Set shp = ActivePage.Shapes(1)
Set dis = shp.Object
Debug.Print dis.Application.Name, dis.Name, dis.ActiveSheet.Name
Debug.Print dis.ActiveSheet.Range("D6").Value

08: 名前:ねこ投稿日:2005/03/11(金) 13:02
M.Kさま yodaさま
色々と有難うございます!感謝感激です!
M.Kさんに作って頂いたサンプル拝見しました。ミソは、
@ Dim objWorksheet As Excel.Worksheet
と、クラス設定で「Excel.Worksheet」を使うこと。
A Set objWorksheet =
ThisDocument.Pages(1).Shapes("ExcelSheet1").Object.Worksheets(1)
 と、シェイプの「Object プロパティ(?)」が上記表記で「Excel」の代替をしてくれるようになることなんですね。とても勉強になりました。
この形式は、色々と応用が利くかなと思い、独自に勉強していることです。改めて、多謝です。
(皆さんの書き込み時間みるとホント申し訳ないですm○m。)

追伸 yodaさま
OLEObject オブジェクト、IDispatch インターフェイスなどの用語からして勉強しなければならないのですが、後日、わかったことがまたお知らせします。まずは、上記方法でいけそうなので、なんとか前に進めそうです。

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


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