エクセルの表データをHTMLに変換したいときがあります。
このときTable,tr,tdタグなどを1行ずつ貼り付けるのは非常に手間がかかります。
とくに表データが多い場合、コピー箇所を間違えて、抜けや漏れがあったりすることもあります。
そこでVBAを使ってエクセルの表データをHTML変換し、テキストファイルにHTMLとして出力する方法を紹介します。
・VBA入りのエクセルファイルをダウンロード可能
それでは以下で詳しく紹介していきます。
目次
- 1 VBAで請求書PDFの表データをエクセル台帳に転記する
- 2 VBA入りのエクセルファイルをダウンロード
- 3 VBA作成前の事前準備
- 4 VBAのプログラムソース解説
- 4.1 プログラム0|変数宣言の指定
- 4.2 プログラムA-1|プログラム開始
- 4.3 プログラムA-2|シート設定
- 4.4 プログラムA-3|1行目の一番右の列を取得
- 4.5 プログラムA-4|mytableの1行目の値に「%」を付ける
- 4.6 プログラムA-5|文字列strを設定して、表の開始箇所に タグを付ける
- 4.7 プログラムA-6|wsの2行目から最終行まで処理
- 4.8 プログラムA-7|行の開始箇所に タグを付ける
- 4.9 プログラムA-8|HTMLのth, tdタグに変換(プログラムBにデータを渡す)
- 4.10 プログラムA-9|行の終了箇所に タグを付ける
- 4.11 プログラムA-10|strを で閉じる
- 4.12 プログラムA-11|FileSystemObjectの設定
- 4.13 プログラムA-12|新しいテキストファイルのパスを設定
- 4.14 プログラムA-13|新しく作成したテキストファイルを書き込みモードで開く
- 4.15 プログラムA-13|テキストファイルにstrを書き込む
- 4.16 プログラムA-14|オブジェクト解放
- 4.17 プログラムA-15|プログラム終了
- 4.18 プログラムB-1|プログラム開始
- 4.19 プログラムB-2|変数設定
- 4.20 プログラムB-3|文字列stの初期化
- 4.21 プログラムB-4|Tableの各行をHTMLに変換してstに格納
- 4.22 プログラムB-5|戻り値としてstを設定
- 4.23 プログラムB-6|プログラム終了
- 5 類似の事例
- 6 Excel VBAについて詳しく理解したいなら
VBAで請求書PDFの表データをエクセル台帳に転記する
VBAでPDFを操作して、PDFのテキスト情報をエクセルに出力します。
このプログラムの使用手順は以下のとおりです。
手順1. 1行目に表の幅(数値)を入力
手順2. HTMLとして出力したい表データをエクセルへ入力
手順3. VBAプログラムを実行
以下で使い方の手順を紹介します。
手順1. 1行目に表の幅(数値)を入力
上記のように1行目に表の幅となる数値を入力します。
表の幅となる数値の記載について、以下の注意点があります。
2.全ての幅を足して100になるように調整する
3. 列数の上限はなし。必要に応じて右に列を増やす
上記を注意点としている理由は、表の幅は「%」を想定しているからです。
pxの幅ではないので、注意が必要です。また各列に記入した数値の合計が100になるようにします。
手順2. HTMLとして出力したい表データをエクセルへ入力
HTMLとして出力した表データを2行目以降に入力します。
表データの入力について、以下の注意点があります。
2.3行目以下に内容を入力
上記のとおり、2行目以降にHTMLとして出力したいデータを入力します。
1行目ではない点に注意します。
手順3. VBAプログラムを実行
VBAを実行するとエクセルと同じフォルダにテキストファイルを生成します。
このテキストファイルにはHTMLに変換されたテキスト情報が出力されています。
ボタンにVBAプログラムを登録
上記の画像では、VBAプログラムをボタンに登録しています。
ボタンにVBAプログラムを登録することで、ボタンを押下しプログラムを実行することができます。
ボタンをVBAプログラムを設定したい場合は、以下で動画も交えて設定方法を紹介しているので、そちらをご覧ください。
VBA入りのエクセルファイルをダウンロード
以下で紹介しているVBAプログラムをそのまま使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへ「VBAプログラムが含まれたエクセル」を送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
それでは、以下でプログラムについて詳細を説明します。
VBA作成前の事前準備
ExcelでVBAを使うためにはいくつかの準備が必要です。
具体的には以下です。
準備2. テキストファイルを扱うための事前準備
上記に関して、以下で説明します。
準備1. ExcelでVBAを使うための事前準備
エクセルVBAを使うためには、保存ファイルの拡張子変更、Excelの基本設定変更の2つをしておきます。
2つともで難しい作業はなく、それぞれ1分もあれば設定変更可能です。
上記に関しては、以下の記事で解説をしています。
もしVBAを使うための準備段階に不安がある人は上記をご覧ください。
この内容は以下の動画で紹介しています。
入門エクセルマクロの使い方|マクロ作成から実行までを徹底解説
文字や画像だけで分かりづらい人は上記の動画をご覧ください。
準備2. テキストファイルを扱うための事前準備
この事例ではテキスファイルを操作するために、FileSystemObjectを活用します。
FileSystemObjectを使用する場合、VBAの参照設定を変更しておく必要があります。参照設定とは、機能拡張させることです。
FileSystemObjectを使用するために以下の参照設定を変更します。
これでテキストファイルを操作できるようになります。
設定方法の詳細は以下のページで紹介しています。
VBAのプログラムソース解説
今回紹介するプログラムの概要は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
'プログラム0|変数設定の指定 Option Explicit 'プログラムA-1|プログラム開始 Sub MakeTableHTML() 'プログラムA-2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") 'プログラムA-3|1行目の一番右の列を取得 Dim mytable As Variant mytable = ws.Range("A1").CurrentRegion 'プログラムA-4|mytableの1行目の値に「%」を付ける Dim k As Long For k = LBound(mytable, 2) To UBound(mytable, 2) mytable(1, k) = mytable(1, k) & "%" Next 'プログラムA-5|文字列strを設定して、表の開始箇所に<table>タグを付ける Dim str As String str = "<table>" & vbCrLf 'プログラムA-6|wsの2行目から最終行まで処理 Dim i As Long For i = 2 To UBound(mytable) 'プログラムA-7|行の開始箇所に<tr>タグを付ける str = str & " <tr>" & vbCrLf 'プログラムA-8|HTMLのth, tdタグに変換(プログラムBにデータを渡す) If i = 2 Then str = str & GetEachRowContents(i, " <th", "</th>", mytable) ElseIf i > 2 Then str = str & GetEachRowContents(i, " <td", "</td>", mytable) End If 'プログラムA-9|行の終了箇所に</tr>タグを付ける str = str & " </tr>" & vbCrLf Next 'プログラムA-10|表の終了箇所に</table>タグを付ける str = str & "</table>" 'プログラムA-10|FileSystemObjectを設定 Dim fs As Scripting.FileSystemObject Set fs = New Scripting.FileSystemObject 'プログラムA-11|新しいテキストファイルのパスを設定 Dim path As String path = ThisWorkbook.path & "\" & "table.txt" 'プログラムA-12|新しく作成したテキストファイルを書き込みモードで開く Dim txt As TextStream Set txt = fs.OpenTextFile(Filename:=path, IOMode:=ForWriting, Create:=True, Format:=TristateUseDefault) 'プログラムA-13|テキストファイルにstrを書き込む txt.WriteLine str 'プログラムA-14|オブジェクト解放 Set txt = Nothing Set fs = Nothing 'プログラムA-15|プログラム終了 End Sub 'プログラムB-1|プログラム開始 Function GetEachRowContents(i, tagA, tagB, ByVal mytable As Variant) As String 'プログラムB-2|変数設定 Dim k As Long Dim width As String, st As String 'プログラムB-3|文字列stの初期化 st = "" 'プログラムB-4|Tableの各行をHTMLに変換してstに格納 For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLf Next 'プログラムB-5|戻り値としてstを設定 GetEachRowContents = st 'プログラムB-6|プログラム終了 End Function |
それでは、以下でプログラムを詳しく説明していきます。
プログラム0|変数宣言の指定
1 |
Option Explicit |
「Option Explicit」とは、変数宣言を強制するためのものです。
予期しないエラーを防止できるため「Option Explicit」を入力することを習慣化することを推奨しています。
詳しい説明は以下のページで紹介しています。
また変数については、以下のページで紹介しています。
プログラムA-1|プログラム開始
1 |
Sub MakeTableHTML() |
「Sub MakeTableHTML()」のプログラムを開始することを意味します。
VBAではプロシージャという単位でプログラムを呼び出します。
プロシージャの構文は下記となっています。
1 2 3 |
Sub プロシージャ名() '実行プログラム End Sub |
「Sub」で始まり「End Sub」で終わります。
プロシージャに関連するmoduleの話については以下で説明しています。
プログラムA-2|シート設定
1 2 |
Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") |
「Sheet1」をwsとして設定します。
なお「ThisWorkbook」を付けることで、VBAプログラムが含まれるエクセルファイルの「Sheet1」を細かく指定しています。
プログラムA-3|1行目の一番右の列を取得
1 2 |
Dim mytable As Variant mytable = ws.Range("A1").CurrentRegion |
セルA1からエクセルの表範囲を取得し、mytableとして二次元配列で取得します。
CurrentRegionで、セルA1を含む範囲として読み込まれる領域を取得できます。
この事例では画像で囲んだA1:D11がCurrentRegionとして取得されます。
この範囲は取り扱うデータによって変化します。
表範囲としてどこまで取得できているかどうかは以下で検証できます。
Debug.Printでの検証結果
1 2 3 4 5 6 7 |
Dim mytable As Variant mytable = ws.Range("A1").CurrentRegion Debug.Print "行数:", UBound(mytable) Debug.Print "列数:", UBound(mytable, 2) >>>行数:11 >>>列数:4 |
11行目、4列目(D列)の範囲をmytableとして取得できていることが分かります。
プログラムA-4|mytableの1行目の値に「%」を付ける
1 2 3 4 5 |
Dim k As Long For k = LBound(mytable, 2) To UBound(mytable, 2) mytable(1, k) = mytable(1, k) & "%" Debug.Print "k:" & k, mytable(1, k) Next |
mytableの配列1行目に「%」の文字列を結合します。これによりHTMLでTableの幅の大きさを%で変更します。
Debug.Printでの検証結果
1 2 3 4 5 6 7 8 9 10 |
Dim k As Long For k = LBound(mytable, 2) To UBound(mytable, 2) mytable(1, k) = mytable(1, k) & "%" Debug.Print "k:" & k, mytable(1, k) Next >>>k:1 10% >>>k:2 15% >>>k:3 20% >>>k:4 55% |
これで1行目の数値に%を結合して、mytable(1,k)の数値に%を付けた値として格納できます。
プログラムA-5|文字列strを設定して、表の開始箇所に
タグを付ける
12
Dim str As String str = "<table>" & vbCrLf
文字列型の変数strに
タグと改行を設定します。
このstrという変数にtable, tr, th, tdタグを付与し、HTMLを生成します。
プログラムA-6|wsの2行目から最終行まで処理
12
Dim i As Long For i = 2 To UBound(mytable)
2行目から最終行(UBound(mytable))まで1行ずつ処理を繰り返していきます。
プログラムA-3のとおり、配列の最終行はUBound(mytable)で取得できます。
この事例では、UBound(mytable)=11です。
なお配列に関しては、以下で事例を交えて説明しています。
プログラムA-7|行の開始箇所に
タグを付ける
1
str = str & " <tr>" & vbCrLf
各行を処理するたびに、その先頭に
タグを付与します。
tableタグ内の各行を
~
で囲むためです。
なおプログラムA-9で
で付与しています。
プログラムA-8|HTMLのth, tdタグに変換(プログラムBにデータを渡す)
12345
If i = 2 Then str = str & GetEachRowContents(i, " <th", "</th>", mytable) ElseIf i > 2 Then str = str & GetEachRowContents(i, " <td", "</td>", mytable) End If
エクセルの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|行の終了箇所に
タグを付ける
12
str = str & " </tr>" & vbCrLf Next
行のデータを終了箇所に
タグを付与します。
プログラムA-10|strを
で閉じる
1
str = str & "</table>"
最後に
で閉じることで、HTMLタグの生成は完了です。
以降のプログラムでテキストファイルにstr(HTMLタグ)を出力します。
プログラムA-11|FileSystemObjectの設定
12
Dim fs As FileSystemObject Set fs = New Scripting.FileSystemObject
FileSystemObjectは、ファイルやフォルダを操作するときに使うオブジェクトです。
本事例ではFileSystemObjectをfsという変数として扱います。
変数fsは定義するだけではなく、「Set fs = New Scripting.FileSystemObject」と記入して使えるようになります。
これを忘れてしまうことが多いので、注意が必要です。
FileSystemObjectに関する注意点
参照設定にて、Microsoft Scripting Runtimeを設定に入れておく必要があります。
設定を忘れると動作しませんので、事前に設定を変更しておく必要があります。
なお、FileSystemObject以外にもフォルダを操作する方法はあります。しかしFileSystemObjectを使えば、ファイルとフォルダを両方操作できるので、覚えることが少なくて済みます。
細かいことを覚えるのが面倒な人は、ファイルやフォルダを操作するときはFileSystemObjectを使うと覚えておくといいです。
FileSystemObjectについては以下で詳しく説明していますので、ご覧ください。
プログラムA-12|新しいテキストファイルのパスを設定
12
Dim path As String path = ThisWorkbook.path & "\" & "table.txt"
新しいテキストファイルのパスを設定します。
ここではエクセルと同じフォルダにtable.txtを保存します。
プログラムA-13|新しく作成したテキストファイルを書き込みモードで開く
12
Dim txt As TextStream Set txt = fs.OpenTextFile(Filename:=path, IOMode:=ForWriting, Create:=True, Format:=TristateUseDefault)
FileSystemObjectのOpenTextFileメソッドを使って、書き込みモードでテキストファイルを生成します。
この時点でtable.txtがエクセルと同じフォルダに作成されます。
ただしファイルに文字が書き込まれていないため、0KBとなっています。
プログラムA-13|テキストファイルにstrを書き込む
1
txt.WriteLine str
プログラム10までに生成したHTMLテキスト(str)をテキストファイルに書き込みます。
プログラムA-14|オブジェクト解放
12
Set txt = Nothing Set fs = Nothing
プログラム終了前にオブジェクトを解放します。
プログラムA-15|プログラム終了
1
End Sub
これでプログラムAは終了です。
プログラムB-1|プログラム開始
1
Function GetEachRowContents(i, tagA, tagB, ByVal mytable As Variant, ByVal widths As Variant) As String
引数として、以下の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
変数を設定します。
変数については、以下のページで説明しています。
プログラムB-3|文字列stの初期化
1
st = ""
文字列stを””で初期化します。
プログラムB-4|Tableの各行をHTMLに変換してstに格納
1234
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLf Next
配列の列データを全て処理させます。
この事例ではA列からD列までデータが入力されているため、「UBound(mytable,2)=4」となります。
つまり「k = 1 to 4」です。
さて、このプログラムでどのように値を変換するかというと、以下のようになります。
Debug.Printでの検証結果
i=2のとき
1234567891011
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLfNext Debug.Print st >>> <th width="10%">名前</th>>>> <th width="15%">必須 / 省略</th>>>> <th width="20%">データ型</th>>>> <th width="55%">説明</th>
i=2のときは、ヘッダー情報が出力されるので、thタグを付与しています。
i=3のとき
1234567891011
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLfNext Debug.Print st >>> <td width="10%">A</td>>>> <td width="15%">必須</td>>>> <td width="20%">Variant</td>>>> <td width="55%">ああああ</td>
i=3のときは、テーブル情報が出力されるので、tdタグを付与しています。
このように各行の列データにたいして、タグを付与していることが分かります。
プログラムB-5|戻り値としてstを設定
1
GetEachRowContents = st
戻り値としてstを返します。
stにはプログラムB-4で、エクセルの各行をHTMLとして出力したテキストが入力されています。
各行ごとのHTMLテキストをstで生成し、プログラムA-8にstを戻し、strの末尾に文字列として結合させていきます。
これにより表のHTMLを生成していきます。
プログラムB-6|プログラム終了
1
End Function
プログラムB-1と対になるプログラムです。プログラム終了させる記載です。
「End Function」を読み込んで呼び出されたプログラムに戻ります。
この事例ではプログラムA-8に戻ります。
プログラムの解説はここまでです。
類似の事例
ここではエクセルの表データをHTMLとしてテキストファイルへ出力するプログラムを紹介しました。
VBAでテキストを扱う事例について、類似のものを紹介しています。
Excel VBAについて詳しく理解したいなら
上記は、私が実際にVBAを活用して効率化してきた事例を紹介しています。
VBAを活用すると、仕事を効率化できる幅を広げることができます。
Excel VBAで出来ることは動画でも解説
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
成長の過程は以下で紹介しています。
学習の過程では、意識すべきポイントがあります。
特に独学の場合だと、勉強を優先してしまい、肝心な実践を疎かにしがちです。
私の経験では、実践から逆算した勉強が必要だと考えています。
目指すべきは会社でお金をもらいながら勉強することです。
要はVBAを仕事の一つとして上司に認めてもらうのです。
そうすればわざわざ高いお金を払って勉強をする必要がなくなります。
しかも作業を自動化して、会社やチームに貢献しつつ、自らのスキルアップできます。
そのために必要な考え方を以下で紹介しています。
とはいえ、プログラミング初心者でVBAについて知識ゼロの人もいるはずです。
いきなり会社でVBAで使うことさえ、とてつもなくハードルが高く見えてしまうものです。
その場合は、VBAの基本について学ぶ必要があります。
たとえば車の運転も慣れてしまえば、たいしたことではありません。
しかし教習所で運転の基本を学び、免許を取得することで、公道で運転できるようになります。
VBAも同じです。VBAに免許はありませんが、まずは基本を学ばないことには会社で使えるレベルにはなりません。
実際に私もプログラミング初心者のときは、動画を見たり書籍を読んだりして勉強しました。
今はオンラインの教材で無料で学習できるものも多いです。
上記のリンクでは、私の経験から勉強にオススメの教材を紹介しています。
興味がある人はご覧ください。
1 2 |
Dim str As String str = "<table>" & vbCrLf |
文字列型の変数strに
1 2 |
Dim i As Long For i = 2 To UBound(mytable) |
2行目から最終行(UBound(mytable))まで1行ずつ処理を繰り返していきます。
プログラムA-3のとおり、配列の最終行はUBound(mytable)で取得できます。
この事例では、UBound(mytable)=11です。
なお配列に関しては、以下で事例を交えて説明しています。
プログラムA-7|行の開始箇所に
タグを付ける
1
str = str & " <tr>" & vbCrLf
各行を処理するたびに、その先頭に
タグを付与します。
tableタグ内の各行を
~
で囲むためです。
なおプログラムA-9で
で付与しています。
プログラムA-8|HTMLのth, tdタグに変換(プログラムBにデータを渡す)
12345
If i = 2 Then str = str & GetEachRowContents(i, " <th", "</th>", mytable) ElseIf i > 2 Then str = str & GetEachRowContents(i, " <td", "</td>", mytable) End If
エクセルの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|行の終了箇所に
タグを付ける
12
str = str & " </tr>" & vbCrLf Next
行のデータを終了箇所に
タグを付与します。
プログラムA-10|strを
1 |
str = str & " <tr>" & vbCrLf |
各行を処理するたびに、その先頭に
tableタグ内の各行を
1 2 3 4 5 |
If i = 2 Then str = str & GetEachRowContents(i, " <th", "</th>", mytable) ElseIf i > 2 Then str = str & GetEachRowContents(i, " <td", "</td>", mytable) End If |
“, mytable)
i>2:GetEachRowContents(i, ”
“, mytable)
FunctionプロシージャであるGetEachRowContents(プログラムB)を動かしています。
ここでは以下の4つの引数を設定しています。
2. ”
“もしくは”
“:thもしくはtdタグの終了箇所
4. mytable:プログラムA-3で設定した配列
タグを付ける
1 2 |
str = str & " </tr>" & vbCrLf Next |
で閉じる
1 |
str = str & "</table>" |
最後に
1 2 |
Dim fs As FileSystemObject Set fs = New Scripting.FileSystemObject |
1 2 |
Dim path As String path = ThisWorkbook.path & "\" & "table.txt" |
1 2 |
Dim txt As TextStream Set txt = fs.OpenTextFile(Filename:=path, IOMode:=ForWriting, Create:=True, Format:=TristateUseDefault) |
1 |
txt.WriteLine str |
1 2 |
Set txt = Nothing Set fs = Nothing |
1 |
End Sub |
1 |
Function GetEachRowContents(i, tagA, tagB, ByVal mytable As Variant, ByVal widths As Variant) As String |
2. tagA:
3. tagB:
もしくは
を受け取る
4. ByVal mytable As Variant:プログラムA-3のmytableを受け取る
Dim width As String, st As String
1 |
st = "" |
1 2 3 4 |
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLf Next |
1 2 3 4 5 6 7 8 9 10 11 |
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLf Next Debug.Print st >>> <th width="10%">名前</th> >>> <th width="15%">必須 / 省略</th> >>> <th width="20%">データ型</th> >>> <th width="55%">説明</th> |
1 2 3 4 5 6 7 8 9 10 11 |
For k = 1 To UBound(mytable, 2) width = tagA & " width=""" & mytable(1, k) & """>" st = st & width & mytable(i, k) & tagB & vbCrLf Next Debug.Print st >>> <td width="10%">A</td> >>> <td width="15%">必須</td> >>> <td width="20%">Variant</td> >>> <td width="55%">ああああ</td> |
1 |
GetEachRowContents = st |
1 |
End Function |
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!