プログラム

XML→Excel抽出(階層表示)プログラム(Python)

XMLファイルをExcelデータに抽出するPythonスクリプトです。階層表示させることによる見通しの良さと、大量のファイルを一括処理させることを目的として作成しました。プログラムファイルは下方のダウンロードボタンより取得できます。またサンプルとして「地質・土質調査成果電子納品要領・同解説 国土交通省」の記載例から起こしたXMLファイルとその出力Excelデータを同梱しております。

1.本プログラムの特徴

  • ネストされたタグをExcelに階層表示させる。
  • 任意のタグでグルーピングし、横並びに表示させる。
  • XMLファイルを個々に選択するのではなくフォルダを選択する方法とし、フォルダ内のXMLファイルを一括処理させる。

なお、本プログラムは、XMLファイルから抽出できる情報はタグとテキストのみであり、属性等の抽出には対応しておりません。実装は可能ですので今後必要を生じたら追加したいと思います。

2.とりあえず使ってみる

  • プログラムで使用するファイルは「GD土質データ抽出.pyw」のみです。通常の使用においてはエクスプローラーからダブルクリックして起動させます。
  • 起動させると、注意事項の表示を経てフォルダ選択画面が出てきますので、XMLファイルが格納されているフォルダを選択してください。選択したフォルダ内にあるすべてのXMLファイルをExcelデータに抽出します。
  • ここでExcelデータは、XMLファイルがあるフォルダに「OUTPUT_[日付]_[時刻]」という名称の下位フォルダを作り、そこにXMLファイルと同名で保存されます。

XMLファイルと比較するとこのような感じになります。少しは見やすくなったでしょうか。

3.抽出方法の設定(ソースコードを書き換えます)

ソースコードを少し書き換えることにより、抽出方法の設定が出来ます。

  • 設定1:ファイル名に情報を付加

(前置き:このプログラム、元々は土質データの出力を目的として作ったためこの機能を設けています。)

ファイル名にXMLのタグ情報から取得した日本語の土質試験名等を付加する場合は「add_ja_name = 1」とします。付加しない場合や、付加した場合に使用禁止文字の影響でExcelデータを出力できなかった場合は1以外の数字を入力してください。

  • 設定2:数字をExcelに数値として抽出するか文字として抽出するか

数字をExcelに数値として抽出する場合は「XLSX_str_num = 1」とします。文字として抽出する場合は1以外の数字を入力してください。
なおこの設定は一長一短あり、数値として抽出する設定とした場合は文字として扱いたい数字(例えばコード番号など)も数値に変更されてしまいますし、文字として抽出する設定とした場合はExcelの集計などが期待する結果とならない場合があります。現在のプログラムでは個々に判定する機能を設けていませんので、設定はケースバイケースでお願いいたします。

各設定での出力結果を以下に示します。

  • 設定3:キーワードでグルーピングする設定

キーワードごとにグルーピングして抽出したい場合は「reset_line_2~4」に、該当するXMLタグの名称を追記してください。2~4はExcelの行に相当します。現在のソースコードには、土質データXMLファイルに含まれるタグをキーワードとしていくつか設定しています。実際に処理したいファイルが土質データと無関係でもこのキーワードは残しておいて構いません。エラーにはなりません。

下の図では、”試験情報”をキーワードに登録しているため、試験情報ごとに列を変えて出力されています。

4.プログラムがエラーもしくは続行出来ていない場合

正常にExcelデータが出力されていない場合は、コマンドプロンプトやVSCodeから起動させてエラーの状況を確認してください。症状によっては下記の対処により解決できます。

  • ライブラリがインストールされていない場合は、PIP等によりインストールしてください。
  • XMLファイルに誤記などがある場合は、別途XMLエディタなどでご確認ください(本プログラムでもエラーの箇所を特定できますが、try~exceptでエラーをスキップさせているため、コードを書き換えないとエラー箇所の特定ができません)。
  • 心当たりの無いエラーが出た場合は、お手数ですがVSCodeなどでエラーをご確認お願いします。
