KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

81 :リンクオブジェクトの取得(06)  82 :コントロール配列ができない!?(06)  83 :白黒GIFファイルで保存する方法(02)  84 :グループ内メンバーの図面の重ね合わせ判定(05)  85 :位置を取得方法(01)  86 :複製として開かれている場合の判断(02)  87 :Webブラウザ(03)  88 :複数個のドッキングウインドウをタブ状態で表示するには(15)  89 :COM Add-inからレイヤのロックを解除(05)  90 :VB2005でOLE を実現する方法は?(06)  91 :起動時にパスワード入力ダイアログが表示されてしまう(04)  92 :DDL文の出力の自動化(02)  93 :挿入図形の解像度指定(03)  94 :線の頂点の絶対座標(11)  95 :図面ステンシルの制御(03)  96 :子とのHitTest (03)  97 :曜日の自動取得(04)  98 :.VDT ファイルに保存してテキストで修正したら開けないのは?(02)  99 :VCでのオートメーション開発(07)  100 :標準モジュールについて(02)  101 :"XXX.vdx" - > "XXX.vsd" に変換する方法は?(03)  102 :前に作ったVISIOファイルから内容だけ一発変更はできますか?(02)  103 :Drawing Controlへの文字データのドラッグ&ドロップについて(05)  104 :ファイルが見つかりません データ入出力作成 VB6.0(01)  105 :文字セットの方法(05)  106 :VB.NETでMouseMoveイベントでShape上かどうかを判定したい。(14)  107 :アクティブなアプリケーションにキー コードを転送したい。(03)  108 :ページ並べ替えの制限方法(10)  109 :ステンシルの編集状態判別(03)  110 :シェイプのコピー制限(02)  111 : イベント中にシェイプのCellの値が変更できない(01)  112 :VISIOシェイプのアングルをVBAで制御したい(04)  113 :画像ファイル出力オプションの指定方法について(05)  114 :見積書の自動作成(08)  115 :グループへの追加・削除について(04)  116 :DistanceFromメソッドがおかしい(05)  117 :OpenExで指定するファイル名と実際に開かれるファイル(09)  118 :Visual Studio .Net 2002からVisioにアタッチ(15)  119 :シェイプのテキスト文字数について(06)  120 :SelectionのDrop先(03) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 69681 - 90 を表示


81: リンクオブジェクトの取得  全レス

01: 名前:yoda投稿日:2006/09/26(火) 13:46
Dim myole As Object
とするとき、ShapeにExcelのWorkSheetがリンクオブジェクト
として挿入されていると、
Set myole = objShp.Object
で、例外発生となりますが、回避策はないでしょうか?

02: 名前:yoda投稿日:2006/10/04(水) 14:03
01の件は、OleObjects コレクションを使用すると、
直接取得できることがわかりました。

話は少し飛びますが、リンクオブジェクトのリンク先を
変更するために、
Application.DoCmd visCmdEditLinks
とすると、「リンク」という、リンク先を変更できる
ダイアログが開きます。
このとき、キーボードから、Alt+C と入力すると、
「リンク元の変更」という名のボタンを押したのと同じ
ように、ファイルダイアログが開きます。
これと同じことを、VBAで行おうとして、
SendKeys "%C", True
としても、リンク先を変更できるダイアログが
アップリケーションモーダルなため、動きません。
そこで、VB.NETのWindowsアプリケーションを
作って、同じようにしてみたのですが、やはり
だめでした。
SendKeys "%C", True を、「リンク」ダイアログに
対して発行することは、できないのでしょうか?

03: 名前:yoda投稿日:2006/10/10(火) 12:07
ようやくできました。

04: 名前:yoda投稿日:2006/10/10(火) 12:33
できました。

05: 名前:yoda投稿日:2006/10/10(火) 16:29
リンク編集ダイアログを開くところも、SendKeyを
使いました。
コードは、以下のとおりです。
'Module Module1
Imports System.Threading

