タグ別アーカイブ: Excel

VBA: ファイルの一覧を再帰的に出力する


よく使うコードのメモです。

Excel などで、あるフォルダ以下のファイル一覧を出力したいときに使うコードです。 言語は VBA です。

VBA は オブジェクト指向的 に書くこともできるのですが、 急遽必要だったので、「とりあえず動けばいい!」というスタイルで作りました。

プログラムの流れ

  1. シート上のボタンをクリックします。
  2. フォルダ選択ダイアログを表示します。
  3. 選択されたフォルダ以下のファイルを再帰的にリストにします。
  4. リストになったファイル一覧を、フォーム(またはシート)に出力します。

やること

  • モジュールを作成して、次の関数を作成します。
    • ファイル一覧を取得する
    • フォルダ選択ダイアログを処理する
  • 結果を出力するダイアログを作る。
  • シートにボタンを作ってクリックしたときの処理を追加する。

続きを読む VBA: ファイルの一覧を再帰的に出力する


Excel でメールアドレスクリック時に自動でメッセージなどを入れる方法


Excel にメールアドレスを入力すると、青色のリンクになります。 ここでは、そのリンクをクリックしたときにタイトルなども含めてメールのひな型を作成する方法を書きます。

メールアドレスをクリックした際にできるメールに、受信者の名前を表示したいという要望を受けて調べました。

前提

使用者のパソコンには メールソフト Thunderbird がインストールされており、 メールアドレスのリンクをクリックすると Thunderbird のウインドウが開くようになっています。

方法

セルの式に “=Hyperlink("mailto:name")” と入力します。

もし、本文やメールタイトルも設定したい場合は “=Hyperlink("mailto:name?subject=title&body=message")” というように入力します。

式を直接入力しなくても セルを右クリックし、ハイパーリンクを選択して設定することもできますが、 セルが複数あるときは式を編集するのが早いです。


勝手に大文字 Excel 2007 解決法


オートコレクトの弊害

Microsoft Office には、オートコレクトという機能があります。 これは、うれしいときもありますが、邪魔になるときもあります。 全部小文字アルファベットで書きたかったのに、勝手に最初の文字が大文字になってしまったり。 ここではその大文字と小文字のオートコレクト解除法を書いておきます。

続きを読む 勝手に大文字 Excel 2007 解決法


パソコン作業を速くして 2時間早く仕事を終える!


『最新 Windows + Office ショートカット・キー事典 - 2時間早く仕事が終わる!!(秀和システム)』(井上 孝司)
『最新 Windows + Office ショートカット・キー事典 - 2時間早く仕事が終わる!!(秀和システム)』(井上 孝司) を Amazonで買う

Windowsショートカットを集めた本です。厚さは 約 1cm でコンパクト! 簡単に見られるところが魅力です。特に、ショートカットキーをほとんど使ったことがない人にオススメです。Microsoft Office をよく使う人にもオススメ

内容は、大きく分けて、Windows 全般に関するもの(Internet 含む)、Outlook Express / Office Outlook に関するもの、Microsoft Office (Word, Excel, Access, PowerPoint) に関するものの3種類(全て Windows ユーザ向け)。ショートカットキーというのは、知っている人は知っている通り、ものすごくたくさんあります。この本は、そのなかから使用頻度が高いと思われるものを選んで掲載。私自身、これを見てからよく使うようになったショートカットがあったりします。

Internet は誰でも使うので、誰にでも役に立つといえばその通りなのですが、Microsoft Office を使わない人は後悔するかもしれません。なぜなら、本の半分以上が Microsoft Office についてのショートカットだからです。「結局使わなかった」となるくらいなら、他の本を買ったほうがいいのではないかと思うのです。

また、ここに載っているショートカットを覚えたからといって、仕事ができるようになると思わないでください。ショートカットというのは、今やっている仕事を短縮するために使うものであって、それ自体、なにか仕事をするものではありません。

快適なパソコンライフを送りましょう!

『最新 Windows + Office ショートカット・キー事典 - 2時間早く仕事が終わる!!(秀和システム)』(井上 孝司)
『最新 Windows + Office ショートカット・キー事典 - 2時間早く仕事が終わる!!(秀和システム)』(井上 孝司) を Amazonで買う

コントロールを変数にしてForループ Excel VBA


コントロール引数にしたプロシージャを作るにはどうすればいいのか、
コントロールForループに入れてやるにはどうすればいいのか。

経緯

フォームをダブルクリックした際に フォーム上の 全テキストボックスについて .Enabled を変化させようとしました。 全てのコントロール名を書き連ねるのは大変なので、 ループ を使って複数のコントローラに対して処理を行おうと考えました。

解決法

VBA では Me.Controls("ControlName") でコントロールを取得できます。 そこで、 .Enabled を変更する TextBox の名前を txtTitle1txtTitle2 というようにしておき、次のようなループ処理を実行します。

Me.Controls で取得したコントローラについて複数行の初期化処理を行う場合は With を使うのもいいですが、 次のように変数に代入して使うこともできます。

変数宣言のところで As TextBox などと書くと エラーが出ます。

これらを利用して作ったのが次のコードです。

その他下記のような方法が使えそうです。

配列を使う

.Net では コントロール の 配列 (のようなもの) に コレクション というのがあり、 配列のように扱うことができます。 しかし VBA には コレクション クラス が用意されていません。

しかし、 Me.Controls の引数にする String は配列にできます。

コレクションクラスを作ってしまう

コントロールの集合を扱えるようなクラスを作ってしまうのもいいと思います。