<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のサンプルコード]/
広告-[通販人気商品の足跡]