Module Module1
Public Sub main()
Dim myShape As New clsShape
Dim myKey As New clsSendKeys
myShape.mySelect()
Thread.Sleep(200)
myKey.OpenDialog()
Thread.Sleep(200)
myKey.ReplaceLink()
End Sub
End Module

'Class clsShape
Public Class clsShape
Public Sub mySelect()
Dim app As Microsoft.Office.Interop.Visio.Application
app = GetObject(, "visio.application")
Dim shp As Microsoft.Office.Interop.Visio.Shape
shp = app.ActivePage.Shapes(1)
app.ActiveWindow.Select(shp, Microsoft.Office.Interop.Visio.VisSelectArgs.visSelect)
shp = Nothing
app = Nothing
End Sub
End Class

'Class clsSendKeys
Public Class clsSendKeys
Public Sub OpenDialog()
AppActivate("Microsoft Visio")
My.Computer.Keyboard.SendKeys("%E", True)
My.Computer.Keyboard.SendKeys("k", True)
End Sub
Public Sub ReplaceLink()
AppActivate("リンク")
My.Computer.Keyboard.SendKeys("%C", True)
My.Computer.Keyboard.SendKeys("another.xls", True)
My.Computer.Keyboard.SendKeys("%O", True)
Thread.Sleep(200)
My.Computer.Keyboard.SendKeys("%U", True)
My.Computer.Keyboard.SendKeys("{ESC}", True)
End Sub
End Class

06: 名前:削除されました投稿日:削除されました
削除されました

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



82: コントロール配列ができない!?  全レス

01: 名前:とも投稿日:2006/05/24(水) 16:13
こんにちは。質問させてください。
Visio2000のVBAでUserform1を作成して、
Userform1上にComboBoxを20個(ComboBox1〜20)配置しました。
そして、

Private Sub UserForm_Activate()

With ComboBox1
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
.AddItem "E"
.AddItem "F"
.AddItem "G"
.AddItem "H"
.AddItem "I"
.AddItem "J"
.AddItem "K"
.AddItem "L"
.AddItem "M"
.AddItem "N"
.AddItem "O"
.AddItem "P"
.ListIndex = 0
End With
End Sub

という具合にフォームを開いた時の初期設定をしました。
この設定を残り19個のコンボボックスにも反映させたいので、
コントロール配列を使用したいのですが、コンボボックスの名前を同一にすると、
”Nameプロパティを設定できません。名前を特定できません。”
と言われてしまいます。
さらによく見ると、コンボボックスにIndexプロパティが有りません。

コントロール配列は出来ないのでしょうか?
また、出来ない場合は残り19個のコンボボックスにも上記のプログラムを
書かなくてはならないのでしょうか?
それとも、スマートなプログラムに出来るのでしょうか?

Visio2000のヘルプにあるバージョンを見ると
Visio2000 SR-1 (6.0.2072)
とあります。
同じくVisual Basicエディタのヘルプには
Version8714 VBA:Retail 6.0.8714 Forms3:2.01
とあります。

ご存知の方、居られましたら宜しくお願い致します。

02: 名前:visGeek投稿日:2006/05/24(水) 16:52
VBAではコントロール配列は使えません。
コントロール配列はVBの機能です。
VBAでは、VBの機能のうち使えないものがいくつかあります。

コンボボックスを受け取って初期設定するプロシージャを作り
各コンボボックスのイベントからはそのプロシージャを呼ぶのがよいでしょう。

03: 名前:M.K投稿日:2006/05/25(木) 10:30
こんにちは、

挿入する項目が"AからP"という条件であれば以下の方法があります。
注)コンボボックスの名前はComboBox1〜ComboBox20と連番となるようにしておきます。

Private Sub UserForm_Activate()

Dim A As Integer
Dim nIndex As Integer

For nIndex = 1 To 20

'各コンボボックスの中身をクリア
Controls("ComboBox" & nIndex).Clear

For A = Asc("A") To Asc("P") '"A"〜"P"の文字

