2014年4月24日木曜日

Better VBA としてのPowerShell

まえがき

に、PowerShellからCOM経由でExcelを操作する話が載っていました。サンプルコードを見た感じでは、VBAと大差なくExcelを扱えそうでした。

というわけで、COM経由でOfficeをまともにハンドリングできるのであれば、 ~中略~ Better VBAとして使えそうな気がしたので色々試してみました。

サンプルコード

動作検証がてら、自分がVBAでよく操作するアプリに関するサンプルコードを書いてみました。(サンプルコード自体に意味はないです。)

概要

  • (ブラウザの操作) SeleniumVBAを使ったChrome の操作
    • Googleで「メタ構文」をキーワードに検索
    • 上位5位までの検索結果のページタイトルを取得
  • (Excel の操作)
    • Chromeから取得したページタイトルをセルに書き込み
  • (Word を操作) ExcelとWordの連携
    • Excelのセルの内容を、Word本文に流し込み

2014年4月17日木曜日

変更履歴に記録された変更箇所に下線を引くためのWordアドイン

概要

Wordの「変更履歴」機能を利用すると、追記した箇所には下線が、削除した部分には破線が引かれます。通常、これらの下線や破線は、変更履歴を反映させると無くなります。


人によっては、変更履歴を反映させても(変更履歴は削除したいけど)、下線や破線を実際に残したいという状況があるかと思います。

というわけで、これらの下線や破線を実際に残すためのマクロを含むアドインを作成しました。

実務的な利用場面としては、特許明細書の補正に係る手続補正書を作成する際に、「手作業で、追記箇所に下線を引きたくない!」という場合でしょうか。これについては後述しています。

2014年4月12日土曜日

VBAFrameworkに関して

VBAFramework

VBAFrameworkは、VBAっぽい書き方なんてわざわざ覚えたくないという.NETプログラマ(作者)のための.NET Frameworkクローンライクなクラス群です。

githubにて公開しています。

利用の際は、gitにて、core.autocrlf をtrueにした状態でcloneしてください。
(githubのサイトからZIPパッケージをダウンロードした場合は、改行コードがLFになっているため、手動でCR+LF に変換してください。)

2014年4月2日水曜日

新たに見つかったExcel VBAの闇について

【概要】

VBAの中でも、Word VBAやAccess VBAでは発生せず、Excel VBAでのみ発生する謎の挙動が見つかったので記念にメモします。

例によって、元カリスマVBA-erの@igetaさんが問題を特定して下さいました。

以下では、説明の都合上、Wordで用いるVBAを「Word VBA」、Accessで用いるVBAを「Access VBA」といったように記載しています。実際には、「VBA」という言語自体は、Officeソフトを問わず同一仕様です。

※ 一応補足説明。WordやAccessなどで、初期状態で呼び出せる関数が違うので、アプリケーションによってVBAの仕様が異なると誤解されている方がいるかもしれませんが、これは、単にデフォルトの参照設定が異なっているために「暗黙的に」呼び出せる関数に差が出ているだけです。

【想定する読者】


  • VBAの仕様書にない仕様・挙動まで知っておきたい方
  • VBAを極めたい方

知っておいても損はないと思うけど、実務上、今回の話が問題になることは正直ないと思います。(Officeアプリケーションをまたいで動作をするVBAコードを書くような 特殊な状況でしか役に立ちません。)