KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

11 :マクロの削除、開放?(04)  12 :VisioからExcelファイルへの保存に関して(05)  13 :Activeなグループのメンバー図形の取得(04)  14 :ユーザ定義セルを消去しても残ります(03)  15 :マスタシェイプの更新で一括更新(05)  16 :Webページとして保存をマクロで実行(03)  17 :マウスカーソルを砂時計にしたいのですが(04)  18 :フォントサイズ(04)  19 :複数のカスタムツールバー、メニューの作成について(05)  20 :図面ページ上のシェイプを探すマクロ(07)  21 :任意のシェイプを画面の中央へ(03)  22 :接続ポイントの追加(03)  23 :ページにまつわる増減する情報の記録先(10)  24 :VBAUnit について(06)  25 :ステンシルでのマクロ起動(05)  26 :ステンシル・メニュー「編集」の制御について(04)  27 :MDIフォームのメニューが消える(03)  28 :子シェイプも含めて、全てのシェイプを処理(01)  29 :CreateSelectionの第2引数(04)  30 :UniqueIDが一意になる範囲(03)  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) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 69611 - 20 を表示


11: マクロの削除、開放?  全レス

01: 名前:UR投稿日:2007/10/26(金) 13:51
お世話になります。

ファイルを開かないで指定したファイルの中のマクロ(プロジェクト?)
を削除することは可能なのでしょうか。

VBAで、図面を新規作成→名前を付けて保存
結果保存されたファイルを開くと、マクロは含まれないはずなのに
起動すると無効か有効か、のメッセージが表示されます。
.SaveAsでパスを指定して保存をしたのですが
マクロが含まれないよう(メッセージが表示されないよう)
にする方法を探しています。

ご存知の方是非ご教授よろしくお願いします。
WindowsXP
Visio2003

02: 名前:yoda投稿日:2007/10/26(金) 14:37
Visio2003が、手元にないので、多少違うかも知れませんが、
まず、Visioを起動して、メニューで、ツール⇒オプションを選択し、
セキュリティーで、警告を表示せずに、すべてのマクロを無効にする、
という意味のオプションを、選択しておけば、すべてのマクロが
無効になると、思います。

03: 名前:ur投稿日:2007/10/26(金) 15:27
yodaさん回答ありがとうございます。
Visio2003、セキュリティー低の状態で保存したら
プロジェクトデータは入りませんでした。

04: 名前:yoda投稿日:2007/10/27(土) 06:34
セキュリティを低にすると、すべてのマクロを、
無条件で有効にするので、危険です。
マクロビールスの攻撃を受ける恐れがあります。

セキュリティを、最高にすると、すべてのマクロが、
無効になると、思います。

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



12: VisioからExcelファイルへの保存に関して  全レス

01: 名前:ゆう投稿日:2007/10/26(金) 13:58
VisioからExcelファイルへの保存に関して質問させてください。
CreateObjectやGetObjectを使用して、Excelのオブジェクトを取得しようとしています。
その中でGetObjectのヘルプのサンプルを参照していると、
次のような個所がありました。
'Excel は起動中なので、API の SendMessage 関数を使って、
' 起動中オブジェクト テーブルに登録します。
SendMessage hWnd, WM_USER + 18, 0, 0

この起動中オブジェクトテーブルの意味がわかりません。

ここに登録せずにExcelなどのアプリケーションを起動すると何かまずいことがあるのでしょうか。

02: 名前:yoda投稿日:2007/10/26(金) 14:17
開発環境と、VisioやExcelのバージョンを教えてください。

03: 名前:‚ゆう投稿日:2007/10/26(金) 14:56
開発環境:Windows XP
Officeのバージョン:Visio2007、Excel003
です。

04: 名前:yoda投稿日:2007/10/26(金) 15:46
GetObject は、すでに起動済みのObjectを取得するために、使います。
起動していないうちに、GetObjectを使うと、エラーになると、思います。
DetectExcel は、そのためのチェックをしているのでは、ないかと思います。
Excelがまだ、起動していないことが、はっきりしている場合は、
CreateObject 関数を使います。

05: 名前:‚ゆう投稿日:2007/10/26(金) 16:17
了解しました。
既に起動しているのを取得するだけなら、GetObjectでいいはずなのに、
なぜ余分な処理を実行しているのか疑問に思ってしまいました。

最近のExcelだとどうかわかりませんが、
7.0とかのExcelだと明示的にオブジェクトテーブルに登録するよう
メッセージを送る必要があったのだと理解しました。

http://support.microsoft.com/kb/147573/ja [source] [check]

うまく使い分けて処理しようと思います。