'各コンボボックスにAからPまでの項目を追加
Controls("ComboBox" & nIndex).AddItem Chr$(A)

Next A

'各コンボボックスのListIndexを「0」にセット

Controls("ComboBox" & nIndex).ListIndex = 0

Next nIndex

End Sub

04: 名前:M.K投稿日:2006/05/25(木) 10:32
こんにちは、
目的に沿う内容か分かりませんが...

挿入する項目が"AからP"という条件であれば以下の方法があります。
注)コンボボックスの名前はComboBox1〜ComboBox20と連番となるようにしておきます。

Private Sub UserForm_Activate()

Dim A As Integer
Dim nIndex As Integer

For nIndex = 1 To 20

'各コンボボックスの中身を一旦クリア
Controls("ComboBox" & nIndex).Clear

For A = Asc("A") To Asc("P") '"A"〜"P"の文字

'各コンボボックスにAからPまでの項目を追加
Controls("ComboBox" & nIndex).AddItem Chr$(A)

Next A

'各コンボボックスのListIndexを「0」にセット

Controls("ComboBox" & nIndex).ListIndex = 0

Next nIndex

End Sub

05: 名前:とも投稿日:2006/05/25(木) 11:00
visGeek様、M.K様、ご返答ありがとうございます。
おかげさまで解決しました。
また機会が有りましたら宜しくお願い致します。

06: 名前:削除されました投稿日:削除されました
削除されました

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



83: 白黒GIFファイルで保存する方法  全レス

01: 名前:YOSHI投稿日:2006/12/14(木) 11:52
はじめまして。
現在、白黒GIFファイルで保存するときには、VISIOでGIFファイル形式で保存し、その後、ペイントでファイルを開き、ペイントの「色」を白黒に変更し、上書き保存して使用しています。
これをマクロで自動化したいのですが、どのようにすればよいでしょうか?
Visual Basic のShell関数でペイントを起動させても、非同期なのでうまく動作させることができませんでした。
ご教示いただければ幸いです。

02: 名前:yoda投稿日:2006/12/14(木) 13:41
Visual Basic 2005 あるいは Visual Basic 2005 Express (フリー版)には、
画像処理のメソッドやプロパティがあります。これを使うと、白黒にもでき
るのではないかと思います。WindowのカラーはARGBで表現されている
ので、カラーをHSV構造のデータに変換しS(彩度)をゼロにすれば白黒
にすることができます。RGBをHSVに変換するメソッドはVBには含まれ
いないので、関数を作る必要がありますが、インターネットで検索すれば、
作った人のホームページがあります。私も、それらのホームページの関
数を使ったことがあります。私の「水彩額シミュレーター」というホームペ
ージから、水彩額シミュレーターのソースプロジェクトがダウンロードでき
ます。その中の一番最後に追加した機能「マットの質感」で、そういう画
像処理をしています。

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



84: グループ内メンバーの図面の重ね合わせ判定  全レス

01: 名前:ねこ投稿日:2006/12/06(水) 10:58
お助けください。
あるシェイプの上にあるラインを引いたときに重なりあいを判定するのに
SpatialNeighborsプロパティを使って判定をしているのですが、
これをグループ内メンバーに適応したいのですが、うまくいきません。
具体的には、小さい正方形16ヶをグループ化してひとつの大きい正方形としており、
その上にあるラインを引いて重なったメッシュだけ、色を変えたいと思っています。
ヘルプにある[ResultRoot]がポイントとなると思うのですが、いろいろ試してみて
どうにもなりません。どなたか、お助けいただけないでしょうか?
よろしくお願いします。

02: 名前:yoda投稿日:2006/12/06(水) 12:33
ねこさんのコードがどうなっているのか分かりませんので、
いいかげんな回答になりますが、グループ内のシェイプは、
大体以下のように扱います。
dim child as visio.shape
for each child in shape.shapes
'この中にコードを書く。
next

