KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

571 :VBAでODBC経由でDBに接続する方法(早急)(01)  572 :VBAでFTPを行う方法(02)  573 :VBA上でバッチ処理を走らせる方法(03)  574 :ページ移動イベントの取得(03)  575 :VBAでテキストフィールドを追加したら表示できない(04)  576 :VISIO VCの質問なんですが・・・・(06)  577 :複数ファイルの連続印刷(01)  578 :VBAからカスタムプロパティの値の取得方法(03)  579 :指定ページのアクティブの仕方をおしえて(05)  580 :「アニメーションっぽい」ことできますか?(06)  581 :フォントを変える方法について(03)  582 :Visio終了時エラー (03)  583 :AutoCAD図面を取り込み後、VBで座標を取得できますか?(02)  584 :アドオンの開発(02)  585 :Visio VBA書籍について(03)  586 :リバースエンジニアリングできません。なぜ?(02)  587 :VBで「ツール」「オプション」の開発モードをON,OFFする(03)  588 :Window状態の取得(02)  589 :印刷プレビューウィンドウと図面ウィンドウの識別方法(01)  590 :シェイプがドロップされる直前の選択状態(01)  591 :VBからVisio2000起動後、Visio-VBAを実行したい(03)  592 :Windows2000 + Visio2000 SR1(01)  593 :Master から Shape(05)  594 :結合後のID取得方法(06)  595 :ステータスバーについて (04)  596 :特定のシェイプを削除できないようにするには (03)  597 :VisioToolBoxについて (03)  598 :Visio2000で作ったものをDXF形式にする方法について(至急) (06)  599 :VSLマクロの実行 (01)  600 :ちょっと確認させてください。 (03)  601 :グループ解除について (08)  602 :VBAで2つのシェイプをコネクタで接続したい (01)  603 :オブジェクトの座標をVBAで知りたい (05)  604 :右クリックのショートカットメニュー作成方法 (01)  605 :shapeのデータ (01)  606 :MSVCRT.DLLアドレス違反で異常終了 (01)  607 :シェイプで囲まれた中にある別のシェイプを知る方法 (05)  608 :Visio2000をsetupするとVB6ラインタイムもsetupされる? (04)  609 :VSLでのイベント処理 (01)  610 :ユーザーフォームに線を引きたい (05) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696571 - 580 を表示


571: VBAでODBC経由でDBに接続する方法(早急)  全レス

01: 名前:NBS投稿日:2001/06/15(金) 17:13
NBSです。
データベースウィザードを使用せずに、ODBC経由でDBに接続
したいのですが、方法が分かりません。
DVSをインストールしてサンプルを見ても、参考になるソースが
見つかりませんでした。
実現するためにコントロールが必要なのでしょうか?
実際にさまざまなOSで起動させるので、
極力ActiveXやコントロール等の使用は避けたいのですが。
実現方法・参考文献・参考ページ等がございましたら、
回答宜しくお願いします。

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



572: VBAでFTPを行う方法  全レス

01: 名前:NBS投稿日:2001/05/31(木) 16:43
NBSです。
VBAでVISIOファイルをUNIXサーバーに送る際に、
作成した図面ファイルをvsd形式とgif形式で
FTPで転送したいのですが、方法を知っている方が
おられましたら教えて欲しいのですが、
他の方法でも結構です。
宜しくお願いします。

02: 名前:NBS投稿日:2001/06/15(金) 11:00
FTPの方法が解決しましたので、掲示します。
6/12日に出した「バッチ処理を走らせる方法」にも関連するのですが、
バッチでFTPコマンドを走らせます。
例えばボタンを押したイベントの際に、FTPを走らせる処理を以下に
記述します。

Private Sub Cmd????????_Click()

'shell関数にてバッチ処理を立ち上げます。
If Shell("sample1.bat", vbMinimizedNoFocus) = 0 Then
'エラー処理
??????????
End If

End Sub

ここで、"sample1.bat"の内容は以下の様に記述します。