ありがとうございます。

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



13: Activeなグループのメンバー図形の取得  全レス

01: 名前:mar投稿日:2007/10/26(金) 10:42
グループShapeの子Shapeを選択しているとき そのShapeを取得するのはどうすればよいのでしょう?
ActiveWindow.Selection(1).name
では "無効な選択識別子です" と怒られてしまいます。
グループShapeを選択しているときは 取得できるのですが???
宜しくお願いします。

02: 名前:UR投稿日:2007/10/26(金) 13:39
親の中の子を選択、というふうに
ActiveWindow.Selection(1).Shapes(2).Name
で取得できると思います。

03: 名前:yoda投稿日:2007/10/26(金) 13:43
URさんの解答でもよいですが、選択されたシェイプのIndexが分らない場合は、
IterationMode プロパティを使う方法があります。
ちょっとややこしくなりますが、
Sub test()
' 最初に子シェイプをセレクトしておく。
Dim mySlection As Visio.Selection
Dim shp As Visio.Shape
Set mySlection = ActiveWindow.Selection
mySlection.IterationMode = visSelModeOnlySub
For Each shp In mySlection
Debug.Print shp.ID, shp.Name,
Next
End Sub

04: 名前:mar投稿日:2007/10/26(金) 15:17
URさん、yodaさん ありがとうございます。
Slection.IterationMode = visSelModeOnlySub
は参考になりました。
活用させてもらいます。

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



14: ユーザ定義セルを消去しても残ります  全レス

01: 名前:ゆう投稿日:2007/10/23(火) 16:24
次のようなコードでユーザ定義セルを消去しようとしています。
Call objPageSheet.DeleteRow(visSectionUser, nCount1)
その行の情報は消えるのですが、「Row_4」みたいな形で行自体はどんどん、
残っていってしまいます。

このように残さず、消す方法というのはあるのでしょうか?

ちなみにVisio2007です。

02: 名前:yoda投稿日:2007/10/23(火) 17:27
たとえば、
ActivePage.PageSheet.DeleteRow visSectionUser, visRowUser + 1
とすると、2行目の行が消えます。

03: 名前:‚ゆう投稿日:2007/10/23(火) 17:50
原点に立ち返ってやってみるとうまくいきました。
ありがとうございます!

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



15: マスタシェイプの更新で一括更新  全レス

01: 名前:masa投稿日:2007/10/18(木) 18:25
Visioで図面ステンシルにあるマスタシェイプを編集すると、「すべてのインスタンスを更新しますか?」
のようなメッセージが表示され、「はい」を選ぶと図面上にある対象のシェイプもすべて更新されますが、
マクロで図面ステンシルのマスタシェイプを編集した場合、
図面上にある対象のシェイプは更新されませんでした。

マクロの記録をとってみたところ、図面上のシェイプが更新されるところについては、
何も記録されていないようでした。
マクロでは手動変更したときのように、図面上のシェイプを一括更新する
ということは出来ないのでしょうか。

02: 名前:yoda投稿日:2007/10/18(木) 21:42
なるほど、そうなりますねー。
たぶん、マスターの図形編集のウインドウで、図形を選択して、
編集したのち、閉じるということを、まねしないといけないのでしょう。
以下のような、マクロで試してみたら、できました。
Sub test()
Dim mst As Visio.Master
Dim shp As Visio.Shape
Dim win As Visio.Window

Set mst = ActiveDocument.Masters(1)
Set win = mst.OpenDrawWindow
win.Activate
Set shp = mst.Shapes(1)
ActiveWindow.SelectAll
ActiveWindow.Selection(1).Cells("FillForegnd").Formula = "THEMEGUARD(THEME(""AccentColor5""))"
Application.AlertResponse = 6
ActiveWindow.Close
Application.AlertResponse = 0
End Sub

03: 名前:visGeek投稿日:2007/10/19(金) 07:13
MasterオブジェクトのOpenメソッドのヘルプをご確認ください。

04: 名前:masa投稿日:2007/10/19(金) 10:24
>yoda様
マクロの記載ありがとうございます。
>visGeek様
助言ありがとうございます。

とても助かりました。ありがとうございました。
Visioは奥が深いですね。

05: 名前:yoda投稿日:2007/10/19(金) 13:04
MasterのOpenメソッドはいいですね。知りませんでした。

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



16: Webページとして保存をマクロで実行  全レス

01: 名前:KEI投稿日:2007/10/11(木) 14:00
Visio図面の保存をマクロで実行する処理を作成しています。
「上書き保存」はSaveメソッド、
「名前を付けて保存」はSaveAsメソッドを使用することで作成できたのですが、
「Webページとして保存」が作成できません。

「Webページとして保存」をマクロで行う方法はありますでしょうか。

02: 名前:yoda投稿日:2007/10/11(木) 17:27
以下のようなマクロで、できます。ただし、参照設定で、
Microsoft Visio xx Save As Web Type Library を設定
する必要があります。
Sub test()
Dim vsoSaveWeb As IVisSaveAsWeb
Set vsoSaveWeb = Application.SaveAsWebObject
Dim vsoSettings As IVisWebPageSettings
Set vsoSettings = vsoSaveWeb.WebPageSettings
vsoSettings.QuietMode = 1
vsoSettings.SilentMode = 1
vsoSettings.TargetPath = "C:\Documents and Settings\yoda\デスクトップ\test.htm"
vsoSaveWeb.AttachToVisioDoc ThisDocument
vsoSaveWeb.CreatePages
End Sub

03: 名前:KEI投稿日:2007/10/12(金) 09:31
こんな方法があるとは知りませんでした。
yoda様どうもありがとうございました。

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



17: マウスカーソルを砂時計にしたいのですが  全レス

01: 名前:‚ゆう投稿日:2007/10/02(火) 22:09
マウスカーソルを砂時計にしたいのですが、できません。
やり方を押しててください。

基本的な質問で申し訳ありません。
過去ログも調べてみたし、ヘルプも見てみたのですが、分かりませんでした。
お手数ですが、ご回答お待ちしております。

02: 名前:yoda投稿日:2007/10/03(水) 06:23
windows のAPI関数を使う必要があると思います。
詳しくは、覚えていませんので、インターネットで
検索してみてください。

03: 名前:ゆう投稿日:2007/10/03(水) 11:05
了解しました。
ExcelのVBAみたいに、Application.〜〜というわけにはいかないのですね、、、、。

ありがとうございます。

04: 名前:‚ゆう投稿日:2007/10/03(水) 11:53
自己レスです。
次のページを参考に、以下のようなプロシージャを作ることでうまくいきました。
http://q.hatena.ne.jp/1054534388 [source] [check]

Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function setCursor Lib "user32" Alias "SetCursor" (ByVal hCursor As Long) As Long

Public Enum CURSOR_TYPE
IDC_ARROW = 32512&
IDC_WAIT = 32514&
End Enum

Public Sub setMouseCursor(ByVal hcur As CURSOR_TYPE)
hcur = LoadCursor(0&, IDC_WAIT)
Call setCursor(hcur)
End Sub

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



18: フォントサイズ  全レス

01: 名前:VISIO新人さんです投稿日:2007/09/28(金) 13:54
VISIO2000で、デフォルトのフォントサイズが12ポイントになっています、このデフォルトフォントサイズを変更したいのですが教えてください。

02: 名前:yoda投稿日:2007/09/28(金) 14:29
はっきりは知りませんが、多分、Visioには、デフォルトフォントサイズ
を設定する機能はないと思います。
過去ログがご参考になると、思います。
http://www.mster.co.jp/visiosquare/cgi-bin/anama0138uni/mibbs.cgi?mo=p&fo=all&tn=0323&rn=30 [source] [check]

03: 名前:yoda投稿日:2007/09/28(金) 20:38
英文ですが、マイクロソフトの人が、同じような質問に答えているものが
ありました。
http://groups.google.com/group/microsoft.public.visio.general/browse_thread/thread/ed96e35c847f324e/1163e315908e341e?lnk=raot&hl=en [source] [check]

04: 名前:yoda投稿日:2007/10/01(月) 17:10
Visual Studio2005で、Visioのアドインを作り、
以下のコードを組み込んで、インストールすれば、
新規図面を作成するとき、デフォルト・フォント・サイズ
が14ptになります。
Private Sub myApp_DocumentCreated(ByVal doc As Visio.Document) Handles myApp.DocumentCreated
doc.GestureFormatSheet.Cells("Char.Size").FormulaU = "14 pt"
End Sub

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



19: 複数のカスタムツールバー、メニューの作成について  全レス

01: 名前:ヨタロウ投稿日:2007/09/06(木) 11:44
日ごろから参考にさせていただいてます。

Visio2003、WinXP、VisualStudio2003(C#)で、カスタマイズをしてます。

カスタムツールバーも、メニューも、
すでに1つは、プログラムでつくりだしていますが、
これを、さらに、別のカスタムツールバーを増やしたり、
別メニュー項目を増やしたりできるのでしょうか?

カスタムツールバー自体は、増やせたのですが、
ツールバー上のボタンを押した場合のイベント処理時に、
ActiveDocumentのCustomToolBarが、
旧と新のツールバーの区別がついてないようなので、
新のツールバーが動くときは、旧のツールバーがエラーになってしまいます。

多分プログラムの組み方がおかしいのでしょうが、
どのようにすればよいのか、わからないため、困っている次第です。

ご教授よろしくお願い致します。

02: 名前:yoda投稿日:2007/09/06(木) 12:44
試してみたことがないのですが、ツールバーやボタンのの名前は
区別しているのでしょうか?

03: 名前:ヨタロウ投稿日:2007/09/06(木) 13:14
ツールバーとボタンのCaption共に、一意のものを設定してあります。
メニューについては、まだ試してませんが、
CustomMenuも、CustomToolbarと同様な気がしますので、
うまくいかない気もします。

04: 名前:yoda投稿日:2007/09/06(木) 15:41
簡単なプログラムで、ツールバーを二つ作って見ました。
へたくそなので、重なってできてしまいましたが、
それ以外は、問題ないようです。
Option Explicit

Public Sub ToolbarItems_Example()

Dim vsoUIObject As Visio.UIObject
Dim vsoToolbarSet As Visio.ToolbarSet
Dim vsoToolbarItems As Visio.ToolbarItems
Dim vsoToolbarItem As Visio.ToolbarItem

Set vsoUIObject = Visio.Application.BuiltInToolbars(0)
Set vsoToolbarSet = vsoUIObject.ToolbarSets.ItemAtID(visUIObjSetDrawing)

Dim N As Long, I As Long
N = vsoToolbarSet.Toolbars.Count

vsoToolbarSet.Toolbars.Add
N = vsoToolbarSet.Toolbars.Count
Set vsoToolbarItems = vsoToolbarSet.Toolbars(N - 1).ToolbarItems
Set vsoToolbarItem = vsoToolbarItems.AddAt(0)
vsoToolbarItem.CntrlType = visCtrlTypeBUTTON
vsoToolbarItem.CmdNum = visCmdPanZoom
vsoToolbarItem.FaceID = 100

vsoToolbarSet.Toolbars.Add
Set vsoToolbarItems = vsoToolbarSet.Toolbars(N).ToolbarItems
Set vsoToolbarItem = vsoToolbarItems.AddAt(0)
vsoToolbarItem.CntrlType = visCtrlTypeBUTTON
vsoToolbarItem.CmdNum = visCmdCustProp
vsoToolbarItem.FaceID = 200

ThisDocument.SetCustomToolbars vsoUIObject

End Sub

05: 名前:ヨタロウ投稿日:2007/09/26(水) 17:48
yoda様
お世話になります。

遅くなりましたが、上記のプログラムをヒントに、
実現解が見つかりました。
ありがとうございました。

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



20: 図面ページ上のシェイプを探すマクロ  全レス

01: 名前:yoda投稿日:2004/12/09(木) 21:10
図面ページ上のシェイプを、名前、テキスト、プロパティで探すマクロの
サンプルを試作してみましたので、アップロードしました。ここです。
http://www.mster.co.jp/visiosquare/cgi-bin/upload/image/105.zip [source] [check]

02: 名前:yoda投稿日:2004/12/09(木) 21:28
ダウンロードしたファイルを解凍し、
ダブルクリックすると、visio2003の
図面が開きます。図面ページ1の上で、
マウスの右ボタンを押すと、メニューが
出ます。Search Shape by ... という項目
を選択すると、フォームが開かれ、
シェイプのリストが表示されます。
リストから、項目を選択すると、
そのシェイプが選択され、画面の中央に
表示されます。リストの項目は、シェイプの
名称、シェイプのテキスト、カスタム
プロパティが選択できます。
Zoom In ボタンを押すと、画面の倍率が
2倍になります。

03: 名前:yoda投稿日:2004/12/10(金) 09:11
Visio2000でも読めるものを追加しました。
http://www.mster.co.jp/visiosquare/cgi-bin/upload/image/106.zip [source] [check]

04: 名前:moto投稿日:2007/09/17(月) 16:15
いつも参考にさせていただいてます
前出のサンプルを拝見したいのですがダウンロードの術がみつかりません。
どなたかお分かりでしたら教えてください

05: 名前:yoda投稿日:2007/09/17(月) 20:22
もうないと思います。

06: 名前:M1号投稿日:2007/09/18(火) 13:22
>motoさん
upload bbs のほうに再掲載しておきました。

07: 名前:moto投稿日:2007/09/18(火) 21:56
yodaさんM1号さんありがとうございます。
無事ダウンロードできましたので参考にさせていただきます。

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


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