<Excelのセル範囲をHTMLの表(.html)にしてみる>
どうも、三流プログラマーのKen3です。 今回は、 Excelの表をHTMLの表にしてみたいと思います。 標準であるけど、練習を兼ねて。 http://www.ken3.org/p/lzh/office-015.lzh に今回のサンプル保存されてます。 あわせてみてください。/* * 1.仕様書、書いてますか? */
まずは、要求をまとめるんだっけ。 セルの範囲を選択させる ファイル ブックのパス\test.htmlでHtmlのテーブルを作成する IEを起動して、test.htmlを表示する。 なんかラフ過ぎない? 仕様書 書く側 と 受取り側(要求仕様書、基本設計書、詳細設計書) http://www.ken3.org/vba/doc.html では、もっと詳細に書いてた気がするけど。/* * 2.初期捜査、初動捜査 */
セルの範囲を選択するのは、 Dim objHANI As Range '選択されたセルの集合 とオブジェクト変数を宣言してから、 Set objHANI = Application.InputBox(prompt:="セルを選択", Type:=8) .InputBoxを使用して、セルを選択させる ポイントはType:=8で文字列ではなくオブジェクトを返すことです。 Application.InputBox で Rangeを受け取る解説は、 No.11 InputBox関数で簡単な値を受け取る http://www.ken3.org/backno/backno_vba03.html#11 を参照してください。 InputBox関数とApplication.InputBoxメソッドの違いが書いてあります。 選択されたか?をチェックしたいので、 If IsEmpty(objHANI) Then 'キャンセルが押されたかチェックする MsgBox "キャンセルが押されました" End If と IsEmpty関数を使用してチェックしてます。 選択された範囲に対して、 MsgBox objHANI.Rows.Count '行数 MsgBox objHANI.Columns.Count '列数 を取り出すことができます。 No.51 Excel Range オブジェクトを使う http://www.ken3.org/backno/backno_vba11.html#51 で、 objHANI.Rows.Countの行カウントと、 ~~~~~~~~~~~ objHANI.Columns.Count列カウントです。 ~~~~~~~~~~~~~~ Rangeについて、軽く書いてます。 範囲が選択できたら、ファイルの書き込みかぁ、 パターン化になっているけど、 Freeファイルであいているファイル番号を取り出し、 Open Write Close Print #FNO, "XXXXXXX"; とセミコロンを付けると改行されないのもポイントです。 テキストファイル関係は、 ^^^^^^^^^^^^^^^^^^^^^^^^ No.27 テキストファイル処理 ファイルへの書き込み http://www.ken3.org/backno/backno_vba06.html#27 Open Close Print # No.29 テキストファイル処理 ファイルからの読み込み http://www.ken3.org/backno/backno_vba06.html#29 Line Input # Eof関数 No.31 Write #で ””を付けた書き込み http://www.ken3.org/backno/backno_vba07.html#31 Write # No.33 FreeFile関数で空いてるファイル番号を返す方法 http://www.ken3.org/backno/backno_vba07.html#33 FreeFile で、簡単な解説を書いてます。 IEの起動は、 ^^^^^^^^^^^^^^ Dim objIE As Object 'IEオブジェクト参照用 と、オブジェクト変数を定義して、 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") CreateObjectを使用して、IEのオブジェクトを作成。 objIE.Visible = True '見えるようにする(お約束) objIE.Navigate strFNAME '文字列で指定したURLに飛ぶ と、メソッド(動作)を使用して、URLを開きます。 No.50 IE起動 CreateObject("InternetExplorer.application") http://www.ken3.org/backno/backno_vba11.html#50 で、 IEのオブジェクト、起動方法を解説してます。/* * 3.固定処理で作成するか */
Sub test15_1()
'Application.InputBoxでセルを選択させる
Dim objHANI As Range '選択されたセルの集合
Set objHANI = Application.InputBox(prompt:="セルを選択", Type:=8)
If IsEmpty(objHANI) Then 'キャンセルが押されたかチェックする
MsgBox "キャンセルが押されました"
Exit Sub
End If
'ファイルをオープンする
Dim FNO As Integer 'ファイル番号
Dim strFNAME As String 'ファイル名保存用
FNO = FreeFile '空いてるファイル番号を取出す
strFNAME = ThisWorkbook.Path & "\test.html" 'ファイル名を作る
Open strFNAME For Output As #FNO 'テキストファイルを新規作成
'HTMLのヘッダーを書く
Print #FNO, "<HTML><HEAD><TITLE>"
Print #FNO, "テーブル作成"
Print #FNO, "</TITLE></HEAD>"
Print #FNO, "<BODY>"
Print #FNO, "<TABLE border=1>" 'テーブルの開始
'行、列でループを作る
Dim y As Integer
Dim x As Integer
For y = 1 To objHANI.Rows.Count '行のループ
Print #FNO, "<TR>"; '行の開始タグ
For x = 1 To objHANI.Columns.Count '列のループ
'セルの値を<TD>で囲って出力
Print #FNO, "<TD>" & objHANI.Cells(y, x).Value & "</TD>";
Next x
Print #FNO, "</TR>" '行の終了タグ
Next y
'HTMLのタグを閉める
Print #FNO, "</TABLE>"
Print #FNO, "</BODY></HTML>"
'ファイルをクローズする
Close #FNO
'おまけでIEを起動して、表示
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
objIE.Navigate strFNAME '文字列で指定したURLに飛ぶ
'終わりの挨拶
MsgBox strFNAME & "を作成しました"
End Sub |
Sub Main()
'セル範囲の選択
'ファイルを開き、データの書き込み
'IEの起動、テスト表示
End Sub |
Sub Main()
'Application.InputBoxでセルを選択させる
Dim objTARGET As Range '選択されたセルの集合
Set objTARGET = Application.InputBox(prompt:="セルを選択", Type:=8)
If IsEmpty(objTARGET) Then 'キャンセルが押されたかチェックする
MsgBox "キャンセルが押されました"
Exit Sub
End If
'ファイル名を作成 ファイル名は自分のパス+\test.html
Dim strFNAME As String 'ファイル名保存用
strFNAME = ThisWorkbook.Path & "\test.html" 'ファイル名を作る
'テーブルデータを作成する
Call MAKE_HTML_TABLE(strFNAME, objTARGET)
'できたファイルをIEで表示して確認する
Call IE_OPEN_URL(strFNAME) 'ファイル名を渡す
'終わりの挨拶
MsgBox strFNAME & "を作成しました"
End Sub |
Sub MAKE_HTML_TABLE(strFNAME As String, objHANI As Range)
'ファイルをオープンする
Dim FNO As Integer 'ファイル番号
FNO = FreeFile '空いてるファイル番号を取出す
Open strFNAME For Output As #FNO 'テキストファイルを新規作成
'HTMLのヘッダーを書く
Print #FNO, "<HTML><HEAD><TITLE>"
Print #FNO, "テーブル作成してみました"
Print #FNO, "</TITLE></HEAD>"
Print #FNO, "<BODY>"
Print #FNO, "<TABLE border=1>" 'テーブルの開始
'行、列でループを作る
Dim y As Integer
Dim x As Integer
For y = 1 To objHANI.Rows.Count '行のループ
Print #FNO, "<TR>"; '行の開始タグ
For x = 1 To objHANI.Columns.Count '列のループ
'セルの値を<TD>で囲って出力
Print #FNO, "<TD>" & objHANI.Cells(y, x).Value & "</TD>";
Next x
Print #FNO, "</TR>" '行の終了タグ
Next y
'HTMLのタグを閉める
Print #FNO, "</TABLE>"
Print #FNO, "</BODY></HTML>"
'ファイルをクローズする
Close #FNO
End Sub |
Sub IE_OPEN_URL(strURL As String)
'IEを起動して、表示
Dim objIE As Object 'IEオブジェクト参照用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
objIE.Navigate strURL '文字列で指定したURLに飛ぶ
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]