• 締切済み

【VBA】保存したcsvファイルをメモ帳でUTFに変換する方法を教えてください。

VBAの初心者です。 皆様のお力をお借りしたい次第です。 今私はデスクトップに保存したcsvファイルをUTFに変換し、 windowsメールでアドレスのインポートをしようとしていますが、 csvファイル自体をUTFに変換すると文字化けをしてしまうため、 メモ帳でUTFに変換→csv保存をしたいと思っております。 メモ帳をExcelから命令するにはどうしたらいいでしょうか? 以下はUTFに変換する際に使用させてもらったものです。 Dim JIS, UTF Set JIS = CreateObject("ADODB.Stream") JIS.Open JIS.Type = 2 JIS.Charset = "shift_jis" JIS.LoadFromFile "C:\~\JIS.csv" Set UTF = CreateObject("ADODB.Stream") UTF.Open UTF.Type = 2 UTF.Charset = "utf-8" JIS.CopyTo UTF UTF.SaveToFile "C:\~\UTF.csv", 2 JIS.Close Set JIS = Nothing UTF.Close Set UTF = Nothing

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >csvファイル自体をUTFに変換すると文字化けをしてしまうため、 コードをチェックしてみましたが、JISからUTF-8に変更されています。コードは少し雑ですが、別に、文字化けするようなことはありません。 何をもって文字化けをチェックされたのでしょうか?メモ帳(Notepad.exe)でも、正しく、UTF-8 と認識されています。 >メモ帳をExcelから命令するにはどうしたらいいでしょうか? 確かに、Notepad.exe に、張り付けて、UTF-8モードで保存すれば、変換は可能だけれども、そうすると、保存するときに、UTF-8モードを操作しないといけないような気がしますが、VBAからでは、逆に面倒な操作が必要で、もう一般マクロの範囲は超えていると思います。 もう一度、変換されているか、チェックしてみたらいかがですか?

sasakikisa
質問者

補足

>コードをチェックしてみましたが、JISからUTF-8に変更されています。コードは少し雑ですが、別に、文字化けするようなことはありません。 何をもって文字化けをチェックされたのでしょうか?メモ帳(Notepad.exe)でも、正しく、UTF-8 と認識されています。 再度確認してみます。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

これってVBAでやらないといけないのでしょうか? Windows標準搭載のメモ帳(notepad.exe)以外のテキストエディタなら、普通に文字コードを指定して保存できます。 文字コード変えるだけなら、TeraPad辺りが一番簡単でしょうか。