図面集約マクロ(BricsCAD VBA)

BricsCADとExcelを利用して、複数のdwg図面をひとつのdwgに集約し図面枚数分のレイアウトまで作成するVBAマクロです。マクロはBricsCADで作っていますが、多分AutoCADでも動作すると思います。

1.本マクロの機能及び制約

  • 同じスケールと図面サイズで作図された複数のdwg図面を、1つのdwgに集約し、レイアウトまで作図します。なお個々のdwgに入っている図面は1枚のみを前提としています。
  • 図面枚数の上限はdwgデータの制約により256枚です。(Excelシートの一覧を複数作成することにより管理します)
  • 図枠および図面タイトルはブロックで作成しています。業務の様式に応じて改変して使用してください。
  • 図面番号はレイアウトタブ名から取得するため、重複さえしなければ数字でも文字でも任意です。番号はExcel表にて決めます。
  • マクロのエラー処理はしていませんので、予期せぬ動作になったときは、作業手順を再度ご確認ください。

2.作成手順

  • 使用するファイルは図に示す3種類です。これらのファイルを集約したい図面ファイルと同じフォルダに複写して使います。

  • マクロ実行の前に、出力したい図面の情報をExcel様式「図面集約マクロ_リスト.xlsx」に入力します(ファイル名は変更しても問題ありません)。上限は256枚ですが、利用者が分かりやすい単位に区切る方が良いと思います。入力を終えてもこのファイルは閉じずに画面に出したままにしておいてください。BricsCADのVBAから参照させるためです。

  • 次に「図面集約マクロ_テンプレート.dwg」を開き、続いてVBAマクロ本体である「図面集約マクロ.dvb」も読み込みます。

  • 以上で必要な準備が揃いましたので、下図のとおりマクロを実行させます。

  • マクロの実行が終わると、サンプルデータの場合、個々のファイルが下図のように集約されます。

  • ファイル名やレイアウトについてもExcelに記載の内容と一致しているか確認してください。

  • 図面タイトルのうち、業務名称と図面総枚数はdwgデータのカスタムプロパティを参照していますので、業務案件や図面枚数に応じてカスタムプロパティを入力してください。

3.よくあるエラー

  • Excelを起動していない場合に出るエラーです。必ずExcelのリストを開いた状態でマクロを実行してください。なお他のExcelデータは開いていない状態で実行してください。

  • 存在しないdwg図面がExcelにリストアップされている場合に出るエラーです。リストアップされているファイルが同じフォルダに存在するかご確認ください。

  • 参照設定がなされていない場合に出るエラーです。VBエディタのメニューから参照設定を開き、「Microsoft Excel 16.0 Object Library」(Excelのバージョンによって異なります)を探してチェックしてください。

計算書Word/PDF出力プログラム(Excel VBA版)

以前、Pythonにて作成した同名のプログラムをVBAに書き直したものです。

出来ることはPython版と大きな違いはありませんが、以下の特徴があります。

  • ○ ExcelのVBAですので、ExcelとWordだけで計算書が出力できるようになりました。よってPythonのインストールは不要です。
  • シート名の変更が可能となりました。また、検証はしていませんがシートを複写しても正常に動作すると思います。
  • ○ Wordドキュメントの他に、PDFも出力できるようにしました。
  • ○ Python版に比べて、出力速度が向上しました。
  • △ 2019以外のバージョンではおそらく動作しない。(VBAの参照設定を変更することで、動作するようになるとは思います。。。)

パスワードロックはしておりませんので、学習用や改良はご自由にしていただけると思います。

計算書Word出力プログラム

Excelにて表形式で作成した計算書をPythonスクリプトを通してWordの書式を作成するプログラムです。