ftp -n -s:(ftpコマンドを書いたファイル名) (ftpサーバのIPアドレス又はホスト名)

(例)
ftp -n -s:FtpCommand.txt xxx.xxx.xxx.xxx

ここで、FtpCommand.txtを以下の様に記述します。

prompt off
quote user docomo
quote pass docomo
<ここにFTPのコマンドを書く>
bye

これで、ボタンを押したタイミングでFTPの操作が行えます。

図面ファイルをvsd形式とgif形式で送る方法については解明していません。
というより、必要なくなったので解決させてません。
この方法についてはファイルを新規に2つ作成するのが難点です。
他にこんな方法があります!!と言う情報を知っている方居りましたら、
返答宜しくお願いします。

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



573: VBA上でバッチ処理を走らせる方法  全レス

01: 名前:NBS投稿日:2001/06/12(火) 20:56
NBSです。
VBA部分でバッチを走らせるような関数知っていたら
教えていただきたいのですが・・・。
宜しくお願いします。

02: 名前:ひのとも投稿日:2001/06/14(木) 17:16
バッチを走らせるというのが外部プログラムを走らせるという
事であれば、WinApi 関数を使えばよろしいのでは?
関数は、CreateProcess とか他にもあると思いますが・・・
勘違いだったらすいません。

03: 名前:NBS投稿日:2001/06/15(金) 10:37
返答ありがとうございます。
結局昨日無事解決したのですが、
VBのShell()関数で、バッチを走らせる事が出来ました。
<例>DOS画面を表に出さずにバッチを走らす。
If Shell("xxxxxxxx.bat", vbMinimizedNoFocus) = 0 Then
'エラー処理
MsgBox "error!"
End If

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



574: ページ移動イベントの取得  全レス

01: 名前:NBS投稿日:2001/05/31(木) 16:09
初めまして。NBSです。VISIO歴1ヶ月です。
質問なのですが、VISIOのシェイプオブジェクトを操作する際に、
オブジェクト消去イベントを取ります。
以下の方法でやったのですが、複数ページになると
ページ移動した際にイベントが取れなくなります。
いい方法は無いでしょうか?
条件としましては、vsdの方には一切VBAを使用しないという条件です。
以下にコードを記述します。

Dim WithEvents vssObj As Visio.Document
Dim WithEvents vsdPageObj As Visio.Page

Private Sub Document_DocumentOpened(ByVal doc As IVDocument)

Set vssObj = ActiveDocument
Set vsdPageObj = ActivePage

End Sub

Private Function vsdPageObj_QueryCancelSelectionDelete(ByVal Selection As IVSelection) As Boolean

<中略>ここで消去時のイベントを書いてます。

End Function

こんな感じです。おそらくページ移動の際にvsdPageObjオブジェクト
の値が変更されていないのが問題なのは分かるのですが、
ページ移動の際のイベントをとってその際にオブジェクトを
Set vsdPageObj = ActivePageを使って変更すればよいかと
思ったのですが、ページの移動イベントが取れません。
最初は、vsdPageObj_PageChange()で取るもんだと思っていたのですが、
ページ名変更した時だけにしかイベントを取ってくれません。
知っている方おられましたら宜しくお願いします。

02: 名前:かど投稿日:2001/06/01(金) 11:27
ども。かどです。

>質問なのですが、VISIOのシェイプオブジェクトを操作する際に、
>オブジェクト消去イベントを取ります。
>以下の方法でやったのですが、複数ページになると
>ページ移動した際にイベントが取れなくなります。
>いい方法は無いでしょうか?

Windowオブジェクトの WindowTurnedToPageイベントはお試しに
なられましたか?

取り急ぎ。

03: 名前:NBS投稿日:2001/06/01(金) 12:29
かどさんこんにちは。
NBSです。
ご返答ありがとうございます。
早速試してみたら、ちゃんとイベントが取れました。
ありがとうございます。

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



575: VBAでテキストフィールドを追加したら表示できない  全レス

