t-hom’s diary

主にVBAネタを扱っているブログです。

VBA パスカル記法を単語ごとに区切って配列で返すSplitPascal関数を自作する

VBA

今回はパスカル記法を単語ごとに区切って配列で返す関数を作成する。前回このような記事を書いたのだが、 thom.hateblo.jpこの記事を受けて@Dev_Clipsさん(サイト)からツイッターで「ImageMsoの"名前"の一致率も類似画像抽出に使えそう」とのヒントを貰った…

VBA GDI32で画像をピクセルごとに比較して類似画像を選り分けるマクロ

今回の記事は以下3記事の集大成である。 1) VBA アドイン作成で使用するリボンアイコンの組み込み画像(ImageMSO)をBitmapで一括保存する方法 - t-hom’s diary 2) VBAで2つの画像ファイルを比較して内容が同一かどうかを判定する方法 - t-hom’s diary 3) VBA …

VBA クラスモジュールを使って色見本(カラーパレット)を作る

前回の記事ではVBAで2つの画像を比較して内容が同一かどうかを判定した。 「次回はこれを更に自動である程度分類するため、VBAで機械学習もどきをやってみようと思う。」と書いたのだが、ちょっとコード分量が多くなりそうなので前半と後半に分けようと思う…

VBAで2つの画像ファイルを比較して内容が同一かどうかを判定する方法

VBA

前回、アドインのリボンで使用できるImageISOをビットマップで保存するという記事を書いた。thom.hateblo.jp実際に保存してみたところ、その数8425点。しかし名前が違うだけで同じ画像がたくさんある。たとえば以下の3つ。 これらは特定画像を探したいときに…

VBA アドイン作成で使用するリボンアイコンの組み込み画像(ImageMSO)をBitmapで一括保存する方法

VBA

目次 能書き ~ うんたらかんたら 全ImageMSOをBitmapで保存するマクロ 能書き ~ うんたらかんたら Excel、Word、PowerPointでは作成したマクロをアドインとして保存することができる。また、オリジナルのリボンタブを作ってマクロを登録しておくと配布され…

VBA XlRgbColor定数をシート上に色相順、明るさ順で出力する

VBA

「あなたの好きな色は何色ですか?」と聞かれたら赤、青、緑、黄、黒、白、紫…まあ、普通はこんな感じで答えると思う。ここで、狐色、若草色、深紅、枯草色といったちょっとこだわった感じの名前を返してくると、「おっ、情緒的でいいな」と思う。ラベンダー…

VBA オートシェイプで作った桜のアイコンでユーザーフォームを可愛くデコレーションする

普段からこのブログを読んでくれてる方は、今回のタイトルを見て「ついにthomもVBAのやり過ぎで頭がおかしくなってしまったか」と思われた方もいるかもしれない。可愛くだなんて。30超えたオッサンが何言うとんねん。 さてさて、今回作ったのはこれ。でん! …

プログラミングの入門に必要なのは「おお、すげー!動いた!」という体験。小難しいことは後回し。

こちら、最近たまたま昼休みに書店に立ち寄る機会があり、ふと手に取った書籍。アイディアを実現させる最高のツール プログラミングをはじめよう作者: 池澤あやか出版社/メーカー: 大和書房発売日: 2015/03/22メディア: 単行本(ソフトカバー)この商品を含…

VBA クラスモジュールを使ってセル内の文字を簡単に色づけ

VBAでセル内のテキストの個別の文字に色をつけるのはわりに面倒くさい。たとえばこんな風に、着色したいとしよう。 上のテキストを実現するには、以下のコードを書けば良い。 Sub hoge() Sheet1.Range("A1").Value = "Red, Green, Blue" Sheet1.Range("A1").…

VBAでテンプレートを元にHTMLコードを自動生成する

VBA