03: 名前:ねこ投稿日:2006/12/06(水) 17:47
テストです(コードをなんど投稿してもエラーになってしまうので、テスト投稿します)

04: 名前:yoda投稿日:2006/12/07(木) 09:26
海外からの迷惑投稿を防ぐために、ときどき投稿できなくなるケースが
あるようです。最初に日本語で説明を入れて、次に必要な部分だけ
コードを入れてみてはいかがでしょう。どうしてもだめな場合は、
このページの一番下にある、管理人さんへのメールで、問い合わせて
みては、いかがでしょう。

05: 名前:yoda投稿日:2006/12/07(木) 09:29
そのほかの方法としては、upload bbs に、画像としてアップロードするか、
圧縮ファイルでアップロードする方法もあります。
その場合は、アップロードしたこと、リンク先をここに掲示してくださいね。

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



85: 位置を取得方法  全レス

01: 名前:名無しさん投稿日:2006/11/17(金) 11:58
位置を取得方法

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



86: 複製として開かれている場合の判断  全レス

01: 名前:kei投稿日:2006/11/08(水) 16:07
Visioで既に開かれている図面ファイルを、再度開こうとすると、
「既に開かれています。複製を開きますか?」のようなメッセージが表示され、
複製としてファイルを開くことができます。
そこで今開いているファイルがオリジナルのものか、複製として開いているものかを
判断する方法はありますでしょうか。よい方法があれば、教えてください。

02: 名前:yoda投稿日:2006/11/08(水) 17:26
ウインドウのキャプションを見るとわかります。
Debug.Print ActiveWindow.Caption
で、コピー (1) 〜 testl.vsd のようになっていれば、
複製だと思います。

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



87: Webブラウザ  全レス

01: 名前:sin投稿日:2006/11/07(火) 12:18
Webブラウザを作っています。
どこか参考になるところを探しています。
参考になるところをしりませんか、もしよろしければ教えてください。
よろしくお願いします。

02: 名前:名無しさん投稿日:2006/11/07(火) 15:57
ここはVISIO のサイトなのでVISIO に関連しない質問はお控え下さい。

Web ブラウザを作りたいならmozilla を参考にしたらいいでしょう。
オープンソースですしいい勉強になるはずです。
http://www.mozilla-japan.org/start/1.4/ [source] [check]

03: 名前:sin投稿日:2006/11/08(水) 12:34
すいません。検索したらここがあったので書き込んでしまいました。

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



88: 複数個のドッキングウインドウをタブ状態で表示するには  全レス

01: 名前:茅井太郎投稿日:2006/11/03(金) 18:25
複数個の複数個のドッキングウインドウをタブ状態にして表示する方法を調べています

ドッキングウインドウを生成される書きメソッドの8,9,10番目の引数に適切な値を設定すればよいのでは?ともうのですが、どのような値をいれればよいかわかりません。
ご存知の方 いらっしゃいましたら ご教授いただけないでしょうか。

Windows コレクションに新しい Window オブジェクトを追加します。

objRet = object.Add ([varCaption][, varFlags] [, varType][, varLeft][, varTop][, varWidth] [, varHeight][, bstrMergeID][, bstrMergeClass] [, nMergePosition])
objRet コレクションに追加された新しい Window オブジェクトです。

object 必須項目です。Windows コレクションを返す式です。

