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>
にしてくれるスクリプトを教えてください

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/03/03 23:16:25
  • 終了:2013/03/05 19:27:43

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982013/03/03 23:52:38

ポイント150pt

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



その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982013/03/03 23:52:38ここでベストアンサー

ポイント150pt

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



id:cx20 No.2

cx20回答回数607ベストアンサー獲得回数1082013/03/04 01:12:23

ポイント150pt

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません