t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

2016-01-01から1年間の記事一覧

VBA Functionプロシージャの動作をテストするコード

VBA

堅牢なソフトウェアを作ろうと思ったら、テストは欠かせないプロセスだ。ソフトウェアテストというのは、要するに「ちゃんと動くかどうか」を確認する作業なのだが、「使ってみました。たぶん問題ありません。」という簡単な話でもない。私もあまりテストに…

VBA ユーザーフォームのテキストボックスのサイズを自動で最適化するマクロ

今回の記事は、Excelの表から各列の最大文字数を求め、その文字数に基づいて適切なサイズのテキストボックスを新規フォームに配置するというものである。記事タイトルからすると既存フォームに対して実行するように思われたかもしれない。 なかなかキャッチ…

VBA クラスモジュールのデフォルトプロパティをマクロで設定する

以前、クラスモジュールをエクスポートしてテキストエディタで編集することでデフォルトプロパティを変更できるという記事を書いた thom.hateblo.jpしかし、わざわざエクスポートして書き換えるというのも面倒くさい。VBAはテキストも扱えるので、どうせなら…

VBA SplitとJoinを使って、文字列型配列の要素数を数える。

VBA

先ほどこのような記事を書いた。 thom.hateblo.jpSplitとJoinで面白いことができると思ったんだけれど、とんだ勘違いだった。まぁ、できるにはできるが、わざわざ2つも関数を持ち出さなくても、Replaceを使った方が良い。ということでなんかJoinも活躍の場が…

VBA vbNewLineを沢山書く変わりに、SplitとJoinでスマートに改行しよう…と思ったけどよく考えてみたらReplaceで良かった。

VBA

さっき投稿したところであるが、冷静に考えてみたらReplace関数で良かった。早とちり。今回は小技を紹介する。VBAでは文字列の改行にvbNewLineを使用するが、文字列の外に書かないといけないので改行が増えてくると面倒だ。まずは普通に書いてみたのがこちら…

Webサイト作成技術の移り変わり

Webの世界は日進月歩。ついこないだまで最新だった知識もあっというまに古びてしまう。今回は「ホームページ作れます!」というソレが意味するところが、人によって全然違うというところを説明したいと思う。ちなみにホームページという用語は、ブラウザを開…

このブログに掲載しているコードの利用条件について

質問サイトを閲覧していたところ、著作権云々で非常に厳しい意見が目についた。訴訟がどうたら、アメリカが云々、TPPでどうなる云々… あーーめんどくせぇ。。言ってることは至極まともなんだけれど、私はあんまり堅苦しいことは言いたくない。逆に読者が著作…

VBA フォームデザイナーで作ったフォームを基にして、それと同じフォームを作り出すコードを自動生成するマクロ

VBA関連のブログ記事を書いていて困るのが、フォーム関連である。 普通の標準モジュールなら、コピーして実行してもらうだけであるが、フォームを使うコードを紹介する際などは、フォームデザインとコントロール名や配置を書かなくてはならない。たとえば、…

VBA 参照設定でライブラリを探すのが面倒なので、ライブラリを検索できる参照設定ダイアログを自作してみた

VBA

VBAの参照設定ダイアログは、大量のライブラリを目視で探していく必要があり、使い勝手が悪い。そこで、ライブラリ名(厳密にはDescription)で検索できるような参照設定ダイアログを自分で作ってみた。先日の記事では、とりあえずレジストリからTypeLibraryを…

VBA 参照設定にマクロで根こそぎチェックをいれてみた。

VBA

VBEの参照設定の画面はお世辞にもよくできているとは言い難い。 膨大な項目があるのに基本的に目視でスクロールして探す必要があるからだ。大体使いたいものは「Microsoft~」なので、「m」キーを押すと頭文字Mの最初の行までは飛ぶ。 これがフォルダとかな…

JScriptでfor eachの代わりになるEnumeratorオブジェクト

【注意】JScript限定です。JavaScriptでは使えません。先日、JScriptで起動中のIEからURLを取得するコードを書いた。 thom.hateblo.jp本当はVBSのFor Eachみたいなもので数を意識せずにループしたかったが、色々調べながらやってみたものの同じような処理は…

WSH/JScriptで起動中のIEからURLを取得する。

先日買ったJavaScript本のコードを何度か写経して、そろそろ自分でもコードを書いてみたくなった。 thom.hateblo.jpそこで、普段仕事でもよく使うIE操作のテクニックの準備段階である、開いているIEのURLを取得するコードを書いてみることにした。普段はExce…

VBA 参照設定とCreateObjectは全く別の経路でオブジェクトを参照する。

昨日以下の記事を書いた。 thom.hateblo.jp要約すると、レジストリのHKEY_CLASSES_ROOT直下にプログラムID(InternetExplorer.Application等)のキーがあり、その下のCLSIDにGUIDが入っているのでそれをまたレジストリから辿ると、TypeLibを辿れるというもの。…