1.varCaption 省略可能なバリアント型 (Variant) 変数です。ウィンドウのタイトルです。 既定では、"Untitled" です。
2.varFlags 省略可能なバリアント型 (Variant) 変数です。ウィンドウの初期状態です。Visio タイプ ライブラリで宣言されている VisWindowStates 定数を組み合わせて指定できます。既定値は varType によって異なります。
3.varType 省略可能なバリアント型 (Variant) 変数です。 新しいウィンドウの種類です。Visio タイプ ライブラリで宣言されたいずれかの VisWinTypes 定数が指定できます。Application.Windows の既定値は visStencilAddon です。Window.Windowsの既定値は visAnchorBarAddon です。
4.varLeft 省略可能なバリアント型 (Variant) 変数です。ウィンドウの左端の位置です。
5.varTop 省略可能なバリアント型 (Variant) 変数です。ウィンドウの上端の位置です。
6.varWidth 省略可能なバリアント型 (Variant) 変数です。ウィンドウのクライアント領域の幅です。
7.varHeight 省略可能なバリアント型 (Variant) 変数です。ウィンドウのクライアント領域の高さです。
8.bstrMergeID 省略可能なバリアント型 (Variant) 変数です。ウィンドウの結合 ID です。
9.bstrMergeClass 省略可能なバリアント型 (Variant) 変数です。ウィンドウの結合クラスです。
10.nMergePostition 省略可能なバリアント型 (Variant) 変数です。ウィンドウの結合位置です。

07: 名前:茅井太郎投稿日:2006/11/05(日) 14:50
yoda様:
 ご回答ありがとうございます。

>パン・ズームウインドウやドローイング・エキスプローラ
>などのアンカーウインドウを「自動的に隠す」状態に
>することでしょうか?(画鋲を横向きにすること)

言葉で表現するのが難しいのですが、
例えば
@VISIOのカスタムプロパティウインドウと、パンズームウインドウを表示状態にします。
AカスタムプロパティウインドウをVISIOウインドウの下あたりに手動でもっていきVISIOのドッキングウインドウにします。
BパンズームウインドウもVISIOウインドウの下あたりに手動でもっていくと、もって行き方により、カスタムプロパティウインドウと、パンズームウインドウが、ひとつのドッキングウインドウの中でタブ化(タブは2つ)され、一方のタブはカスタムプロパティウインドウ、もう一方のタブはパンズームウインドウとなります。

私がご質問したのは、
アドオンで、自分で生成した、2つのドッキングウインドウを、上記の例のように、ひとつのドッキングウインドウの中で2つのタブとして表示させる方法についてです。

何かヒントになるもの、ございましたらご教授いただけましたら幸いです。

08: 名前:yoda投稿日:2006/11/05(日) 19:20
確認のため、タブ化とは、どういうことですか?
私は、「自動的に隠す」にすることかと。

09: 名前:yoda投稿日:2006/11/05(日) 20:13
タブ化に加え、ドッキングウインドウとは、
なにを指しているのでしょうか?
それがわからないと、
「ひとつのドッキングウインドウの中で
2つのタブとして表示させる」
の意味がわかりません。

10: 名前:yoda投稿日:2006/11/05(日) 20:45
たとえば、カスタムプロパティウインドウがobjwin1で、
パンズームウインドウがobjwin2なら、
objwin1.WindowState = visWSAnchorLeft + &H300
objwin2.WindowState = visWSAnchorLeft + &H300
のようにすればよいのではないでしょうか?

11: 名前:茅井太郎投稿日:2006/11/05(日) 23:58
yoda様:
 ご回答ありがとうございます。

 upload bbsに、カスタムプロパティウインドウと、パンズームウインドウを、ひとつのドッキングウインドウの中にタブ化した状態にしたときのVISIOの画像をuploadしました。

 この状態は、yoda様のおっしゃる、アンカーウインドウを「自動的に隠す」状態(画鋲を横向きにすること)の状態でしょうか?

12: 名前:yoda投稿日:2006/11/06(月) 11:55
難しそうです。
完成した状態のWindowStateプロパティをみると、
最初に出したカスタムプロパティウインドウが、&H408
次に出したパンズームウインドウが、&HC000408
となりますが、その値で設定しても、うまくできません。
最初に出したカスタムプロパティウインドウが、浮遊状態のときに、
次に出したパンズームウインドウをマウスでドラッグして、
最初に出したカスタムプロパティウインドウのキャプション
の左上角に、次に出したパンズームウインドウの左上角を
ぴったりあわせると、二つのウィンドウが結合されて、
あなたの言う、タブ化します。その結合されたウインドウを
Visioのアプリケーションウインドウの一番下にいどうすると、
あなたの図のようになります。こういう方法が、プログラム化
できれば、良いと思います。結合されたウィンドウを下に移
動して、DockedBotomの状態にするには、二つのウインドウ
のWindowStateプロパティを、visWSDockedBottomにすれば
可能です。しかし、二つのウィンドウを結合する方法が、見つ
かりません。APIで、パンズームウインドウを正確に移動する
ようなことでも、しないとできないのではないかと思います。