01: 名前:かず投稿日:2001/02/06(火) 10:30
グループのカスタムプロパティの値をグループの中のテキストに表示させようとして以下のように追加しましたが表示できませんでした。

shpobj.AddSection (visSectionTextField)
shpobj.AddRow visSectionTextField, visRowField + 0, 0
shpobj.CellsSRC(visSectionTextField, visRowField + 0, visFieldFormat).Formula = fmt
shpobj.CellsSRC(visSectionTextField, visRowField + 0, visFieldCell).Formula = vl

シェイプシートを見ると、[挿入]、[フィールド]から設定した時に行の見出しが1になるのに、文字の書式などと同じ0でした。
何行追加しても0の行が追加されるだけなのですが、[挿入]、[フィールド]から上書きすると1の行が追加され表示できるようになり、もう一度上書きすると0の行が削除されます。
やむを得ずSendKeysで緊急回避しているのですが、これってバグなのでしょうか?

02: 名前:りょう投稿日:2001/02/06(火) 16:33
ソリューション開発ガイドの付録B(シェイプシートセクション、行、セルインデックスのP506)の注釈に

 [テキストフィールドセクション]はテキストブロックにフィールドを挿入している場合のみ使用できます。

とあるのでプログラムからAddSectionするのはダメっぽいですネ(^_^;)

03: 名前:かず投稿日:2001/02/07(水) 08:07
注釈の意味はそういうことですか。。。残念。

でもこれで納得できました。ありがとうございました。

04: 名前:かず投稿日:2001/05/30(水) 12:48
ヘルプを見ていたら追加するメソッドを見つけました。
AddFieldメソッドを使えばできました。
ユーザー定義式フィールドを挿入する場合はAddCustomFieldです。

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



576: VISIO VCの質問なんですが・・・・  全レス

01: 名前:ボビー投稿日:2001/05/21(月) 11:17
初めまして。

現在、VCからVISIOをオートメーション起動し、そこからVISIOのグラフィックファイルの
オブジェクトに対して、色を変更する、テキストを変更するといった処理を行いたいと
思っています。
オートメーション起動とグラフィックファイルのオープンには成功したんですが、色や
テキストの編集の仕方がわかりません。
素人質問になっているかもしれませんが、どなたか、ご存知の方がいらっしゃいまし
たら教えてください。

それでは、よろしくお願いします。

02: 名前:ボビー投稿日:2001/05/23(水) 11:53
テキストの変更については分かりました。
ですが、色の変更についてはいまだに分かりません。

作業が進まず、非常にも待ってます。
どなたかよろしくお願いいたします

03: 名前:みや投稿日:2001/05/24(木) 14:02
私はこんな感じでコーディングしてます。

HRESULT hr ;
CVisioCell Cell ;

// その1
lc = 2 ;
hr = Shape.Cells(VString("LineColor"), Cell) ;
if ( !SUCCEEDED(hr)) goto Error ;
hr = Cell.putResult(COleVariant(""), 2) ; // 線色を赤に設定
if ( !SUCCEEDED(hr)) goto Error ;

// その2
hr = Shape.Cells(VString("LineColor"), Cell) ;
if ( !SUCCEEDED(hr)) goto Error ;
hr = Cell.putFormula(VString("2")) ; // 線色を赤に設定
if ( !SUCCEEDED(hr)) goto Error ;

コンパイルオプションに、MFC_HELPERS を指定しているため
COleVariant, VString を使用してます。

コンパイルオプションと、Visio内での文字型の扱いの関係については
DVS\Libraries\C-CPP\VAO_INC\Helpers.hを参照してください。
下記は Helpers.hのコメントの一部抜粋です。

//*** Scenarios *** (scenarii?)
//
//(do ONE of the following)
//
//
//<1> #define NO_HELPERS
// BSTR_HELPER_CLASS == BSTR
// VARIANT_HELPER_CLASS == VARIANT
//
//<2> #define BSTR_HELPER_CLASS or VARIANT_HELPER_CLASS independently.
//
//<3> #define MFC_HELPERS
// BSTR_HELPER_CLASS == VString (...if you didn't define your own.)
// VARIANT_HELPER_CLASS == COleVariant (...if you didn't define your own.)
//
//<4> Don't #define anything and take the defaults:
// BSTR_HELPER_CLASS == VBstr (...if you didn't define your own.)
// VARIANT_HELPER_CLASS == VVariant (...if you didn't define your own.)

