パソコンスキルの教科書

文字列型の変数strに

タグと改行を設定します。

このstrという変数にtable, tr, th, tdタグを付与し、HTMLを生成します。

プログラムA-6|wsの2行目から最終行まで処理

1
2
    Dim i As Long
    For i = 2 To UBound(mytable)

2行目から最終行(UBound(mytable))まで1行ずつ処理を繰り返していきます。

プログラムA-3のとおり、配列の最終行はUBound(mytable)で取得できます。

この事例では、UBound(mytable)=11です。

なお配列に関しては、以下で事例を交えて説明しています。

マクロVBA配列の事例9|2次元配列,要素数,検索,格納,追加,初期化,引数
マクロVBA配列の事例9|2次元配列,要素数,検索,格納,追加,初期化,引数
エクセルマクロVBAの配列について事例を使って紹介します。 目次1 事例1|静的配列で値を格納し、Joinで結合する2 事例2|動的配列で値を追加し、Joinで結合する3 事例3|動的配列内の要素数を調べる4 事例4|デ […]

プログラムA-7|行の開始箇所に

タグを付ける

各行を処理するたびに、その先頭に

タグを付与します。

tableタグ内の各行を

~

で囲むためです。

なおプログラムA-9で

で付与しています。

プログラムA-8|HTMLのth, tdタグに変換(プログラムBにデータを渡す)

エクセルの2行目から最終行まで各行ごとにth,tdタグを付与しながら、表のHTMLタグを生成していきます。

i=2のときthタグを、i>2のときtdタグをそれぞれ付与する形にしています。

これはエクセルの2行目がヘッダー情報で、それ3行目以降はテーブル内の情報だからです。

i=2:GetEachRowContents(i, ”

“, mytable)

i>2:GetEachRowContents(i, ”

“, mytable)

FunctionプロシージャであるGetEachRowContents(プログラムB)を動かしています。

ここでは以下の4つの引数を設定しています。

1. i:行番号

2. ”

“もしくは”

“:thもしくはtdタグの終了箇所

4. mytable:プログラムA-3で設定した配列

上記の内容をプログラムBに渡して、各行のデータにth,tdタグを付与させます。

プログラムB実行後、th,tdタグを付与した文字列が戻ってくるので、それをstrの末尾に結合していきます。

プログラムA-9|行の終了箇所に

タグを付ける

行のデータを終了箇所に

タグを付与します。

プログラムA-10|strを

で閉じる

最後に

で閉じることで、HTMLタグの生成は完了です。

以降のプログラムでテキストファイルにstr(HTMLタグ)を出力します。

プログラムA-11|FileSystemObjectの設定

FileSystemObjectは、ファイルやフォルダを操作するときに使うオブジェクトです。

本事例ではFileSystemObjectをfsという変数として扱います。

変数fsは定義するだけではなく、「Set fs = New Scripting.FileSystemObject」と記入して使えるようになります。

これを忘れてしまうことが多いので、注意が必要です。

FileSystemObjectに関する注意点

参照設定にて、Microsoft Scripting Runtimeを設定に入れておく必要があります。

設定を忘れると動作しませんので、事前に設定を変更しておく必要があります。

なお、FileSystemObject以外にもフォルダを操作する方法はあります。しかしFileSystemObjectを使えば、ファイルとフォルダを両方操作できるので、覚えることが少なくて済みます。

細かいことを覚えるのが面倒な人は、ファイルやフォルダを操作するときはFileSystemObjectを使うと覚えておくといいです。

FileSystemObjectについては以下で詳しく説明していますので、ご覧ください。

VBAのFSO(FileSystemObject)とは?参照設定や使えないときの対処法からメソッドや事例まで
VBAのFSO(FileSystemObject)とは?参照設定や使えないときの対処法からメソッドや事例まで
VBAでフォルダやファイルを操作するとき、FSO(FileSystemObject)を設定すると便利です。 このページではFileSystemObjectを使うために必要な設定(参照設定の方法)を紹介します。 また参照設 […]

プログラムA-12|新しいテキストファイルのパスを設定

新しいテキストファイルのパスを設定します。

ここではエクセルと同じフォルダにtable.txtを保存します。

プログラムA-13|新しく作成したテキストファイルを書き込みモードで開く

FileSystemObjectのOpenTextFileメソッドを使って、書き込みモードでテキストファイルを生成します。

この時点でtable.txtがエクセルと同じフォルダに作成されます。

ただしファイルに文字が書き込まれていないため、0KBとなっています。

プログラムA-13|テキストファイルにstrを書き込む

プログラム10までに生成したHTMLテキスト(str)をテキストファイルに書き込みます。

プログラムA-14|オブジェクト解放

プログラム終了前にオブジェクトを解放します。

プログラムA-15|プログラム終了

これでプログラムAは終了です。

プログラムB-1|プログラム開始

引数として、以下の5つを取得します。

1. i:配列の行番号を受け取る

2. tagA:

を受け取る

3. tagB:

もしくは

を受け取る

4. ByVal mytable As Variant:プログラムA-3のmytableを受け取る

なお、プログラムB「GetEachRowContents」はString(文字列)型で定義しています。

上記の引数を受け取り、プログラムBを動かします。

プログラムB-2|変数設定

Dim k As Long
Dim width As String, st As String

変数を設定します。

変数については、以下のページで説明しています。

VBAの変数とは?型や初期値からメリットや使う意義まで解説
VBAの変数とは?型や初期値からメリットや使う意義まで解説
VBAでは変数を使うとき、最初に変数を定義すると便利です。 このページでは変数を定義する方法や、変数名の付け方などについて解説します。 上記の動画で変数について解説していますので、イメージを掴みたい人はご覧ください。 以 […]

