人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBSの質問です
a.html
**************
<table>
<tr><td>1</td><td>hoge</td></tr>
<tr><td>2</td><td>hoge</td></tr>
<tr><td>3</td><td>hoge</td></tr>
<tr><td>4</td><td>hoge</td></tr>
<tr><td>5</td><td>hoge</td></tr>
</table>
**************
b.html
**************
<table>
<tr><td>1</td><td>hoge</td></tr>
<tr><td>2</td><td>hoge</td></tr>
<tr><td>3</td><td>hoge</td></tr>
<tr><td>4</td><td>hoge</td></tr>
<tr><td>5</td><td>hoge</td></tr>
</table>
**************
があるんですけど
それを結合して
<table>
<tr><td>1</td><td>hoge</td><td>1</td><td>hoge</td></tr>
<tr><td>2</td><td>hoge</td><td>2</td><td>hoge</td></tr>
<tr><td>3</td><td>hoge</td><td>3</td><td>hoge</td></tr>
<tr><td>4</td><td>hoge</td><td>4</td><td>hoge</td></tr>
<tr><td>5</td><td>hoge</td><td>5</td><td>hoge</td></tr>
</table>
にしてくれるスクリプトを教えてください


●質問者: takanii
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●150ポイント ベストアンサー

a.html + b.htmlで横に連結して出力ということですね。

それぞれ同じ行数という条件で作成しました。

Dim objFile  ' 対象ファイル
Dim objFile1  ' 対象ファイル
Dim objFile2 ' 出力ファイル
Dim objFSO ' ファイルシステムオブジェクト
Dim k

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("a.html")
Set objFile1 = objFSO.OpenTextFile("b.html")
Set objFile2 = objFSO.CreateTextFile("c.html")
k=0
Do Until objFile.AtEndOfLine = True
strText = objFile.ReadLine
strText1 = objFile1.ReadLine
if instr(strText,"<tr>") > 0 then
strText=replace(strText,"</tr>","")
strText1=replace(strText1,"<tr>","")
strText= strText & strText1
end if
objFile2.WriteLine (strText)
Loop

objFile.Close
objFile1.Close
objFile2.Close




2 ● cx20
●150ポイント

VBScript にて ADO というライブラリを使用したサンプルです。
HTML のテーブルを SQL のテーブルとして扱うことにより、INNER JOIN にて結合することが可能です。
前提を少し崩すことになりますが、a.html, b.html の2テーブルが ab.html 含まれた状態での結合操作としてます。

' File : JoinTable.vbs
' Usage : CScript JoinTable.vbs //Nologo > c.html
Option Explicit

Dim cn
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\ab.html;Extended Properties=""HTML Import;HDR=No;"""

Dim rs
' 1ファイル内に複数のテーブルが存在する場合、Table, Table1, Table2... のように参照します。
' 「[Table] A」は Table を A という名前で参照する為の記述です。
' 「[Table1] B」は Table1 を B という名前で参照する為の記述です。
' F1, F2.. は自動的に付与されるカラム名です。
Set rs = cn.Execute("SELECT * FROM [Table] A INNER JOIN [Table1] B ON A.F1 = B.F1")
' 参考までに WHERE 句で結合した場合のサンプルです。
'Set rs = cn.Execute("SELECT * FROM [Table] A, [Table1] B WHERE A.F1 = B.F1")

Dim strRow
Dim strData
Dim fld

WScript.Echo "<table>"
While Not rs.BOF And Not rs.EOF
 strRow = "<tr>"
 For Each fld In rs.Fields
 strData = "<td>" & fld.Value & "</td>"
 strRow = strRow & strData
 Next
 strRow = strRow & "</tr>"
 WScript.Echo strRow
 rs.MoveNext
Wend
WScript.Echo "</table>"

前提操作(2テーブルを1ファイルとして用意する)

C:\> COPY a.html + b.html ab.html

使用方法

C:\> CScript JoinTable.vbs //Nologo > c.html

参考情報。

■ SQL講座 INNER JOINを使った表の結合
http://www.pursue.ne.jp/jouhousyo/SQLDoc/select21.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