VBAでEUC-JPのHTMLソースを取得しShift-JISにする方法
- VBAを使用して、EUC-JPのHTMLソースを取得しShift-JISに変換する方法について説明します。
- Msxmlを使用して任意のHTMLソースを取得し、そのソースをEUC-JPからShift-JISにエンコードします。
- ADODB.Streamを使用して、EUC-JPのHTMLソースをShift-JISに変換する手順を示します。
- ベストアンサー
VBAでEUC-JPのHTMLソースを取得しShift-JISにしたい
こんにちは。 現在 1.Msxmlで任意のHTMLソースを取得 (ただこれがEUCで、エクセル上だと文字化けする) 2.それをShift-JISにエンコードして、のちのちExcel表にする) というコードをExcelVBAで描いています。 ソースの取得はできるのですが、 EUCのサイトのため漢字が文字化けします。 エンコードしようと思ってもできません。 ADODB.Streamというものを使おうとしています。 宜しくお願い致します。 Dim xmlHttp Set xmlHttp = CreateObject("Msxml2.XMLHTTP") xmlHttp.Open "GET", url, False xmlHttp.send Set in_strm = CreateObject("ADODB.Stream") Set out_strm = CreateObject("ADODB.Stream") in_strm.Charset = "EUC-JP" in_strm.Type = adTypeText out_strm.Charset = "Shift_JIS" out_strm.Type = adTypeText in_strm.Open out_strm.Open m_byte1 = xmlHttp.responseText in_strm.WriteText m_byte1 in_strm.Position = 0 in_strm.CopyTo out_strm out_strm.Position = 0 m_string2 = out_strm.ReadText(adReadAll) MsgBox m_string2 'ここで正しいものが表示される予定・・・ in_strm.Close out_strm.Close Set in_strm = Nothing Set out_strm = Nothing
- defactosta
- お礼率66% (6/9)
- オフィス系ソフト
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字化けしなければ良いですか? Sub test1() Dim xmlHttp Dim URL As String Dim in_strm Dim m_string2 URL = "http://www.mapfan.com/" Set xmlHttp = CreateObject("Msxml2.XMLHTTP") xmlHttp.Open "GET", URL, False xmlHttp.send Set in_strm = CreateObject("ADODB.Stream") in_strm.Open in_strm.Position = 0 in_strm.Type = 1 'adTypeBinary in_strm.Write xmlHttp.responseBody in_strm.Position = 0 in_strm.Type = 2 'adTypeText in_strm.Charset = "EUC-JP" 'in_strm.Charset = "_autodetect" '自動判別でも可 m_string2 = in_strm.ReadText MsgBox m_string2 in_strm.Close Set in_strm = Nothing End Sub
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
文字コードの変換は、下記スレッドで KenKen_SPさんの回答が参考になるかも知れません。 VBAでUTF-8文字を読込、Excelに出力する方法 http://oshiete1.goo.ne.jp/qa1963113.html
お礼
ありがとうございます。 参考になりました。
- kata_san
- ベストアンサー率33% (423/1261)
文字コードの変換を行うだけであれば、 http://www.kmonos.net/lib/ にある「GreenPad」というテキストエディタが、きちんと変換できますが?
お礼
ありがとうございます。 でも、マクロ中で文字コード変換を行いたいんです。
関連するQ&A
- myObjにタグを格納してループはできない?
MSXML2.XMLHTTPの時は、 myObjにタグを格納してループはできないのでしょうか? Sub test() Dim objIE As Object Dim myObj As Object Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://○○.html", False objIE.send For Each myObj In objIE.Document.all.tags("p") Next Set objIE = Nothing End Sub 上記だと実行時エラー438になります。 Set objIE =CreateObject("InternetExplorer.Application") でループしないとダメでしょうか? Set objIE =CreateObject("InternetExplorer.Application") は時間がかかるので、できれば Set objIE =CreateObject("MSXML2.XMLHTTP") でやりたかったのですが、タグを格納できないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBSでNull文字を半角スペースへ置換
バイナリデータを文字列として取得したいのですがお知恵をお貸し下さい。 Stirlingというツールで開くと ADDRESS 00000000、00000010の部分に ABC 123......... と .........A11111. の行があり Scripting.FileSystemObjectで1行目は ABC 123 と取得できるのですが2行目が[]となります 検索してNull文字で読み込めないのだろうとまでは見当が付き ADODB.streamでNull文字を半角スペースへ置換しようとして躓いています Dim strm Set strm = CreateObject("ADODB.stream") strm.Open strm.Type = 1 strm.LoadFromFile(FilePath) Dim ary1() Redim ary1(31) For i = 0 To 31 If ??? <> 0x00 Then ’←この部分 ary1(i) = strm(i) else ary1(i) = 20 ’半角スペース end if データの比較で躓いています どなたかご教授願えませんでしょうか よろしくお願いいたします
- ベストアンサー
- その他(プログラミング・開発)
- VBA システムエラー
始めまして VBA初心者です Excel2003のVBAで「toto」のサイトからデータを取得する プログラムを作成しようと思っています。 しかし「xmlHttp.responseText」の部分で 「実行時エラー '-1072896658(c00ce56e)':」 「システムエラー:-1072896658」 のエラーが出てしまいます。 解決方法をご教授いただけないでしょうか? '**************ソース********************************** Dim xmlHttp As MSXML2.xmlHttp Dim html As String Set xmlHttp = CreateObject("MSXML2.XMLHTTP") Call xmlHttp.Open("GET", "http://www.toto-dream.com/dc/SK0160.do", False) Call xmlHttp.send(vbNull) html = xmlHttp.responseText Set xmlHttp = Nothing '**************ソース**********************************
- 締切済み
- オフィス系ソフト
- VBScript で ADO Streamオブジェクトの Writeを使いたい
VBScriptでバイナリファイルを書き込みたいのですが、以下のコードで Writeしようとするとコンパイルエラーとなります。 なぜですか? Option Explicit Dim stream Dim i Dim line Set stream = CreateObject("ADODB.Stream") stream.Open stream.Type = 1 line = Array(61,0,13,0,10,0) stream.Write line stream.SaveToFile "bbb.txt", 2 stream.Close Set stream = Nothing
- 締切済み
- Visual Basic
- VBAでUTF-8文字を読込、Excelに出力する方法
タイトルの通りです。 簡単なプログラムを作ってみました。 このような事は出来ないのでしょうか。 教えてください。 宜しくお願いします。 ☆サンプルプログラム☆ ↓ Sub test() Dim Stm As Object Dim sText As String Const adCRLF = -1 Const adReadAll = -1 Const adTypeText = 1 sText = "あああ" Set Stm = CreateObject("ADODB.Stream") Stm.Open Stm.Charset = "UTF-8" Stm.WriteText sText ActiveSheet.Range("A1").Value = Stm.ReadText() Stm.Close Set Stm = Nothing End Sub
- 締切済み
- Visual Basic
- VB2005 で encoding="Shift_JIS"や"EUC-JP"のXMLファイルを保存する方法
VB2005, XML の初心者です。 VB2005で encoding="Shift_JIS" や "EUC-JP" のXMLデータをファイルに保存するにはどうすれば良いのでしょうか。 encoding="UTF-8"であれば、下記で保存できますが、="Shift_JIS" や "EUC-JP" になると保存でエラーになってしまいます。 下記ソースでは、strXMLには正しくXMLが入っていますが、saveするとエラーになり、ファイルの中身を確認すると、日本語の箇所で切れていました。 Public Client As TcpClient Dim stream As NetworkStream stream = Client.GetStream() Dim Data(10000) As Byte Dim len As Int16 = stream.Read(Data, 0, Data.Length) strXML = System.Text.Encoding.UTF8.GetString(Data, 0, len) MsxmlDoc = New MSXML2.DOMDocument Msxmldoc.Loadxml(strXML) MsxmlDoc.save ( "C:\XML.xml") 文字コードについても初心者ですので、ヒントになるようなことでも教えていただければ幸いです。 よろしくお願い致します。
- ベストアンサー
- XML
- VBScriptでEUC文字列をSJIS文字列に
VBScript+WSHを使って、変数に入っているEUC-JP文字列をShift_JIS文字列に変換したいのですが、ウェブで情報を探しても、ファイルを扱う物ばかりです。 Set stream = CreateObject("ADODB.Stream") stream.Charset = "EUC-JP" stream.Open stream.WriteText = eucstring ' この変数にはEUC-JP で文字列が入ってる stream.Position = 0 stream.Charset = "Shift_JIS" WScript.Echo "(" & stream.ReadText & ")" とかやってみましたが、だめです。まさか「いったんファイルに書けば可能だが書かないと不可能」ということもないと思うのですが。。。。。 元のEUC-JP文字列は、xmlHTTPrequestでウェブサイトから得た物なので、その段階でShift_JISに変換する方法があるのならそれでも良いです。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- CRLFをLFに変換したい
テキストファイルを 1)SJIS → UTF-8 2)CRLF → LF に変換させたいのですが、1)はうまく出来たのですが、 2)がうまくいかず困っています Set Src = CreateObject("ADODB.Stream") Src.Open Src.Type = 2 Src.Charset = "Shift_JIS" Src.LoadFromFile "test.txt" Set Dst = CreateObject("ADODB.Stream") Dst.Open Dst.Type = 2 Dst.Charset = "UTF-8" Dst.LineSeparator=10 Src.CopyTo Dst Src.Close Dst.SaveToFile "utf-out.txt", 2 Dst.Close 改行コードが何も変化しません。 どうすればよいか教えてください。 ADODBではじめからファイルに書き込んでいく方法でもかまいません。
- ベストアンサー
- Visual Basic
- 新規にメモ帳を起動して、「test」と入力したい
新規にメモ帳を起動して、「test」と入力したいです。そして保存はしたくないです。 Sub Sample() Dim rc As Long rc = Shell("notepad.exe", vbNormalFocus) End Sub これだと、新規にメモ帳は起動できますが、書き込みができません。 Sub Sample2() Dim strList As String Dim adoSt As ADODB.Stream Set adoSt = CreateObject("ADODB.Stream") With adoSt .Type = adTypeText .Charset = "UTF-8" .Open End With adoSt.WriteText "test", adWriteLine adoSt.SaveToFile "c:\test.txt", adSaveCreateOverWrite adoSt.Close Set adoSt = Nothing End Sub これだとメモ帳を作成して書き込めますが、保存されてしまいます。 新規にメモ帳を起動→文字を書き込む までをvbaで行い、その後は×ボタンで消せる状態にしたいのですが、 どうすればいいか教えてください。
- ベストアンサー
- オフィス系ソフト
- MSXML2によるファイル保存の最大容量
下記のjavascriptにて、インターネットよるファイル保存を考えています この方式ですと1回にて保存する容量の限界は何MBなのでしょうか? よろしくお願いします ※保存先の容量は、問題ない場合 ----< javascript >----- var objSrvHTTP = new ActiveXObject("MSXML2.XMLHTTP"); var Stream = new ActiveXObject("ADODB.Stream"); objSrvHTTP.open("GET", "http://localhost/test/abc.xls", false ); objSrvHTTP.send(); Stream.Open(); Stream.Type = 1; Stream.Write( objSrvHTTP.responseBody ) Stream.SaveToFile( "c:\\abc.xls", 2 ); Stream.Close()
- ベストアンサー
- JavaScript
お礼
できましたー!!!! ありがとうございます。感動です。