まず、、、いつもながら恥を忍んでコードを公開しておりますので、コードの構成や変数名の付け方など技量不足やダサいところはどうぞ目を瞑っていただければ救われます(汗) なおコードを最適化していただけるご親切な方のアドバイスは心よりお待ちしております。

2020/01/20追記:Pythonをインストールされていない環境向けに実行ファイル(EXE,64bitのみ)を用意しております。ただしファイルサイズが11MBと大きく、ホームページの容量制限によりアップロードできないため、ファイル転送サービスなどにるご提供となります。ご希望の方は問い合わせフォームまたはTwitterを通じてご連絡いただけますでしょうか。折り返しファイル転送サービスのURLをお伝えいたします。

2020/05/14追記:上記の実行ファイルを、ファイル転送サービスのURLをBox.netにより用意いたしました。こちらよりダウンロードできます。→計算書Word出力プログラム(64bit_exe同梱)リンク先のページにて、右上のダウンロードボタンを押すと一括でダウンロードできます。なおログインは不要です。

 

特徴および注意点は以下のとおりです。

  • Pythonを使用しますが、ユーザー様はExcelとWordさえ使えればWord様式の計算書を作れるようになります。
  • 計算書は複数ケース作れます。またたくさん作成した後に文書スタイルを変えたくなった場合でも、様式ファイルだけ修正し、再度Excelデータをもとに一括で計算書を再作成できますので、Wordの修正手間が軽減します。
  • Wordの計算書だけ公開・提出することにより設計資源の漏洩を防止できます。
  • 入力および計算用Excelデータはいくつか様式の制限がありますが、他ファイルへのリンクや、独自にVBAを埋め込むことは問題ありませんので、上記のとおりWordだけ提出する場合であれば、漏洩や悪用を気にせず設計者が自由に計算表作成できます。
  • 【重要】PythonスクリプトはWordデータの上書きをチェックしませんので、一度手作業で修正したWordファイルの保管にご注意ください。

動作に必要なアプリケーション等は以下のとおりです。

  • Python3:サイトからダウンロードしてください。
  • Microsoft ExcelおよびWord:当方は2016にて動作検証しております。旧バージョンでもxlsxおよびdocxであれば動作すると思いますが、当方では確かめておりません。

使用するファイルは、Pythonスクリプト,入力および計算用Excelデータ(様式は半指定),出力用Wordデータ(様式は任意)の3種類になります。とりあえず動作確認したいときは、ダウンロードしていただいたZIPファイルを展開し、pywファイルを起動させてください。ファイル選択ダイアログボックスが出ますので、入力用Excelファイルを開いてください。

データ作成方法はExcelやWordのサンプルデータに書き込みました。現在このページにドキュメントを作る時間がないためご容赦ください。後日あらためて作りたいと思います。

なお、ご使用や再配布にあたっては使用者の責任にてお願い申し上げます。

下のダウンロードボタンからダウンロードできるのファイルはPythonスクリプト,入出力ファイル,および出力サンプルのみとなっております。EXEファイルが必要な場合はbox.net計算書Word出力プログラム(64bit_exe同梱)よりダウンロードしてください。

EXCELによる表紙作成VBA

EXCEL VBAによる表紙作成プログラムです。

簡単な手順は以下のとおりです。使用方法についてはデータ入力用ファイル(GD表紙作成.xls)にも記載しております。また2019/07/27の記事にて簡単に紹介させていただいておりますので、あわせてご覧ください。

  • 手順1:ダウンロードしていただいたZIPファイルを展開し、EXCELからデータ入力用ファイル(GD表紙作成.xls)を開いてください。
  • 手順2:ファイルを開くと、サンプルの文字が既に入力されていますので、これらの文字を書き換えてご使用ください。また、入力シートの15行目以降について、行の挿入や削除を行いたい場合はC~H列を対象に行っていただきたいですが、上のボタンでも同様の操作が可能です。便利ですが、UNDOとREDOが効かないので用途に合わせてご使用ください。
  • 手順3:入力が済んだら、右上の「表紙作成」ボタンを押してください。図書ごとにファイルを生成します。(出力したファイルを参考に同梱しております。)

