• ベストアンサー

Excel2000~2003でUTF-8BOM出力

お世話になります。 Excel2000~2003ファイルで、 (現在、Excel2000ファイルを受け取って、  Excel2007上で互換モードとしてVBA作成中) で、ワークシート内容を、 「UTF-8のBOM付き」で、 VBAで、 (出来ましたらFSOを利用して) CSV出力する方法が知りたいです。 ネット上を探すとCSV出力する方法は、 いろいろありましたが、 サンプルを試しに動かして出力されたCSVファイルの 文字エンコードはShift-JISでした。 以上になります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

もし、今まで調べられたサンプルコードで得られたファイルが Shift-Jis であっても文字化けなどが発生していなくて 問題が文字コードだけであるなら下記のように変換してしまえば? 投稿用にタブインデントを全角スペースに変換しています。 Sub adodbStream() '要参照設定ActiveX DataObject Library 2.5以上   Dim strmFrom As ADODB.Stream   Dim strmTo As ADODB.Stream   Dim strTmp As String      Set strmFrom = New ADODB.Stream   Set strmTo = New ADODB.Stream   Set fS = CreateObject("Scripting.FilesystemObject")      With strmFrom     .Charset = "Shift_JIS"     .LineSeparator = adCRLF     .Open     .LoadFromFile "D:\標準地域コード.csv"   End With      With strmTo     .Charset = "UTF-8"     .LineSeparator = adCRLF     .Open   End With   strTmp = strmFrom.ReadText(adReadAll)   strmTo.WriteText strTmp   strmTo.SaveToFile "D:\標準地域コードUTF.csv", adSaveCreateOverWrite   strmTo.Close: Set strmTo = Nothing   strmFrom.Close: Set strmFrom = Nothing End Sub "D:\標準地・・・・関連の所は使いやすいようにそちらで改造してください。

hiroasa21
質問者

お礼

nicotinism 様 お陰様をもちまして、 無事にUTF-8で出力することができました。 大変丁寧で詳細な ご回答をいただきまして、本当に助かりました。 本当にありがとうございました。