関連するQ&A

  • 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ではじめからファイルに書き込んでいく方法でもかまいません。

  • (VBA )UTF-8(bom無)でテキスト書き出

    (VBA )UTF-8(bomu無し)でテキストファイルに書き出す 下記記マクロを使ってテキストファイルに書き出すとShift-JISになるようです。  下記コードを修正するとどのようになりますか ? ------------------------------------------------------------------ 'Chapterシートをテキストファイルへ書き出す Open "C:\Users\NOBU\Desktop\chap_Output.txt" For Output As #1 EndLow = WS2.Cells(Rows.Count, "A").End(xlUp).Row For I = 1 To EndLow Print #1, WS2.Cells(I, "A").Value Next Close #1 ------------------------------------------------------------------ 途中結果です。 UTF-8(BOM有)での書き出す方法はネットで探して  下記コードでうまく書き出し出来たのですが(BOM無し)の方法が良く分かりません。 以下が参考になりそうですが、修正の参考になりませんか ? http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_065.html ------------------------------------------------------------------------ 'ADODB.Streamオブジェクトを生成 Set ado = CreateObject("ADODB.Stream") 'ADODB.Streamで扱う文字コードを設定する ado.Charset = "UTF-8" 'ADODB.Streamを開く ado.Open '開いたADODB.Streamに内容を保管する 'adWriteLineは改行する時に入れる For I = 1 To EndLow ado.WriteText WS2.Cells(I, "A").Value, adWriteLine Next 'ADODB.Streamに保管されている内容をファイルに保存する ado.SaveToFile "C:\Users\Nubo\Desktop\chap_Output.txt", 2 'ADODB.Streamを閉じる ado.Close '終わったのが分かるようにメッセージを出す MsgBox "完了!" Set ado = Nothing End Sub

  • UTF-8のテキストファイルを開く方法

    UTF-8のテキストファイルを開く方法 こんにちは。VBA初心者です。 FSOを使ってテキストファイルを開いてみたのですが、S-JISで開かれるらしく、文字化けしてしまいました。 そこで、WEBで調べてみると「ADODB.Stream」というものを使用すると、「オブジェクト.Charset = "UTF-8"」のように文字コードを指定できることがわかりました。 しかし、テキストストリームというものがいまいち理解できていないので使い方がよくわかりません。 以下のようなコードを書いてみましたが、「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となってしまいました。 どこが間違っているのか教えていただけないでしょうか。 ちなみに「Open」ステートメント(Open バス名 For モード As #ファイル番号)を使用してテキストを内部的に開いた場合はどうなるのでしょうか。もし、標準でS-JISだった場合は、UTF-8にする方法はあるのでしょうか。 どうかよろしくお願いします。 Sub UTF8を開く() Dim myADODB As Object Set myADODB = CreateObject("ADODB.Stream") Dim i As Integer Worksheets("sheet1").Activate i = 1 With myADODB .Charset = "UTF-8" .ReadLine ("D:\test\sample.txt") Do Until .AtEndOfStream = True Cells(i, 1).Value = myADODB i = i + 1 Loop .Close End With End Sub

  • 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

  • VBA Shift-JISをJISに変換すると半角カナが全角に変換されてしまう

    Excelから全銀フォーマットファイル(文字コード:JIS)を出力する目的で、VBAでADODB.Streamを利用して下記のサンプルコード書いた時、 半角カナが全角カナに変換されてしまう現象が解消できません。 [サンプルコード] With CreateObject("ADODB.Stream") .Open .Position = 0 .Type = 2 .Charset = "iso-2022-jp" .WriteText "(半角ア)、ア、1、1、a、a" .SaveToFile "C:\result.txt", 2 .Close End With [C:\result.txtの内容] ア、ア、1、1、a、a 解決策をご教授お願いいたします。

  • 新規にメモ帳を起動して、「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で行い、その後は×ボタンで消せる状態にしたいのですが、 どうすればいいか教えてください。

  • 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

  • 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

  • utf-8のCSVをshift_jisに変換したい

    Perl5.8でCSVをダウンロードできる仕組みをつくっています。 utf-8でコードを記述しているため当然ながらダウンロードしたCSVデータもutf-8です。 しかしながらエクセルでダブルクリックで開く場合どうしてもutf-8だと支障があるため、 shift-jis(もしくはcp932)で開きたいのです。 ダウンロード時に文字とファイルをshift_jisに変換する方法はございませんでしょうか? 以下作成済みのコード ------------------------------------------------------- if(!open(OUT,"$CSV_FILE")){&error('CSVデーターファイルがありません'); } else{ @csvdata=<OUT>; close(OUT); } foreach(@csvdata){ $downloaddata .= $_; } print "Content-Disposition: attachment; filename=$CSV_FILE_NAME\n\n"; print $downloaddata; exit; ------------------------------------------------------- 何卒よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイルダウンロードの開くで、CSVファイルが開けない

    表記の件についてかなり困っています。 教えてください。 【環境】  Windows2000 SP4 + ASP 【内容】  現在CSVファイルをダウンロードする仕組みをASPで作成しています。 とりあえず、ダウンロードダイアログがでてくるところまではでき、保存ボタンでも正常に保存できるところまではできたのですが、開くボタンをクリックすると、EXCEL(CSVをEXCELに関連付けしているため)が起動された後に、 ”出力ファイル名[1].csv”が見つかりません。という エラーとなり表示されません。 この原因は何なのでしょうか? 宜しくお願いします。 【ロジック】 ダウンロードロジックは以下のようにしています。 Response.ContentType = "application/octet-stream" Response.AddHeader "content-disposition","attachment; filename=光彩.csv" strFilePath = "C:\Inetpub\wwwroot\CoreSt\光彩.csv" Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing