- ベストアンサー
ExcelVBAにて経路図作成
ある作業にて経路図を作成する事になり検索等行っているが、最短経路検索や地図連携、オートシェイプ結合の物が多く見つかってしまいます。 検索下手かもしれ無いですが、質問させて下さい。 行いたい事は、お互いのセルを線で繋ぎ経路を作って行きたいと考えており、自動作成では汎用性に欠けしまい、修正時は困難になってしまいます。 従いまして、簡潔な方法があれば教えて頂きたいと思っております。 [経路例] (セルアドレス) (1)C3→H8→B6→F15→A1 (2)K3→T8→V20→K5→V10 等 ※シート表示の大きさは不変(100%)とする。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足願います。 オートシェープの 線を、引き 其れを、 矢印付きの、設定に 変える 其れ等を 何回か VBAで、させたい で、合ってますか? 更に、 テンプレート等で 実現する、方法は 障害が、ある と、言う事 ですか? VBAは、どれ程 お得意ですか? 基本的には、此で https://www.moug.net/tech/exvba/0120005.html Sheetに、予め、 記載した、座標を 順次、参照させつつ 此方の http://blog.livedoor.jp/qoozy/archives/52567093.html 「コネクタを作る」の、項の やり方で、矢印にする てのは、どうですか? 追記、 リンクページ掲載者、及び関係者に、 感謝
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
>セルを線で繋ぎ経路を作って >自動作成では汎用性に欠けしまい いっていることがよくわからない。 >簡潔な方法が・・とはどういうことを言うのか? ーー 下記のようなことをやってみた。趣旨が説明されてなくて、適切かどうか、よくわからないけれど。 Sheet1 A1:C4 作業1 c3 C3 作業2 d5 H8 作業3 g6 B6 作業4 h9 F15 C列又はB列で行う。使うほうのデータを今回では、B列に前もって移すこと。 Sheet2に図形(四角)とコネクタを描く。 注)一部既存WEB記事のコードを使った(ここに質問しなくても、Googleででも検索すればコードが分かるということ。 ーー 標準モジュールに Sub test01() ' セルの四角をコネクタで結ぶ Dim ad(100) Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") sh2.DrawingObjects.Delete '--- ds = sh1.Range("B100").End(xlUp).Row MsgBox ds 'データ数 For i = 1 To ds ad(i) = sh1.Cells(i, "B") MsgBox ad(i) Next i '--- For i = 1 To ds - 1 Set Shp1 = sh2.Shapes.AddShape(msoShapeRectangle, sh2.Range(ad(i)).Left, sh2.Range(ad(i)).Top, _ sh2.Range(ad(i)).Width, sh2.Range(ad(i)).Height) Set Shp2 = sh2.Shapes.AddShape(msoShapeRectangle, sh2.Range(ad(i + 1)).Left, sh2.Range(ad(i + 1)).Top, _ sh2.Range(ad(i + 1)).Width, sh2.Range(ad(i + 1)).Height) Dim Shape1 As Shape, Shape2 As Shape, ShapeCon As Shape 'コネクタ描画 ※位置は仮決め Set ShapeCon = sh2.Shapes.AddConnector _ (msoConnectorStraight, 1, 1, 1, 1) 'コネクタを再接続 With ShapeCon .ConnectorFormat.BeginConnect Shp1, 1 .ConnectorFormat.EndConnect Shp2, 1 .RerouteConnections End With Next i End Sub ーー 上記は、図の見てくれのことだけのこと。 人間がセル番地を指定してシートに入力するセルの指定内容と、上からの順序がすべてを規定する。 「最短」経路検索などは、むつかしい課題で、理論も含め、むつかしくて、ここで説明を求めるのはお門違い。
お礼
回答有難う御座います。 ここでは、最短経路検索では無く、単純にセル間に線(経路)を入れたいと考えております。 記載して頂いたコードは、参考にさせて頂きます。 有難う御座いました。
補足
回答有難う御座います。 基本的な仕様は、単純にセルに線を引きたいので、記載して頂いたサイト「モーグ」であり、それらを繋げて行く仕様にしたいと考えております。 先程は順序しか記載していませんでしたが、詳細を書きたいと思います。 「シート1」内容 作業1|C3 作業2|H8 作業3|B6 作業4|F15 ・ ・ 「シート2」経路図 C3→H8→B6→F15→・・・ 最後に、VBA経験等ですが、初歩的な事は把握しているつもりですが、図形(オートシェイプ)関係や他ソフト(メモ帳等)連携は勉強中です。 宜しくお願いします。