« HTMLのTableをVBAで作る 2 | トップページ | HTMLのTableをVBAで作る 4 »

2010年1月31日 (日)

HTMLのTableをVBAで作る 3

記事「HTMLのTableをVBAで作る」では
セルの「塗りつぶし」を
記事「HTMLのTableをVBAで作る 2」では
セルの「塗りつぶし」と「大きさ」をTableにしました。

次は、セル内の文字も付け加えます。

<TD>と</TD>の間に
Cells(i, j)を付け足すだけです。

せっかくなので
ASCII文字セットを1から255まで書き出して
それをTableにします。

見やすいように
見出しの行を少し濃い背景色にして
3行目、5行目、7行目のような
奇数行を薄い背景色にします。

ASCII文字セットは
Chr関数を使って書き出します。

For文を使って
Chr関数に1から255までの数字を入れて行きます。
途中
最初に1回だけ見出しを作るための
最初を判別するIf thenステートメントがあり

ElseIfで
奇数行に薄い背景色をつけるために
3以上の奇数を判別します。
具体的には

(i +2)行目が奇数行である
(i + 2) が奇数
(i + 2) を 2 で割った余りが1

で判別します。

コードはこちらです。

ASCII文字コードのHTMLのTable生成するコード:

Sub macro100131a()
    Dim i, j As Integer
    Sheets.Add
    For i = 0 To 255
        If i = 0 Then
            '見出しを作る
            Range("A1") = "番号"
            Range("B1") = "文字"
            Range("A1:B1").Interior.ColorIndex = 42
        ElseIf (i + 2) Mod 2 = 1 Then
            '奇数行
            'toA1は過去記事参照してください
            Range(toA1("R" & i + 2 & "C1:R" & i + 2 & "C2")).Interior.ColorIndex = 34
        End If
        Cells(i + 2, 1) = i
        Cells(i + 2, 2) = Chr(i)
    Next i
   
'---ここからTable生成---
    Dim MyHTML As String
    '生成したHTMLを入れる
   
    Dim MyHexColor As String
    '長整数型を16進数に変換した文字列を入れる
    Dim TWidth, THeight As Integer
    'Tableの幅と高さを入れる
    Dim AddTWidth As String
   
    MyHTML = "<TABLE><TBODY>"
    For i = 1 To 257
        'i行の始まり
        '高さ設定
        THeight = Int(Cells(i, 1).RowHeight * 100 / 75)
        MyHTML = MyHTML & "<TR height=" & THeight & ">"
        For j = 1 To 2
            'i行j列について
            '幅設定、1行目のみ
            If i = 1 Then
                TWidth = Int(Cells(i, j).ColumnWidth * 100 / 11.8)
                AddTWidth = " width=" & TWidth
            End If
            MyHexColor = LngtoHexColor(Cells(i, j).Interior.Color)
            MyHTML = MyHTML & "<TD bgcolor=" & _
                Chr(34) & MyHexColor & Chr(34) & AddTWidth & ">" & _
                Cells(i, j) & "</TD>"
            AddTWidth = "" 'AddTWidthをなしにする
        Next j
        MyHTML = MyHTML & "</TR>"
    Next i
    MyHTML = MyHTML & "</TBODY></TABLE>"
   
    '生成したHTMLを適当なセルに書き出す
    Cells(258, 1) = MyHTML
End Sub

実行後のExcelのシートの状態
画像は14行目までしかないですが
実際は257行まであります。
Pic20100131a

下が生成されたTableのHTMLソースです。

生成されたTableのHTMLソース:

<TABLE><TBODY><TR height=18><TD bgcolor="#33CCCC" width=71>番号</TD><TD bgcolor="#33CCCC" width=71>文字</TD></TR><TR height=18><TD bgcolor="#FFFFFF">0</TD><TD bgcolor="#FFFFFF"></TD></TR><TR height=18><TD bgcolor="#CCFFFF">1</TD><TD bgcolor="#CCFFFF"></TD></TR><TR height=18><TD bgcolor="#FFFFFF">2</TD><TD bgcolor="#FFFFFF"></TD></TR><TR height=18><TD bgcolor="#CCFFFF">3</TD><TD bgcolor="#CCFFFF"></TD></TR><TR height=18><TD bgcolor="#FFFFFF">4</TD><TD bgcolor="#FFFFFF"></TD></TR><TR height=18><TD bgcolor="#CCFFFF">5</TD>

中略

<TD bgcolor="#CCFFFF"></TD></TR><TR height=18><TD bgcolor="#FFFFFF">254</TD><TD bgcolor="#FFFFFF"></TD></TR><TR height=18><TD bgcolor="#CCFFFF">255</TD><TD bgcolor="#CCFFFF"></TD></TR></TBODY></TABLE>

これをHTMLに埋め込んだものが↓です。

番号 文字
0
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 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 
128 €
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 ソ
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

ながっ

しかも、27行目までで
Excelのセルから「メモ帳」にコピペした際に
文字化け?が発生してます。

(と書いたものの
Web上のブログを見たら
文字化け?がなくなってました。
なくなった原因は不明ですが
ローカルな環境では
文字化け?発生してました。
エンコードの関係かな?)

Tableにする題材の選択を
失敗しました。

とはいえ
これだけ手で打ち込んだら
大変でしょうね~

なお、正確なASCII文字コードの表は
VBAヘルプにあります。

|

« HTMLのTableをVBAで作る 2 | トップページ | HTMLのTableをVBAで作る 4 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: HTMLのTableをVBAで作る 3:

« HTMLのTableをVBAで作る 2 | トップページ | HTMLのTableをVBAで作る 4 »