蛇足ですが、「「自動的に隠す」状態(画鋲を横向きにすること)」
は、このようなことです。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/0001.png [source] [check]

13: 名前:茅井太郎投稿日:2006/11/07(火) 00:36
yoda様:
 色々と試して頂きありがとうございました。

同じサイズのドッキングウインドウを生成し、CVisioWindow::SetWindowRectをつかって左上角を合わそうとしてみました。
結果は、2つのウインドウが横にならんだだけで、ひとつのウインドウ内で、タブ化してくれませんでした。

07で書いた手順をマクロで記録しても、マクロは生成されず、
2つのドッキングウインドウを、ひとつのウインドウ内でタブ化させることを、プログラムで書く方法を見つけることは難しそうです。 

14: 名前:yoda投稿日:2006/11/07(火) 08:34
APIのマウスの関数で、ドラッグして行き、ぴったり重ねるような、
あなたが手でマウスをつかんでするようなことを、シミュレートす
れば、あるいは、うまく行くのかも知れませんが、そこまでする
価値があるのでしょうかね。

15: 名前:茅井太郎投稿日:2006/11/07(火) 23:55
yoda様:
 趣味の日曜大工のソフトウエア作成ならば「そこまでする価値」はないのですが、ソフトウエア開発を生業としている立場としては、クライアントの求めがあれば、何らかの実現可能性があるのならば、やってみる価値はあるとなります。

 色々とご助言ありがとうございました。

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



89: COM Add-inからレイヤのロックを解除  全レス

01: 名前:鳥肌投稿日:2006/10/16(月) 12:24
COM Add-inからレイヤのロックを解除しようとすると
Visio側でポップアップのエラーが表示されて失敗します。
実行中のコードはエラーも発生しないままそこで終了してしまうようです。
VBAでは正常に動作しました。

COM Add-inからはレイヤのロックを解除できないのでしょうか?

---
Dim vsoLayer1 As Visio.Layer
Set vsoLayer1 = Application.ActiveWindow.Page.Layers.Item(1)
vsoLayer1.CellsC(visLayerLock).FormulaU = "0"
---

VB6 SP6
Visio2003 SP2

02: 名前:yoda投稿日:2006/10/16(月) 13:12
Set vsoLayer1 = Application.ActiveWindow.Page.Layers.Item(1)
で、page プロパティの後を続けているのが原因かもしれません。
Dim vsoLayer1 As Visio.Layer
Dim vsoPage As Visio.page
Set vsoPage = Application.ActiveWindow.page
Set vsoLayer1 = vsoPage.Layers.Item(1)
と、するか、
Set vsoLayer1 = Application.ActivePage.Layers.Item(1)
としてみては、いかがでしょう。
Set vsoLayer1 = Application.ActiveWindow.page
と打ち、続けて、ポチを打ったとき、自動的に候補が
表示されないものは、共有参照できないとか何とか
いうことで、VB.NETで、エラーになる場合があります。
VBの方が、厳しくチェックしているのかも知れません。

03: 名前:鳥肌投稿日:2006/10/16(月) 13:55
レイヤのロックが解除できないと思ったのは勘違いでした。
失礼しました。

ロックは解除できるのですが、解除後にそのレイヤに所属する
ShapeのTextを設定すると前述のポップアップが出てきてしまうようです。
VBA、COM Add-inとも同様です。