今回はVBAを利用してHTMLを生成するテクニックを紹介題材は先日紹介した、参照設定とCreateObjectの対応リスト - You.Activate thom.hateblo.jpこのページはご覧いただくとわかるように、項目名は同じで内容だけ異なるものが複数回出てくる。 ひとつのオブジ…

VBA 中級者を悩ませるプロシージャ分割をマスターする極意

VBA

タイトルで大きく出てしまった。極意だなんてまあよく恥ずかしげもなく。 「だって教えるプロの~」よりマシか。。なんちゃって。ま、是非知ってほしい内容ではあるので、釣ってみた感じ。さて、それなりにVBAを書けるようになった方が次に悩むこととして、…

VBA WSHとScriptingに存在するFileSystemObjectは同一のバイナリーであることが判明

VBエディタから参照設定で「Windows Script Host Object Model」と、「Microsoft Scripting Runtime」の両方にチェックを入れると、どちらのライブラリにもFileSystemObjectが存在する。 今回はこの2つが同じものなのか、それとも別物なのかを検証してみた。…

VBA ありそうで無かった、参照設定とCreateObjectの対応表を作った

VBA

表題のとおり。。。なんだけど、作ったといってもまだたったの6点のみ。 ファイルシステムオブジェクト ディクショナリーオブジェクト WSHシェルオブジェクト WMIオブジェクト InternetExplorerオブジェクト 正規表現オブジェクト しかしこれがまた曲者で、…

(解決済)VBAからPowerShellのパラメーター付きコマンドが実行できずにハマった話

先日以下の記事を書いたが、ひとつ問題が発覚した。thom.hateblo.jpパラメーター付きのコマンドがうまく実行されないのだ。 実行時エラーで、「ファイルが見つかりません」と出てしまう。つまり、コマンドが失敗してテンポラリーファイルが作成されてないと…

VBAから手軽にDOSコマンドやPowerShellを実行して結果を取得するモジュールを作成

VBA

システムの運用をやっていると、VBAからDOSコマンドとかPowerShellを実行したくなるケースがある。 WScript.ShellのExecメソッドなら標準出力が取得できるのだが、一瞬DOS窓が開いてしまうのがちょっと格好悪い。非表示でやりたいと思ったら、Runコマンドで…

科学のモデルとはフィクションにおける「設定」のようなもの

今回はこちらの記事を受けて、私が学生の頃、先生にどう説明してほしかったのかという話を。 chemiphys.hateblo.jpこういうのって個人差が大きいので、クラス全員がまんべんなく理解できるような解は無いんだろうけど。実は私、ここ半年くらいの間に原子構造…

VBA マクロ、プロシージャ、メソッドなどの用語について正確に理解する

初心者向けの解説によくマクロとVBAの違いが取り上げられる。 一応違いについて説明した後、同じようなものなのであまり気にしなくて良いと締めくくるケースも多いけど、私はやはり違いを意識したほうが良いと考える。初心者は同じようなものと言ってくれた…

九九、FizzBuzz、じゃんけんの3つをプログラミングの「永字八法」に認定する

漢字の「永」の字には、書に必要な以下の技法8種が全て含まれている。 点 横画 縦画 はね 右上がりの横画 左はらい 短い左はらい 右はらい このことを永字八法(えいじはっぽう)というらしい。カッコイイ!つまり書の練習に「永」という漢字をチョイスすれ…

VBAのコーディングガイドラインを作ってみた

VBAのコーディングガイドラインを作ってみた。掲載先は私のメインサイト。VBA コーディングガイドライン - You.Activateガイドライン作成にあたり参考にしたのはこちらの4冊VB.NETルールブック ?読みやすく効率的なコードの原則作者: 向山隆行,片山優司,阿部…

VBA 「これはマクロ化しない」という決断も必要

VBAを覚えてマクロを作れるようになると、業務を手当たり次第自動化したくなるものだ。しかし安易な自動化は慎むべきかもしれない。このように考えるようになったのは、以下の記事がきっかけだった。 自動化をどこまで進めるか|会社で役立つリスクマネジメ…