プログラムB-3|文字列stの初期化

文字列stを””で初期化します。

プログラムB-4|Tableの各行をHTMLに変換してstに格納

配列の列データを全て処理させます。

この事例ではA列からD列までデータが入力されているため、「UBound(mytable,2)=4」となります。

つまり「k = 1 to 4」です。

さて、このプログラムでどのように値を変換するかというと、以下のようになります。

Debug.Printでの検証結果

i=2のとき

i=2のときは、ヘッダー情報が出力されるので、thタグを付与しています。

i=3のとき

i=3のときは、テーブル情報が出力されるので、tdタグを付与しています。

このように各行の列データにたいして、タグを付与していることが分かります。

プログラムB-5|戻り値としてstを設定

戻り値としてstを返します。

stにはプログラムB-4で、エクセルの各行をHTMLとして出力したテキストが入力されています。

各行ごとのHTMLテキストをstで生成し、プログラムA-8にstを戻し、strの末尾に文字列として結合させていきます。

これにより表のHTMLを生成していきます。

プログラムB-6|プログラム終了

プログラムB-1と対になるプログラムです。プログラム終了させる記載です。

「End Function」を読み込んで呼び出されたプログラムに戻ります。

この事例ではプログラムA-8に戻ります。

プログラムの解説はここまでです。

類似の事例

ここではエクセルの表データをHTMLとしてテキストファイルへ出力するプログラムを紹介しました。

VBAでテキストを扱う事例について、類似のものを紹介しています。

VBAでサブフォルダ含めフォルダ名とファイル名をテキストファイル出力
VBAでサブフォルダ含めフォルダ名とファイル名をテキストファイル出力
VBAを使うとフォルダ内の全てフォルダやファイル名を取得して一覧にすることができます。 これは下位フォルダ(サブフォルダ)のファイルも含めて全て取得可能です。 実際、エクセルにフォルダ名とファイル名を取得するプログラムは […]
VBA×ファイル操作|フォルダ名とファイル名をテキストファイルへ出力
VBA×ファイル操作|フォルダ名とファイル名をテキストファイルへ出力
フォルダ内のファイルやフォルダ名を書き出したいときがあります。 このときVBAを使うと、フォルダ名とファイル名の一覧を入手することができます。 実際、エクセルにフォルダ名とファイル名を取得するプログラムは以下のページで紹 […]
エクセルVBA×Text|テキストファイルの文字列を一斉置換・変換
エクセルVBA×Text|テキストファイルの文字列を一斉置換・変換
テキストファイル内の複数の文言を置換したいときがあります。 対象のテキストファイルが1つや2つであれば、置換作業もそこまで大変ではありません。 しかしテキストファイルが複数ある場合、手入力で置換作業を行うのは作業量が多く […]

Excel VBAについて詳しく理解したいなら

エクセルマクロVBA「できること」は何?100事例で自動化を解説
エクセルマクロVBA「できること」は何?100事例で自動化を解説
エクセルマクロVBAを使えば面倒な仕事を自動化して、作業をエクセルに処理させることができます。 このツールの利点は、入力ミスをなくし、かつ作業が早く終わらせることができる点です。 しかし、エクセルマクロと聞いても以下のよ […]

上記は、私が実際にVBAを活用して効率化してきた事例を紹介しています。

VBAを活用すると、仕事を効率化できる幅を広げることができます。

Excel VBAで出来ることは動画でも解説

動画でも解説しています。


エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!

(音声が小さいので、ボリュームを上げてご覧いただければと思います)

VBAの勉強方法

私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。

成長の過程は以下で紹介しています。

私がVBAを習得するまでにやったこと

学習の過程では、意識すべきポイントがあります。

特に独学の場合だと、勉強を優先してしまい、肝心な実践を疎かにしがちです。

私の経験では、実践から逆算した勉強が必要だと考えています。

目指すべきは会社でお金をもらいながら勉強することです。

要はVBAを仕事の一つとして上司に認めてもらうのです。

そうすればわざわざ高いお金を払って勉強をする必要がなくなります。

しかも作業を自動化して、会社やチームに貢献しつつ、自らのスキルアップできます。

そのために必要な考え方を以下で紹介しています。

VBAを作成するときに覚えておきたいコツ

とはいえ、プログラミング初心者でVBAについて知識ゼロの人もいるはずです。

いきなり会社でVBAで使うことさえ、とてつもなくハードルが高く見えてしまうものです。

その場合は、VBAの基本について学ぶ必要があります。

たとえば車の運転も慣れてしまえば、たいしたことではありません。

しかし教習所で運転の基本を学び、免許を取得することで、公道で運転できるようになります。

VBAも同じです。VBAに免許はありませんが、まずは基本を学ばないことには会社で使えるレベルにはなりません。

実際に私もプログラミング初心者のときは、動画を見たり書籍を読んだりして勉強しました。

今はオンラインの教材で無料で学習できるものも多いです。

ExcelマクロVBAのオンライン通信講座おすすめ5選|評判や内容
ExcelマクロVBAのオンライン通信講座おすすめ5選|評判や内容
「ExcelマクロVBAやAccessVBAを学びたいから、オンラインの通信講座を試そう!」 こう考えて、ウェブで調べてみると、いくつも種類があり、どれを選べばいいのか判断に迷います。 しかし、初心者には有料のオンライン […]

上記のリンクでは、私の経験から勉強にオススメの教材を紹介しています。

興味がある人はご覧ください。