フォントやレイアウトを変更したい場合は、あらかじめ「表紙」「目次」「見出し1」「見出し2」をお好みのスタイルに調整してください。ただし、VBAがタイトル文字列などを複写するセル番地は変えられませんので、位置を大きく変えたい場合はセル幅やセル高さなどにて調整してください。なお当方では試していませんが会社ロゴなどを貼り付けてもらっても対応できるのではないかと思います。

注意点ですが、本EXCELファイルの形式は旧バージョン(xls)ですが、現行のxlsmに変換するとVBAが動作エラーとなります。新旧バージョンでセルの行数が違うために発生する現象ですので、xls形式のままご使用ください。なおファイルにロックはしておりませんので、VBAソースを含めてご自由に改良していただいて構いません。

最後に、月並みではありますがご使用や再配布にあたっては使用者の責任にてお願い申し上げます。また本プログラムにおいてはいまのところ当方にて改変する予定はありませんので、ご質問には可能な範囲でお答えいたしますが、改良要望についてはお受けできかねますのでご了承ください。

非公開: 泥水物質収支計算プログラム(小口径版)

小口径管推進工法の泥水式推進工法に対応した物質収支計算書作成プログラムです。

注意点およびご使用方法は以下のとおりです。また2019/08/16の記事にて簡単に紹介させていただいておりますので、あわせてご覧ください。

  • 【重要】いくつかの既往成果などを元に出力結果を検証していますが、まだ解消しきれていない不具合があるかも知れませんので、本ソフトをご使用の際は十分にチェックをお願いいたします本ソフトに起因したトラブルや本ソフトの修正にも対応出来かねますので、使用者の責任においてご使用ください。なお間違いによる本ソフトの修正要望は出来るだけ対応する考えですが、修正版の配布時期については当方に一任していただきたく存じます。
  • 【重要】今後修正してきたいと考えていますが、現在は送排泥設備の計算は日本下水道協会の積算要領を参考に、物質収支計算は日本推進技術協会の積算要領を参考にしています。また二次処理には対応しておりませんので、ご注意ください。
  • 手順1:ダウンロードしていただいたZIPファイルを展開し、中の2つのファイル(EXEファイルとdocxファイル)を同じフォルダに置いたまま、GDdeisuimin.EXEを起動してください。なおファイル名は変更しないでください。
  • 手順2:ソフトを起動させると、サンプルの数字が既に入力されていますので、これらの数字を書き換えてご使用ください。
  • 手順3:数値入力後、「計算結果表示」を押下すると画面右側に積算数量が表示されます。「計算書出力」を押下すると、計算書書式ファイル(GDdeisuimin_basefile_V1.docx)を利用してPDFファイルが生成されます。
  • 手順4:エクスプローラーからフォルダをソフトのウインドウにドラッグすると、データ保存先のフォルダをセットすることが出来ます。データ入力後、必要に応じて保存してください。
  • 保存したデータの読み込みは、データファイルをソフトのウインドウにドラッグすることで開きます。なおデータファイルはテキストファイルとなっております。
  • 本ソフトは一般的なWindowsアプリと違い、ウインドウそのものを縮小表示出来ますので、ソフトの画面全体を見渡したいときは、ウインドウの角をつまんで縮小方向にドラッグしてください。

現場踏査用

組立マンホール蓋芯と躯体芯との関係図

交通状況や悪天候などによりマンホールを開けられないときにでもマンホール中心をおさえられるように、マンホール蓋の中心からマンホール本体の中心までのオフセットを示した図です。組立マンホールのCAD図を根拠としているためメーカーにより違いがあるかも知れませんので、あくまでも参考程度です。(現場によってはマンホール蓋に本体中心位置の目印がある場合もありますので、それと一致すればほぼ信頼できるかと思います。)