サイトをスマホ対応させたので参考にした書籍2点を紹介

昨年末から今日にかけてVBAネタを書きながらもRuby on RailsやCSS3、JQuery、スマホサイトデザインなどWeb系の技術をコツコツ勉強してきた。その甲斐あって、本日ついに、念願のスマホ対応完了! (あ、Railsは関係ないけど。)ちなみに780px以上の画面で見る…

VBA SmartArtを使ってシートごとに作業ステップを表示するバーを作成するマクロ

VBA

今回はVBAでSmartArtを使ってシートごとに作業ステップを表示するバーを作成してみようと思う。作成物のイメージはこのようなもの。 今回マクロで作成するのは上部のStepを表示するバーの部分だけ。シート2ならStep2がハイライトされる。 ひとつの業務に使用…

VBA デザインしたユーザーフォームを元にNewで複数のフォームインスタンスを作る。

VBAでユーザーフォームはふつう、単一のオブジェクトとして扱う。たとえば以下のようなフォームを作ったとしよう。 オブジェクト名は「frm成績」としたので、このフォームを表示させるコードはこうだ。 Sub hoge() frm成績.Show End Sub この時フォームは、…

VBA 参照設定とCreateObjectを定数1つで切り替えるテクニック

VBA

VBAで外部のオブジェクトを扱うには、事前バインド方式と遅延バインド方式の2種類がある。事前バインドとはいわゆる参照設定のことで、遅延バインドとはCreateObject関数によるオブジェクト生成を指す。さて、どちらが良いかと言われると一長一短なので困る…

VBA ウォッチウインドウとステップ実行でオブジェクト変数の仕組みを学ぶ

以前クラスモジュールの入門記事でオブジェクト変数はタグのようなものだと書いた。 http://thom.hateblo.jp/entry/2016/12/31/013555#オブジェクト変数は箱じゃなくてネームタグでイメージしよう具体的な仕組みは以下の記事で書いた。 thom.hateblo.jpとは…

ExcelVBAの開発用アドインをGithubで公開してみた

VBA

ExcelVBA開発用のアドインをGithubで公開してみたのでご自由にお使いください。 ただしトラブル発生時は自己責任でお願いします。URLはこちらです。 https://github.com/thom-jp/thoms_ExcelAddIn_for_VBADeveloperファイルの直接ダウンロードはこちらです。…

VBAを写経しながらタイピング練習するツールを作成

今回作成したのは、以下のようなツール。 ※GIFアニメなので読み込み終わって動き出すまで時間かかるかもしれません。 サンプルコードが表示され、その通りに入力していくだけのシンプルなものであるが、次に入力すべきキーとそれを押す指の名前が赤く表示さ…

VBA If文の多重ネストを回避するチュートリアル

VBA

Chemiphysさんのブログで If文のお化けフィールド数が多いデータに取り組む④ - chemiphys’s blogという名言を発見。どうやら条件が増えすぎてIf文が多重ネストになってしまうということらしい。 ちょっと修正してみたので記事にして良いですかと確認を取った…

VBA MsgBoxのオプションはなぜ足し算できるのか

VBAのメッセージボックスでは、以下のように適用したいスタイルを足し算できる。 Sub hoge() MsgBox "処理を続行しますか。", vbYesNo + vbQuestion + vbDefaultButton2, "確認" End Sub 上記のマクロを実行すると、このように表示される。 変な文法だと思わ…

VBA VBエディタ上から実行できるRGB関数入力用のカラーパレットフォームを作成

VBA

ちょっと長めのタイトルになってしまったが、要はこんなの↓を作った。 VBEのメニューからパレットを起動し、目当ての色のラベルをクリックするだけでカーソル位置にRGB関数が挿入される。きっかけはこちらの記事。(感謝) chemiphys.hateblo.jp 作りかた こ…

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。