関連するQ&A

  • gccによって、BOM付きのUTF-8で出力する

    こんにちは。 gccコマンドは、cygwinに付属していたものを使っています。 fopen関数でファイルを出力用にオープンし、fputs関数などで、何かしらの文字を書き込むCソースファイルを作成したとします。 このCソースファイルから、実行ファイルをビルドする際、 gccコマンドをオプション無しで使って実行ファイルをビルドし、その実行ファイルを実行すると、エンコーディングが"BOM無し"のUTF-8である出力ファイルが作成されます。 ですがこれだと、Emacsなどで開いた時に、バッファのコーディングシステムがraw-textになって、文字がきちんと表示されません。 gccコマンドには、ビルドされた実行ファイルが、エンコーディングが"BOM付き"のUTF-8であるファイルを出力するように指定する、オプションはありますでしょうか? 今回、ググっても1つも手掛かりが見つからなかったので、質問させて頂きましたので、 gccに詳しい方、是非よろしくお願い致します。

  • BOMつきUTF-8でメールを送るには?

    業務で、「UTF-8(BOMつき)のメールを送る」ことが必要になりました。 方法を探してみたのですが全く無いようで、途方にくれています。 いい案がありましたらご教示ください。 あるメールソフトのテスターをやっております。 要求事項に、UTF-8のメールを受信できることが含まれているようで、 アルゴリズムとしてメッセージの冒頭にあるBOMで判断しようとしているようです。 私はあくまで「テスター」でしかないので、このやり方の是非については私はなんともいえません。 Beckey!の試用版を使っているのですが、 これには文字エンコードを選択できるようですが、 これでUTF-8で送信するとBOMがなく、テストになりません。 その他のメーラーも試してみたのですが、UTF-8での送信に対応してないものが多く、 会社の人もやり方を知らないようで、困っております。 ISO-2022-JPで送るのが原則だ、とは思われるかもしれませんが、 今回はいわばイレギュラーパターンで必要なのです。 メールは1回送れば終わりなので、ソフトを導入するというよりは、 yahooメールのようなメールサービスでもよいと思います。 よろしくお願いします。

  • iconvでSJIS→UTF-8に変換できない文字

    cygwin1.7.31 の iconv を使って50個程度のShift-JISのcsvファイルをUTF-8に 一斉に変換しようとしていますが、 レコード内に「(1)」という文字があるためか、出力が止まってしまいました。 このような文字を含む場合も変換する方法がございましたらご教示ください。 お願いします。 入力したコマンドは次の通りです。 iconv -f Shift_JIS -t UTF-8 abc.csv > test.csv エラーメッセージ iconv: abc.csv:36:30: cannot convert

  • SJISで保存してあるPHPファイルを、UTF-8のBOMなしで保存し

    SJISで保存してあるPHPファイルを、UTF-8のBOMなしで保存しなおす方法を教えてください。 CodeIgniterというフレームワークを使って勉強しています。 これに関する書籍では、『PHPファイルはUTF-8のBOMなしで保存する事』と厳しく書いてあります。 しかし、SJISで保存してあるPHPファイルがあり、秀丸エディタを使いPHPファイルをUTF-8のBOMなしで保存しなおそうとするのですが、上手く行きません。 その所為かどうか分かりませんが、サンプルも上手く動きません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • UTF-8のBOM無し保存

    現在Ubuntu8.10を利用しています。 普段プログラムを書くのにgeditを使ってるのですが、PHPやTclを書く時にBOMによるエラーが出てしまいます。 調べて見たところ、既に記述されたファイルからBOMを取り除く方法等は紹介されていますし、Windowsのメモ帳等でBOM無しで保存する方法は見つかるのですが、geditでファイルを保存するとき、BOM無しのUTF-8を既定の文字コードに設定することって出来ないのでしょうか? vimやemacsを使う方が無難でしょうか。。。

  • 【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

  • shift-jisをUTF-8に読み込ませるには?

    shift-jisにてcsv形式で保存しているテキストファイルの配列(カンマ区切りの3番目)から取り出したものをUTF-8にエンコードする方法をご教示賜りたくご質問させて頂きました。 $Pscrtfl = "./datas/pdtscrt.txt"; open (DT,"<$Pscrtfl"); @Pscrt = <DT>; close (DT); foreach $i (@Pscrt){ @iW = split(/\,/,$i); $Pscrtfl = "./datas/pdtscrt.txt のtxtに入ってる3番目のデータを取り出して、それをUTF-8文字コードに 変換して出力させたいと思っております。 現在のところ私のやってみたこと foreach(@Pscrt){ use Encode; Encode::from_to( $_, 'utf8', 'shiftjis' ); $Pscrtfl .= $_; } とエンコードかけてみるんですが。。。。やはりcsvファイルの文字がUTF-8に変更していないのか、 <!doctype html> <html><head><meta charset="UTF-8">でprintしようとすると、やはり文字化けしてしまいます。 これを文字化けしない方法がお分かりの方おられましたら、ぜひご教示下さいませ。

    • ベストアンサー
    • Perl
  • charset=UTF-8なのにShift-JISになっちゃいます!

    <META http-equiv=content-type content="text/html; charset=UTF-8"> と記述して、ブラウザ(IE6)で確認したのですが真っ白な画面になり、ブラウザのエンコードを確認した ところShift-JISになっていました。自動選択にしてもShift-JISになってしまいます。 UTF-8でどうしてもウェブを作りたいのですがエンコードがShift-JISにならない方法を教えていただけないでしょうか? 使っているエディタは秀丸です。

    • ベストアンサー
    • PHP
  • CSVが文字コードUTF-8かどうかの判定

    かなりデータ量が多い(10万レコード超)CSVファイルが、100件近くあります。これをエクセルに取り込んで順次同じような作業をしようと思っています。とりあえずCSVを以下のコードで開いています。 Sub CSV入力4() 'クエリーテーブルを使ったCSV読み込みVBAコード Dim myFile As Variant myFile = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", Title:="CSVファイルの選択") If myFile = False Then Exit Sub End If ActiveSheet.Cells.Clear With ActiveSheet.QueryTables.Add(Connection:="text;" & myFile, Destination:=Range("A1")) ' .TextFilePlatform = 932 'Shift_Jis .TextFilePlatform = 65001 'UTF8 .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False .Delete End With MsgBox "読込完了" End Sub 問題は、CSVに拡張子で区別できないUTF-8のCSVファイルがあることです。事前にわかっていれば .TextFilePlatform = 932 'Shift_Jis .TextFilePlatform = 65001 'UTF8 の使い分けで対応できるのですが、開いてみて文字化けがあるかどうか調べないとわかりません。自動的に判定する方法はないでしょうか?

  • Shift-jisのPerlから、UTF-8、EUC、Shift-jisの3つのエンコードテキストを生成

    Shift-jisで作ったPerlにて、テキストをEUC、UTF-8、Shift-jisにエンコードし外部検索サイト等にテキストリンクを飛ばしたいのですが、うまくいきません。 過去ログにUTF-8から、EUC、UTF-8、Shift-jisへのエンコード方法をみつけ http://oshiete1.goo.ne.jp/qa3745875.html 試行錯誤しましたが、Shift-jisからはうまくいきませんでした。 perl のバージョンは5.8.8です。 ご教示のほどよろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう