プロが教えるわが家の防犯対策術!

HTMLのソースが入ったテキストデータをエクセルに書き出したいのですが
文字コードは何を指定すればいいのでしょうか?

Sub Sample()
Dim i As Long
Dim j As Long
Dim strList As String
Dim strSplit() As String
Dim adoSt As New ADODB.Stream
i = 1
With adoSt
.Type = adTypeText
' .Charset = "UTF-8"
' .Charset = "euc-jp"
' .Charset = "Shift_JIS"
.Open
.LoadFromFile ("C:\test.html")

Workbooks.Add
Do While Not (.EOS)
strList = .ReadText(adReadLine)
strSplit = Split(strList, ",")
For j = LBound(strSplit) To UBound(strSplit)
Cells(i, j + 1) = strSplit(j)
Next
i = i + 1
Loop
.Close
End With
End Sub

どの文字コードを指定してもエラーになります。

Cells(i, j + 1) = strSplit(j)
の部分で、エラーになります。

実際のソースの文字コードはeuc-jpになっています。

なぜソースと同じ文字コードを指定してるのにエラーになるのでしょうか?

.Charsetで
文字コードを何も指定しなければ、問題なくソースを書き出せます。

A 回答 (2件)

#1の回答者です。

返事は付きませんでしたが、こんな具合でどうでしょうか?

'//
Sub Sample1()
  Dim SRC As ADODB.Stream
  Dim DST As ADODB.Stream
  Dim FileName As String
  Dim strList As String
  Dim strSplit As Variant
  Dim i As Long
  Dim j As Long
  
  FileName = "C:\test.html"
  Set SRC = New ADODB.Stream
  With SRC
    .Open
    .Charset = "EUC-JP"
    .Type = adTypeText
    .LoadFromFile FileName
    .Position = 0
  End With
  Set DST = New ADODB.Stream
  With DST
    .Open
    .Charset = "Shift_JIS"
    .Type = adTypeText
  End With
  SRC.CopyTo DST
  DST.Position = 0
  Workbooks.Add
  With DST
  i = 1
    Do While Not (.EOS)
      strList = .ReadText(adReadLine)
      strSplit = Split(strList, ",")
      For j = LBound(strSplit) To UBound(strSplit)
        ActiveSheet.Cells(i, j + 1) = strSplit(j)
      Next
      i = i + 1
    Loop
  End With
  SRC.Close
  DST.Close
End Sub


>Cells(i, j + 1) = strSplit(j)
>の部分で、エラーになります。

strSplitには、配列が格納されていなのでは?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/05/18 20:53

今は、試したわけではないけれども、パッとみた感じでは、それで出来るのかなっていう感触があります。



入(ソース)と出(デスティネーション)を設けなければしょうがないような気がしますね。

言い換えると、
>Dim adoSt As New ADODB.Stream
>  With adoSt

これでは、「入」だけしかありません。

実際に、コードを書いてみないと、こちらもはっきりしませんが、euc-jp を、shift- jisなどに直すのではないでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/05/18 20:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!