KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

31 :データベースレコードの更新をVBAで (19)  32 :FromConnect と Connect の違い(02)  33 :メモリーに入れるか、再計算させるか(01)  34 :カスタムプロパティのダイアログ(03)  35 :カスタムプロパティのユーザ定義セルに値を書き込むには。(02)  36 :VB.netからVISIO2002に作成したバーコードのValueを設定する方法(04)  37 :ゆう(02)  38 :複数のステンシルやソリューションから使用するVBAコード(11)  39 :フィールドのユーザ定義式での文字列の引っ張り方(03)  40 :ステンシルに保存したVBAコードについて(02)  41 :Rowの削除(07)  42 :Geometry1 のセクションについて(17)  43 :JPEGへエクスポート(09)  44 :Visioの処理完了を取得したい。(06)  45 :セルにGUARDがかかっているかどうかの判定方法(08)  46 :ACCESSフォームをVISIO図形から開きたいです(03)  47 :非表示で立ち上げたステンシルの存在確認(09)  48 :指定座標範囲内にあるシェイプの選択について。(05)  49 :VisioからExcelのマクロを使う方法(23)  50 :四角形ツールで表を作成する方法(03)  51 :COMアドイン一覧に表示(07)  52 :シェイプの動的配置をスピードアップするには(05)  53 :Visio2007 Shape Data の Value(03)  54 :IVisEventProc.VisEventProcのsubject引数の中身(06)  55 :DrawLineに、矢印化したいのですが?(03)  56 :object.PrintOut (visPrintAll) で全ページ印刷が出来ない(02)  57 :マスタシェイプに画像を描画(21)  58 :コンボボックスの重複する値(05)  59 :ページの表示角度を変更(12)  60 :VISIO2003 AddOnNameプロパティについて(04)  61 :GUARD()関数で保護されたセルの変更(02)  62 :Cellsを使ったAskセルの参照(08)  63 :用紙上の空きスペース(06)  64 :フリーフォームで閉じたパスを描く方法(04)  65 :挿入された図のPath(03)  66 :ステンシルの表示(11)  67 :自動でステンシルを配置 (15)  68 :シェイプの削除後に処理を実行したい(04)  69 :マスターシェイプの削除(11)  70 :フォーム上のデータ(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 次のページ  総てのスレッド  スレッド総数 69631 - 40 を表示


31: データベースレコードの更新をVBAで  全レス

01: 名前:truck 投稿日:2000/08/16(水) 16:13
はじまして。初心者&発投稿です。

いくつもの図形をデータベースとリンクさせているのですが、
その都度データベースレコードの更新やリフレッシュを手動で
行うのが不便で....(全て同じ図形で同じDBテーブルにリンクしています)
VBAで一括に行う方法はないのでしょうか?

どなたか良い方法をご存知の方
がいらっしゃいましたらご教授願います。

11: 名前:yoda投稿日:2005/07/04(月) 20:55
DBUS

このマクロで分かります。
Dim ad As Addon
For Each ad In Visio.Addons
Debug.Print ad.Index; ad.NameU; " "; ad.Name
Next

12: 名前:初心者投稿日:2005/07/05(火) 14:10
yodaさん 有り難うございました。
VISIO2003においては更新が可能となりました。

ただ、現在社内においては2000が標準でまだ2003へのVerUPは
されていないのですが、上記構文だと2000では更新出来ませんで
した。

2000では構文等が異なるのでしょうか?

13: 名前:yoda投稿日:2005/07/05(火) 18:07
Addons オブジェットの初出はV4ですから、構文は同じと考えられます。
しかし、NameUの初出は2003ですから、2000では、NameUが取得で
きないかも知れません。とすると、NameUがDBUSで正しいかどうか
わかりません。ということは、Indexを使えばよいということになります。
上のマクロで確認し、もし19なら、....Addons(19).Run となるので
しょうか。

14: 名前:初心者投稿日:2005/07/05(火) 19:54
yodaさん、有り難うございました。

Indexを使えばというアドバイスを頂き、探したところ
「ActiveDocument.Application.Addons(68).Run ""」
で更新する事ができました。

とりあえずこれで対応出来そうです。

15: 名前:Kazu投稿日:2007/07/06(金) 15:42
図面上にある、シェープのカスタムプロパティに
ファイルの更新日のデータを持たせて、
データベースとリンクさせています。
この、データを更新するのに、beforesaveイベントを使い、
イベント発生時の日時をシェイプのcellに書き込み、
データベースの更新をしようとしています。

そこで、

> 「ActiveDocument.Application.Addons(68).Run ""」

を使い、更新しようとしているのですが、
「図形に保存されているリンク情報を読み込めません。データベース
ウィザードを実行し、シェイプを再度リンクして、問題を解決してください。」
とのエラーメッセージが出て更新できません。
(メニューの「データベースの更新」だとエラーも出ず更新できるのですが。)

VISIOのヘルプを調べると、引数として、
「VisioLibMain プロシージャに送られる実行メッセージを伴う
引数構造のフィールド」と記載があります。

この引数を渡せば、エラーが発生しないように思うのですが、
引数の構造をご存知の方がいたら、教えてください。

16: 名前:yoda投稿日:2007/07/08(日) 23:22
存知の方は、多分、そのウイザードを開発したサードパーティの人だけでしょう。
しかし、幸い、適当なプログラムを作れば、Visioからデーターベースに
アクセスすることは、できると思います。たとえば、DAOなどへの参照設定を
すれば、MicroSoft Accessなどへアクセスするプログラムを、つくれるそうです。
その種のプログラムのノウハウは、インターネットで、検索すると、たくさん
出てきます。

17: 名前:visGeek投稿日:2007/07/09(月) 10:56
同じ名前のアドオンを自作し、アドオンを実行したときに渡される
コマンドライン文字列を確認する、というのはどうでしょうか?
詳細な仕様までは分かりませんが、目的は達成できるかもしれません。

18: 名前:yoda投稿日:2007/07/09(月) 17:18
面白いアイデアですね。やってみる価値はありそうです。

19: 名前:Kazu投稿日:2007/07/10(火) 21:49
visGeekさん,yodaさん
ありがとうございます。
自作のアドオンを作成して、試してみます。

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



32: FromConnect と Connect の違い  全レス

01: 名前:ゆう投稿日:2007/07/06(金) 13:56
コネクタを使った場合の、FromConnect と Connect の違いがよくわかりません。
どういうときにどちらに格納されるのでしょうか?

02: 名前:yoda投稿日:2007/07/06(金) 14:25
確かに分かりにくいですねー。
私も、とても記憶できません。
以前にも、ここで一度結果を提示したことがあるのですが、
もう覚えていません。
お勧めしたいのは、Connectオブジェクトについて、そのメンバー
すべてを、ヘルプから読み取って、一覧表をおつくりになることだと、
思います。プログラムを作るときも、一覧表が、大変役に立ちます。
過去ログで、検索すれば、過去のものがあるかもしれませんが、
あるかどうか、わかりません。

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



33: メモリーに入れるか、再計算させるか  全レス

01: 名前:スレ主投稿日:2007/07/05(木) 15:23
CSVから、データを読み込んで計算をし、EXCELに書き込むソフトを
作っているのですが

計算をする際に、変数を使って使いまわすか、再計算させるかで
悩んでいます。

元CSVが、2000行4列で
計算途中では、2000行×30列ぐらいで
EXCELで書き込むのは、2000行×15列ぐらいになるんです

頻度が高いものは配列にいれるのですが、頻度が2、3回の
ものは、2000回ループをもう一度したほうがいいのか
それとも、配列に入れ込んで使いまわしたほうがいいのか
経験が少なくて、どちらを取ればいいかわかりません。

また、データは、多くても2000行ちょっとで、平均すれば、1000行ちょっとです

どちらが良いでしょうか?

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



34: カスタムプロパティのダイアログ  全レス

01: 名前:Kazu投稿日:2007/06/29(金) 11:46
はじめまして。Kazuと申します。
現在、Visioにてちょっとした図面作成用の
テンプレートを作成しているのですが、
そのテンプレートの動作として下記を考えています。
1.ファイルを開く
2.頁に設定しているカスタムプロパティの値を調べる。
3.カスタムプロパティの値が設定されていなかったら、
  カスタムプロパティのダイアログを表示する。
これらを、VBAで実行しようとしているのですが、
VBAでカスタムプロパティのダイアログを表示する
コマンドがどうしてもわかりません。
どなたかご存知の方いませんか?
ちなみに、OSはXP,VISIOはVISIO2000です。

よろしくお願いします。

02: 名前:yoda投稿日:2007/06/29(金) 12:10
Application.DoCmd visCmdFormatCustPropEdit
です。

03: 名前:Kazu投稿日:2007/06/29(金) 20:03
ありがとうございます。

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



35: カスタムプロパティのユーザ定義セルに値を書き込むには。  全レス

01: 名前:TK投稿日:2007/06/27(水) 18:50
宜しくお願い致します。VBA一年目のTKです。
カスタムプロパティにユーザ定義セル(例:Prop.IP)を作成し、
そのValue値をVBAから変更しようと考えております。
ですが、下記のコードを試したのですが、上手く行きません。

Set vsoCell=vsoShape.Cells("Prop.AssingVlan.Value")
vsoCell.FormulaForceU="AAA"

恐縮ですが、御教授お願い致します。
環境:Visio2003 SP2

02: 名前:yoda投稿日:2007/06/27(水) 20:11
テキストとして書き込むには、ダブルコーテーションにする必要があります。
シェイプシートのセルに書かれたときに、コーテーションマークで、
囲われている必要があるためです。
そのためには、shp.Cells("Scratch.A1").FormulaU = """A"""とします。

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



36: VB.netからVISIO2002に作成したバーコードのValueを設定する方法  全レス

01: 名前:ひかる子投稿日:2007/06/22(金) 18:23
OS:XP Pro SP2
VISIO2002

題名の通りです。。。

VB.netからVisioを開き、
バーコード(Microsoft Access Barcode Contlor9.0を使用)を作成しました。
さらにVB.net側からバーコードの値を設定したいのですが、
「型 'ShapeClass' でパブリック メンバ 'Value' が見つかりません。」
となってしまいます。

どなたかご教授下さい。

02: 名前:yoda投稿日:2007/06/23(土) 08:18
もうちょっと、具体的にお願いします。

03: 名前:ひかる子投稿日:2007/06/25(月) 09:14
レスが遅くなってしまい申し訳ありません。
下記にVBのコード例を載せます。
バージョンはVB.net2003です。

Private Sub btnVisio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVisio.Click

Dim appVisio As Visio.Application 'Instance of Visio
Dim docsObj As Visio.Documents 'Documents collection of instance
Dim docObj As Visio.Document 'Document to work in
Dim stnObj As Visio.Document 'Stencil that contains master
Dim mastObj As Visio.Master 'Master to drop
Dim pagsObj As Visio.Pages 'Pages collection of document
Dim pagObj As Visio.Page 'Page to work in
Dim shpObj As Visio.Shape 'Instance of master on page

'Visio起動
appVisio = CreateObject("visio.application")

docsObj = appVisio.Documents

'任意のVisioファイルを開く
docObj = docsObj.Add(Me.txtAA.Text)

'ページ指定
pagsObj = appVisio.ActiveDocument.Pages
pagObj = pagsObj.Item(1)

'ステンシルを開く
stnObj = docsObj.Open("D:\TEST\test.vss")

'ユーザ名
mastObj = stnObj.Masters("SQUARE1")
shpObj = pagObj.Drop(mastObj, 40 / 25.4, 266.5 / 25.4)
shpObj.Cells("BeginX").Formula = "40mm"
shpObj.Cells("BeginY").Formula = "266.5mm"
shpObj.Text = Me.txtBB.Text

'バーコード
mastObj = stnObj.Masters("BARCODE")
shpObj = pagObj.Drop(mastObj, 105.25 / 25.4, 237.5 / 25.4)
shpObj.Cells("BeginX").Formula = "105.25mm"
shpObj.Cells("BeginY").Formula = "237.5mm"
shpObj.Value = 1234567890

'保存
docObj.SaveAs("D:\TEST\" & Me.txtAA.Text & ".vsd")
stnObj.SaveAs("D:\TEST\test.vss")

'終了
appVisio.Quit()

End Sub

上記のバーコードの部分で、バーコードの作成には成功したのですが、
バーコードの値をVB側から指定することが出来ません。
バーコードはコード39を使っています。
値が指定できないので表示がスタート文字とストップ文字だけになってしまいます。

最初に言っていたエラーは
「 shpObj.Value = 1234567890」
の部分で起きます。
以上についてアドバイス宜しくお願いします。

04: 名前:yoda投稿日:2007/06/25(月) 10:54
Visioのshapeには、Valueプロパティは、ないと思います。

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



37: ゆう  全レス

01: 名前:Collectionやdictionaryの解放時投稿日:2007/06/23(土) 12:04
Collectionやdictionaryの解放時に中にさらにObjectを格納していた時は、その中も別に解放すべきなんでしょうか?
具体的にはいつも次のような感じでコードを書いていたのですが、そもそも必要か、疑問を持ちました。

dim col as collection
dim i as long



for i = 1 to col.count
set col.item(i) = nothing
next
set col = nothing

02: 名前:yoda投稿日:2007/06/23(土) 20:07
どうすべき、などということは、わかりませんが、
これで終わるという場合は、For文の部分は、なくとも大丈夫なような
気がいたします。

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



38: 複数のステンシルやソリューションから使用するVBAコード  全レス

01: 名前:ゆう投稿日:2007/06/22(金) 10:02
複数のステンシルやソリューションから使用する、VBAコードについてです。
それぞれに同じコードやフォームを置くのは、保守上問題があると思います。

そうしたVBAの置き場はどこにすべきでしょうか?
今、考えているのが一つのステンシルにまとめていれて、それを全てのソリューションやステンシルが開くときに、非表示で開く、というものです。
こんな方法が一般的なのでしょうか。

03: 名前:visGeek投稿日:2007/06/22(金) 13:47
VBAでもCOM-AddInを作成できます。
図面やステンシルなどにプログラムを埋める方法はおすすめできません。

04: 名前:‚ゆう投稿日:2007/06/22(金) 16:06
visGeek様(他の方でも可)
COM-AddInの作成はVisio2007ではどのようにすればできるのでしょうか?
教えてください。

05: 名前:yoda投稿日:2007/06/22(金) 17:22
私も興味があるのですが、visGeekさんのHPが参考になるかも知れません。
http://visio.seesaa.net/article/3135610.html [source] [check]

06: 名前:visGeek投稿日:2007/06/22(金) 18:14
VBAでCOM-AddInを作成する方法を
blogにアップしましたので、参考にしてください。
http://visio.seesaa.net/article/45618337.html [source] [check]

07: 名前:yoda投稿日:2007/06/22(金) 19:48
Office Dveloper, いまでも、あるのですねー!

08: 名前:ゆう投稿日:2007/06/22(金) 22:33
ありがとうございます。
まずは社にあるかどうか確認してみます。
ちなみにOffice XPとなってますが、Visio2007でも使えますよね?

09: 名前:visGeek投稿日:2007/06/23(土) 08:40
記憶が曖昧ですが、Visio2003では
Deveoper2000が使えなかったと思います。
Visio2007でもDeveloper XPが使えないかもしれません。

Developer2007にあたるものは見あたりませんが、存在するのでしょうか?

10: 名前:yoda投稿日:2007/06/23(土) 09:55
うーん、私も2007のdeveloperを探してみましたが、見つかりませんでした。
visGeekさんのHPにあるように、VisualStudio2005が、フリーで入手できますし、
Developer よりはるかに使いやすく、機能も格段と充実していますので、
VBAは使えませんが、VBが使えますので、断然お勧めだと思います。

11: 名前:‚ゆう投稿日:2007/06/23(土) 11:58
了解しました。いろいろメリット・デメリットを確認し、検討します。
ありがとうございました。

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



39: フィールドのユーザ定義式での文字列の引っ張り方  全レス

01: 名前:TK投稿日:2007/06/19(火) 14:13
VisioVBA初心者のTKです。宜しくお願いします。

フィールドのユーザ定義式を使用し、
カスタムプロパティの文字列を引っ張ってこようとして、
転びました。数値なら引っ張ってこれるのですが、文字列のみ弾かれます。
また、ユーザ定義式ではなく、カスタムプロパティでは問題なく動作できます。
何か良い方法はないでしょうか。

例:="("&prop.A&")"
Aの値が数値なら正常に表示されますが、Aが文字列の場合正常に表示されません。

02: 名前:yoda投稿日:2007/06/19(火) 16:13
普通に、メニューから、定義すれば、問題ないと思いますが。
そのとき、シェイプシートのText Fieldsセクションの、Valueセルには、
単純に、prop.Row_1 のように、なっています。

03: 名前:TK投稿日:2007/06/20(水) 23:44
yodaさん、ありがとうございます。
昨日、同様のことを実施したのですが、
問題なく、表示されました。

御手数をお掛けしました。

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



40: ステンシルに保存したVBAコードについて  全レス

01: 名前:ゆう投稿日:2007/06/18(月) 15:02
ステンシルにVBAコードを書き、フォームを開くようにしています。
そのVBAコードをマスタシェイプのActionsセクションの一アクションから呼び出すようにしています。
そのマスタシェイプをページに配置し、そのシェイプを右クリックして、アクションを呼び出そうとすると、次のメッセージが表示されます。
「システムエラーです;&H80004005(-2147467259)エラーを特定できません」

どのようにすれば、エラーなくVBAコード、そしてフォームを呼び出せるでしょうか。
ちなみにバージョンはVisio2007です。

02: 名前:‚ゆう投稿日:2007/06/18(月) 15:14
自己レスです。
過去のスレッドで似たような事例を見つけました。
ページの方でステンシルに参照設定を行えば、解決しました。

これまでのスレッドの蓄積に感謝です。

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


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