.CellsC(visLayerLock).Formulaを
BeginUndoScope/EndUndoScopeで挟むと正常に動作するようです。

04: 名前:yoda投稿日:2006/10/16(月) 13:57
VB.NETのWindows Application を作ってテストしてみましたが、
あなたのコードでも、問題なく動きました。
ただ、VB.NET2005では、Windows Application の場合と、
Comaddinのばあいで、ちょっと感触が違いますので、わかりません。
Commaddinでテストするのは、ちょっと大変なのでパスします。
Windows Applicationでテストしたコードは以下のとおりです。

Public Class Form1
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As Microsoft.Office.Interop.Visio.Application
app = GetObject(, "visio.application")
Dim lay As Microsoft.Office.Interop.Visio.Layer
lay = app.ActivePage.Layers.Item(1)
'lay = app.ActiveWindow.Page.layers.item(1)
lay.CellsC(Microsoft.Office.Interop.Visio.VisCellIndices.visLayerLock).FormulaU = "0"
End Sub

05: 名前:yoda投稿日:2006/10/16(月) 14:08
03の回答になりますが、
vsoLayer1.CellsC(visLayerLock).FormulaU = "0"
のあと、DoEventsをいれると、なぜか、うまく行きます。

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



90: VB2005でOLE を実現する方法は?  全レス

01: 名前:KK投稿日:2006/10/04(水) 15:09
はじめまして。

現在、VB5+Visio4 でOLEの埋め込み機能で作成されたシステムがあります。
このシステムを、VB2005に作り直す必要があるのですがVB2005はOLEには
対応していないようです。

●現在の機能
1.参照画面はメタファイル(.wmf)を利用
2.参照画面から編集モードにすると、編集画面(VB5+Visio4)が起動し、
 図面編集が可能になります
3.編集画面のVB5の終了ボタン押下で編集中の図面を保存し、エクスポート
 でメタファイルを作成して編集画面を閉じます
4.参照画面には編集後のメタファイルが表示されます

●質問内容
上記のVB5の機能をVB2005で実現する方法はありますか?
同じようなことができればOKです、Visioのバージョンは特にこだわりません。


ご存知の方がいらっしゃれば、よろしくお願いします。

02: 名前:yoda投稿日:2006/10/04(水) 16:26
VB2005の方が、より強力なので、基本的にできるのでは
ないでしょうか。

03: 名前:yoda投稿日:2006/10/04(水) 17:01
具体的には、FormにDrawingControlを埋め込むことができますので、
おおよそ同程度のことが、できるのではないかと思います。

04: 名前:KK投稿日:2006/10/04(水) 17:38
返信ありがとうございます。

「DrawingControl」はVisio2003の新機能ですよね。
手元にVisio2003が無いので検証できませんが、OLEと同程度の
ことが可能なのであれば、購入を検討してみます。

05: 名前:KK投稿日:2006/10/10(火) 10:12
Visio2003を導入しました。

早速ですが教えてください。
参照設定を行っていますが、Visioのオブジェクトモデルにアクセスできません。

Private Sub Form1_Load 〜
  drcVisio.Src = "[ファイル名]"       ← Visioファイルは開けます
End Sub

Private Sub cmdClose_Click 〜
  Dim vsoWindow As Visio.Window       ← 「型 'Visio.Window' が定義されません。」と表示されます
  vsoWindow = DrawingControl.Window
 
  drcVisio.Document.SaveAs("[ファイル名]")  ← Visioファイルの保存は可能
End Sub

「設定内容」
参照設定
Microsoft Visio 11.0 Drawing Control Type Library
Microsoft Visio 11.0 Type Library
OLE Automation

設定が正しくないのでしょうか?それとも他の設定があるのでしょうか?


ご存知の方がいらっしゃれば、よろしくお願いします。

06: 名前:KK投稿日:2006/10/10(火) 15:08
[インポートされた名前空間]
Microsoft.Office.Interop のチェックで解決しました。

お騒がせしました。

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


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