04: 名前:ボビー投稿日:2001/05/24(木) 14:40
ご回答、ありがとうございました。

早速試してみたのですが、CVisioCellやShape等が定義されていないため
コンパイルエラーが出てしまいます。今、VISIOに関するヘッダーファイルは
vislib32.hしかないのですが、この他にも必要なヘッダーファイルというのが
あるのでしょうか?

お手数ですがよろしくお願いいたします。

05: 名前:みや投稿日:2001/05/24(木) 14:56
ボビーさんは、VCからVisioを起動しているんでしたっけ?
私のは、Visio上で動くAddonをVCで開発しているので根本が違うかもしれませんね。
CVisioShape, CVisioCell 等の定義はVisioインストールフォルダーにある
DVS\Libraries\C-CPP\VAO_INCフォルダー内のヘッダーファイルで定義されています。
Visio内のオブジェクトのコントロールはAddonで操作すると楽なんですけどねー。

06: 名前:ボビー投稿日:2001/05/24(木) 15:31
ご回答、ありがとうございます!!

CDの中にヘッダーファイルがあったんですね!
そういったものは、インストールの際にすべてマシンの中に入るものと考えていたので
全然見つからずに困っていました。

みやさんのおかげで解決の糸口が見えてきました。
本当にありがとうございました!

また、なにかあったらよろしくお願いいたします。

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



577: 複数ファイルの連続印刷  全レス

01: 名前:きのぴー投稿日:2001/05/22(火) 17:44
仕事でVISIOファイルを50枚以上印刷しないといけないのですが
1枚1枚開いて印刷していたら時間かかるじゃないですか
Autocadでは連続印刷ユーティリティがあるのを聞いたのですが
VISIOにも連続印刷ユーティリティはありますか?

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



578: VBAからカスタムプロパティの値の取得方法  全レス

01: 名前:教えてください投稿日:2001/05/15(火) 13:32
はじめまして。

VISIOのVBAで、コード上からカスタムプロパティの値(Value)を取得したいのですが、
ヘルプを見てを、そのやり方がいまいちよくわかりません。
ご存知のかたがいらっしゃいましたら、ご教授くださいますようお願いします。

02: 名前:初投稿投稿日:2001/05/15(火) 20:29
初めまして。初投稿なので特にハンドルネームは考えておりません。

私の場合ですが、Shapeを取得した後に
  value = objShape.Cells("Prop.xxx.Value")
として取得しています。"xxx"にはプロパティに設定した名前が入ります。(Row_1とか)

Valueが数値だったら、上の方法でできると思いますが、文字列の場合は
  Set objCell = objShape.Cells("Prop.xxx.Value")
  string = objCell.Formula
と一旦シェルに格納し、それからシェルの中の数式を表示すれば、文字列を
得ることができるかと思います。

03: 名前:教えてください投稿日:2001/05/16(水) 16:34
初投稿さん、はじめまして。
早速のご回答ありがとうございました。

上記方法で、危機的状況を回避することが出来ました(汗)
ほんとにありがとうございました。

VISIOのVBAに関する書籍、資料等がほとんどないので、ここの掲示板だけが頼りです。
また、わからない事があったら聞きにきます。

では

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



579: 指定ページのアクティブの仕方をおしえて  全レス

01: 名前:みけ投稿日:2001/05/15(火) 10:44
複数ページ存在するファイルで指定ページをアクティブにしたいのですが、
どのメソッドを使ったらいいのかわかりません。
ご存知の方がいらっしゃいましたら、教えてください。

02: 名前:Mae投稿日:2001/05/15(火) 12:59
Maeです。

アクティブなページをVBAから切り替える場合、

  visio.ActiveWindow.PageFromName = "ページ名1"

