[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.081 セルの右寄せ、中央寄せをHTMLの表にしてみる

セルの右寄せ、中央寄せをHTMLの表にしてみる

メルマガ発行内容

<セルの右寄せ、中央寄せをHTMLの表にしてみる>

どうも、三流プログラマーのKen3です。 今回は、前回の続きで、 Excelの表をHTMLの表にしてみたいと思います。 標準でHTML形式で保存があるけど、練習を兼ねて。 http://www.ken3.org/p/lzh/office-016.lzh に今回のサンプル保存されてます。 あわせてみてください。

/* * 1.追加機能や足りない機能、使っていっての要望をまとめる */

前回、表の基本形を書き込めました。 これを、Excel--HTMLコンバーターと世に出したら、 さぁたいへん(笑) クレームの嵐だった(作り話です) ・セルが全て左によっていて、右寄せ中央寄せができてない ・フォントの色、背景色が変わらない ・セル結合している場所が正しく表にならない   ・   ・ とある中から、 まずは、簡単そうな、 セルの右寄せ中央寄せ、を調べてみたいと思います。

/* * 2.初期捜査、初動捜査 */

セルが右に寄っているか?中央か?どうやって調べましょう。 いつものマクロ記録で、記録してみます。 プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う http://www.ken3.org/vba/excel-help.html も、ヒマな時、のぞいてください。 話を戻してと、 右、中央を記録しただけなのに、 こんなに長いなんて。。。
Sub Macro1()
    Range("D2").Select
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub
さてと、めげないで、探っていくと、 それっぽいのが .HorizontalAlignment = xlRight .HorizontalAlignment = xlCenter これって、見るからに怪しい感じがします。 カーソルを.HorizontalAlignmentに合わせ、F1キーを押します。 使用例 次の使用例は、シート 1 のセル範囲 A1:A5 の内容の横位置を左詰めに設定します。 Worksheets("Sheet1").Range("A1:A5").HorizontalAlignment = xlLeft おっ、使えそうですね。

/* * 3.関数に組み込む */

前回作成したのが、 'ファイル名とセルの範囲RANGEを受け取り、 'ファイルを開きHTMLのテーブルを作成する
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
HTMLファイルを作成しているサブルーチンで、 'セルの値を<TD>で囲って出力 Print #FNO, "<TD>" & objHANI.Cells(y, x).Value & "</TD>"; と、単純に<TD>で囲っている部分を、 <TD ALIGN='RIGHT'><TD ALIGN='LEFT'><TD ALIGN='CENTER'> セルの位置によって変化させます。 'ALIGNを調べて書き込む Select Case objHANI.Cells(y, x).HorizontalAlignment Case xlRight: Print #FNO, "<TD ALIGN='RIGHT'>" Case xlLeft: Print #FNO, "<TD ALIGN='LEFT'>" Case xlCenter: Print #FNO, "<TD ALIGN='CENTER'>" Case Else 'その他設定無しのとき Print #FNO, "<TD>" End Select 力技で書くと、こんな感じです。

/* * 4.終わりの挨拶 */

さて、テストしますか。 まぁ、それなりに動いてます。 が、 まだまだ、ですね。 プロパティの探り方、なんとなくわかったと思います。 次は、セルの背景色、フォントのカラーを探らないと。 http://www.ken3.org/p/lzh/office-016.lzh に今回のサンプル保存されてます。 あわせてみてください。 次回は、もう少しマシなの作りたいですね。 ※できたら、世に出せるくらいのツールになるといいけど、、、 プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってますが、 なかなかうまくは行いかないね。。 拾い読みして、 1つでも何かの参考となれば幸いです。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.081を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・