VBA CreateObjectか参照設定のどちらかしか分からないとき、もう片方を調べる方法(NG)

VBA

1/31追記 お詫び 以下の記事はレジストリを辿ってCreateObjectと参照設定を相互に調べる方法を書いていますが、IEなどごく一部のアプリにしか適用できないことが分かりました。つまり、あまり有用なテクニックではありません。はやとちりですみません。 一応…

VBA 任意個の引数が全て同じ値かどうかを判定する関数を作る

VBA

プログラムを書いていて、Aが1で、かつBも1ならば処理を実行するというようなケースが時折発生する。これを素直に書くとこういうコードになる。 If A = 1 And B = 1 Then MsgBox "処理" End If しかし、さらにCやDも増えたらだんだん冗長なコードになってく…

仕事がはかどるJavaScript活用術を購入

書店で前から気になっていた書籍を購入した。仕事がはかどるJavaScript活用術─Word/Excelで自動処理して効率アップ作者: クジラ飛行机出版社/メーカー: 日経BP社発売日: 2014/09/20メディア: 単行本この商品を含むブログ (1件) を見るWindowsは「Windows Scr…

WordにVBAコードを張り付けると1行1段落になってしまう問題を回避するマクロ

VBA

今回の記事は、前回の記事を踏まえて書くので、未読の方はこちらもどうぞ。 thom.hateblo.jpVBエディタからコードをコピーしてWordに張り付けると、次のように1行1段落になってしまう。 段落間には余白がとられるため不自然に行間が広く開いてしまう。設定で…

Wordの改行は、実はEnterじゃなくて、Shift + Enter。

WordでEnterキーを押すと現れるこの記号。 Word使いにはおなじみの記号だ。多くの方がいまだに誤解しているのだが、これは「改行記号」ではない。行指向のテキストエディタとは異なり、Wordは段落指向のソフトウェアである。上の記号は「改段落」を表す段落…

VBA ソースコードをカラーで印刷するWordマクロ

VBA

同じコードでもキーワードに着色されているだけで、ずいぶん見やすくなる。 しかし残念なことに、VBエディタの印刷機能ではソースコードをカラー印刷できない。コピーしてWordに張り付けても、元がただのテキストなので黒一色になってしまう。 そこで今回は…

VBA 文書をまともなHTMLに変換するWordマクロ

VBA

最近、メインサイト(以下)の更新が滞っている。 トップページ - You.Activate当初はhtmlの学習も兼ねてテキストエディタで作ったサイトなのだが、ブログの快適さに慣れた後では記事を一本上げるだけでも結構面倒くさい。かといってWordpressを導入するにはレ…

VBA Debug.Assertの使い方

VBA

以下のプログラムを実行すると、ランダムな数値が出力される。 Sub BugSample() Dim Arr(1 To 10) As Long Dim UpperBound As Long: Upper = 1000 Dim LowerBound As Long: Lower = 10 Dim i As Integer For i = 1 To 10 Arr(i) = Int((UpperBound - LowerBo…

VBA ウォッチウインドウでツルカメ算を解く ~ ウォッチウィンドウの使い方・式とは何か

VBA

ウォッチウインドウの基本 VBエディタの表示メニューからウォッチウインドウを選択すると、以下のようなウインドウが開く。ウォッチウインドウとは、あらかじめ登録した変数やオブジェクトのプロパティの中身を、プログラムの実行中に確認できるウインドウで…

VBA フォルダー階層を辿るサンプル ~ 再帰をマスターする

VBA

VBAではFileSystemObjectを使用することで簡単にWindowsのフォルダーを扱うことができる。※FileSystemObjectを使用するには、VBEのツールメニューから参照設定で、MicrosoftScriptingRuntimeを参照しておく必要がある。まず手始めに、特定フォルダ直下のファ…

VBA 似ているようで違うExcel・Word・PowerPointのシェイプをオブジェクトブラウザーで比較する

VBA

ブック、シート、セルなどの操作に比べると、シェイプの操作に関する情報はまだまだ少なく、ある程度コツをつかむまではマクロ記録で調べながらの対応となる。Excelのマクロの記録は優秀で、シェイプに行った操作も逐一記録してくれる。しかしWordのマクロの…

VBA オートメーション、参照設定、ライブラリ、タイプライブラリ、DDE、COM、OLE、ActiveXなどの用語整理。ついでに.NETも。

VBAには外部オブジェクトを操作するために参照設定という機能が用意されている。そういう機能だと割り切って使用する分には何ら問題はないのだが、参照設定の仕組みなどに興味を持ってしまうと、高い確率でタイプライブラリやCOM、ActiveXなどのの単語に出く…

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