とします。これで、アクティブウィンドウに表示されるページが「ページ名1」になります。

  visio.ActivePage = "ページ名2"
        
とすると、アクティブページの名前が「ページ名2」に書き換えられてします
(「visio.ActivePage.Name =」と同じ意味になります)

特定のページを別ウィンドウで開きたい場合は、

        visio.ActiveDocument.Pages("ページ名3").OpenDrawWindow
        

03: 名前:みけ投稿日:2001/05/15(火) 14:28
Maeさま、ご回答ありがとうございました。
VC++で作成していたのですが、アドバイスにより解決できました。
cPage.OpenDrawWindow(cWnd);
で目的のページを開くことができました。

04: 名前:みけ投稿日:2001/05/15(火) 14:57
アクティブなページに設定するは、
VBstr cTmp;
hr = cPage.getNameU(cTmp);
if ( SUCCEEDED(hr))
{// 指定ページをアクティブに設定する
cWnd.PageFromName(cTmp);
}
でOKでした。
}

05: 名前:mikaruirui投稿日:2007/05/31(木) 22:52
強制的に「cpage」をシステム設定されてしまいました。
解除方法を知っていますか?手順を教えて下さい。

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



580: 「アニメーションっぽい」ことできますか?  全レス

01: 名前:ねこさん投稿日:2001/04/03(火) 13:01
はじめして。初投稿者のねこです。

最近、Visioに出会って色々な可能性に夢膨らませているのですが、
VBAでアニメーションっぽいコントロールって可能なんでしょうか?
私は建築図面のプラン分析するのが仕事みたいなもので、人や物の動きを
シミュレーションするツール(例えば、火災避難の予測)を作ってみたいと思っているのですが、
移動アルゴリズムを組み込んだシェイプってできないでしょうか。

具体的には、秒単位で差分移動量を定義して、Pin座標を書き変えれば、そこそこアニメぽく
動くと思うのですが、内部時計を持たせる方法もわからず・・。

ヒントになるようなことでもいいので、どなたかご教示ください。
よろしくお願いいたします。

02: 名前:ひのとも投稿日:2001/04/11(水) 08:14
ねこさんはVBは初心者ですか?
VBAにフォームを作成して、タイマーコントロールを貼り付け、
インターバルを設定して、イベント処理でシェイプを移動したり
するコードを書けば簡単なアニメーション的な事はできるはずです。

03: 名前:ねこさん投稿日:2001/04/16(月) 20:26
ひのともさん!レスありがとうございます。お察しの通りの素人で・・。

で、確かにVBにはタイマーコントロールが存在することが確認できたのですが、
VISIO2000に付いてるVBAでもタイマーコントロールは利用できますか?

VBAでその他のコントロールを選び、それらしいの(LM Runtime Controlなど)を
選んでも、プロパティにインタバールがあるのが見つからないのですが・・
それとも、Microsoft Animation Control などを試してみたらよいのでしょうか?
ちなみに、今、Microsoft VB 6.0 を注文中なので、それで組めるのでもかまわないのですが・・。

もし、この書き込みに気づきましたら、再度、情報を頂ければ幸いです。

04: 名前:masaru投稿日:2001/04/29(日) 03:54
はじめまして、

残念ながら、VBAには「タイマーコントロール」はついていないようですね...

自分、Visio2000STDとVB6Proを持っているのですが、VB6自身の「タイマーコントロール」をActiveXコントロール
内にカプセル化したものを使用すればよいのでは?
(実際、サブクラス化してExcelで使ったことがあります)

そんなに難しいことではないと思います。

05: 名前:ひのとも投稿日:2001/05/02(水) 17:33
「タイマーコントロール」はてっきりあるものだと思ってました。
masaru さんの提案で問題なくできますが、動作させるには VB6 のランタイム
が必要になるので厄介ですね。

06: 名前:ねこさん投稿日:2001/05/09(水) 22:38
情報ありがとうございました。
また、色々と教えてください。宜しくお願いします。

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


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