• 締切済み

マクロで1ファイルに複数の文字コードで出力する方法

研究室で使用しているツールの文言表示用の テキストファイルを出力するようにマクロを組んだエクセルファイルが有るのですが、 2年続けて中国人の方が研究室に入ってきたため ツールを中国語化しようとツールとエクセルファイルをメンテしているのですが ツールの構造と動作環境の関係から出来たら 日本語→shift-jis 中国語(繁)→big5 中国語(簡)→GB2312 の各文字コードで1つのファイルにまとめて出力したく試行錯誤していたのですが うまい方法が見つからず困っています。 何かヒントになりそうな事柄でもいいので情報お持ちの方が居ましたらお願いします。 ---------------------------------------- ◆シート側 ┏―┳―――┳―――┳―――┓ |ID|日本語|繁体字|簡体字| ┣―╋―――╋―――╋―――┫ |01| 開始 | 開始 | 开始 | ┣―╋―――╋―――╋―――┫ |02| 終了 | 結束 | 结束 | ┣―╋―――╋―――╋―――┫ |03| 編集 | 編輯 | 编辑 | ┗―┻―――┻―――┻―――┛ ・ ・ ・ ◆出力したいテキストファイル 01J  開始 01C1 開始 01C2 开始 02J 終了 02C1 結束 02C2 结束 03J 編集 03C1 編輯 03C2 编辑 ・ ・ ・ ◆コード概要 ※概要説明用に簡略してるので多少変なところがあるかも知れません ファイル出力部分です Dim FileNum As Long Dim text As Object ’オブジェクトを宣言 Set text = CreateObject("ADODB.Stream") ’ADODB.Streamを使用 text.Type = adTypeText text.Charset = "shift-jis" ’文字コード設定 For FileNum = 0 To (SheetCount) ’全シートを対象にシートごとにファイルを出力 text.Open Count = 0 Do While Count < lItemNum(FileNum) ’各シートにおける項目数分 text.WriteText Output(FileNum, Count) ’Outputにシートから読込み出力用に形を整えた全ての文言が入ってます Count = Count + 1 Loop text.SaveToFile ("C:\TEST.txt"), adSaveCreateOverWrite text.Close Next FileNum Set text = Nothing ここでファイルに追記する形にすれば出来るのでは!? とかも 考えたのですがこの出力方法における追記方法が 出力済のデータを再度読み込み、その末尾に新たなデータを追加し 全て出力し直すといった方法しか見つけられなかったため、 結局1種類の文字コードでしか出力できませんでした。 1つのファイルに複数の文字コードでの出力は無理なんでしょうか?

みんなの回答

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.2

>とのことですが具体的にどのような手順で実現できるのか >ご教授いただけないでしょうか? すいません、私はVBAは読める程度なので具体的な手順までは示せません。 StrConvを第3引数のLCIDまで指定すれば各文字コードに対応したバイナリ(バイト配列)に変換できるんじゃないかとは思いますが。

janjap
質問者

お礼

お礼が遅くなりすいませんでした。 今回はご回答いただきありがとうございました。 頂きましたアドバイスを参考に もう少し自分でも確認してみます。 ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.1

自前でテキストをバイナリに変換すれば可能だと思いますけど、UTF-8で保存した方が簡単になったりしませんか?文言表示ツールにも手をいれないといけないかもしれませんけど。

janjap
質問者

お礼

回答いただきありがとうございます。 確かにUnicodeで出力、表示した方が確実なのですが 同一のテキストを複数のツールで共通して使っているため ツール側をUnicodeに対応させようとすると 結構な手間になってしまうため出来るだけファイル側で 対応したく思っております。 > 自前でテキストをバイナリに変換すれば可能 とのことですが具体的にどのような手順で実現できるのか ご教授いただけないでしょうか? よろしくお願いします。

関連するQ&A

  • Linuxにてテキストファイル出力の文字コード

    RedHatLinux7.3(2.96-110)、gccバージョン(2.96 20000731)にて、 C言語のアプリケーションを初めて作成しています。 そのアプリ内でテキストファイル(日本語あり)を 作成するのですが、どうも期待どおりの結果になりません。 というのも、出来上がったファイルの文字コードが、 EUCではなくShift-JISになってしまっています。 Linuxで作成したアプリをLinuxで実行するのですから、 出来上がるファイルの文字コードはEUCになるはずですよね? ちなみに、文字コードの確認は「kcc -c XXXXX.log」でおこないました。 もしかして「アプリケーションログを日本語出力する」 なんていうことが、そもそもの過ちなんでしょうか? ファイル出力には、fopen+fprintfを使っています。 どうしてこのような結果になってしまうのか、ご存知のかた、よろしくお願いします。

  • VBAでCSV出力 一番シンプルなコードを教えて

    ExcelのVBAで、「1シート目をUTF-8の文字コードでCSV出力」する一番シンプルなコードを教えてください。 ネットで調べるとパラメータを設定したり複数シートを繰り返したり、余計な処理が入っていて、どこが余計な処理なのか分かりません。 (条件) Excelファイルの名前「作業ファイル.xlsx」 1シート目は「作業シート」 出力するファイルは「作業ファイル.csv」 1シート目を一切編集せずそのまんま出力したい (添付画像と全く同様の処理をしたい)

  • Linuxで標準出力したファイルの文字コードついて

    Linuxで2つのディレクトリの内容をtreeコマンドでそれぞれファイルに出力して、 その2つのファイルをdiffで比較して、その結果をファイルに出力するシェルを作成しました。 比較対象のディレクトリの内部には日本語でファイル名やディレクトリ名を付けているものもあります。 このシェルを手動で実行してファイルに出力された内容を確認すると、 日本語であるべきところは日本語で出力されています。 nkfコマンドでファイルの文字コードを確認すると「UTF8」となっています。 しかし、cronにてこのシェルを実行してファイルに出力された内容を確認すると 何故か日本語の部分が化けて(ASCIIのようです)しまいます。 nkfコマンドでファイルの文字コードを確認すると「ASCII」となっていました。 cronで実行した場合にも出力するファイルの文字コードを「UTF8」にしたいのですが どいうすればよいでしょうか? どなたかご教授願います。 よろしくお願いします。

  • 文字コード変換ツール

    テキストファイルの文字コード変換ツールを探しています。 変換を行うのは、Shift_JISとUnicode、Unicodeと韓国語、Unicodeと中国語 です。 私が試したのは、1行が512バイトを超えると切れてしまいます。 複数(多数)のファイルをまとめて変換できると尚可です。 (ちなみに、秀丸はあるのですが、何とかして、まとめて変換できないでしょうか。) OSはWindowsXP

  • エクセルのマクロでHTMLファイルを出力するには

    エクセルのマクロでHTMLファイルを出力するには 下記アドレスのソースをもとに、エクセルでHTMLファイルを複数出力できたらと考えています。 内容は、sheet1のA列にテキストが入っていると、それを任意のファイル名(ダイアログ)でテキストとして保存が可能になるソースです。 ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html 出来ればこれを以下のように変えたいと考えております。 ●シート名「1」~「50」の計50シートのA列のテキストを、 それぞれのシート名+任意の文字列で保存をしたい。 ●ファイル名の任意の文字列については、シート内のセル (例:sheet1のA4)に記載されている内容としたい。 ●ファイル形式は、HTML形式で保存をしたい。 ●保存先のフォルダは任意のディレクトリ内 (例:C:\Documents and Settings\All Users\デスクトップ)の配下に、 シート内のセル(例:sheet1のA3)に記載されている内容を フォルダ名として、新規に作成し、その中に保存したい。 恐れ入りますが、ご回答よろしくお願いいたします。

  • ファイル出力の改行コードをLFに

    また質問です。よろしくお願いいたします。 WindowsXPでperl5.8.7の環境です。 出力したファイルの文字コードをEUC、改行コードをLFで出力をしようとしています。 なお入力、出力ファイルには日本語が含まれています。 文字コードは希望通りいくのですが改行コードがうまくいきません。 Windowsのデフォルト改行コードCR+LFが出力されてしまいます。 (Terapad(エディタ)の改行コード表示がこうなっています。) (1)binmode(OUT);で行うと、 Wide character in print at jisyo01.pl line 63, <IN> line 97. というエラーが表示され、出力されない。 (2)$xxx[$i] =~ s/\x0D\x0A/\x0A/g; で改行コードを置換しようとしても、置換されず、 CR+LFである。 (3)$/ = pack("C", hex("A"));で 改行コードをchompした後、print OUT "$/";としても、 CR+LFのままである。 上手くいきません。いい方法ないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイルの文字コードを調べたい

    お世話になります。 現在PHPでテキストファイルの文字コードを調べる関数を作っています。 流れは 1 テキストファイルのパスをわたす 2 ファイルがあれば開いて最初の1行を読む 3 mb_detect_encoding関数でその文字列を調べて返す という順なのですが mb_detect_encodingで何をおくってもASCIIとしかならず 不思議に思い質問させていただきました もしかしてmb_detect_encodingには日本語を渡さないと autoの場合すべてASCIIで返ってくるのでしょうか? auto時の調べる順番がASCIIが一番上になっているためですか? また、ファイルの文字コードを調べるのにもっと良いほうほうがあれば 教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 異種文字コードをTEXT ファイルから探し出す方法

    スクリプト(英数字)を書いた巨大な TEXT ファイルの中に日本語と思わしき文字コードが紛れ込んでしまったようなのですが、これを簡単に探し出す方法はありますか。 試しに、全角の数字や空白、括弧などを検索してみたのですが見つかりませんでした。

  • ファイルの文字コード変換

    一度Shift-JISコードで作成したファイルを、そのままの状態でEUCコードに変換することはできないのでしょうか? ◇試したこと 1)文字コード変換ツール(フリーソフトを2,3種類) 2)インターネットエクスプローラで開いて文字コード変換 ◇結果 1)いずれも変換されなかった 2)変換されたが元のファイルのテキストが崩れた かなりたくさんShift-JISファイルがあるので困っています。 いい方法を御存知の方がいらっしゃいましたら御教授いただければ幸いです。

  • 外部ファイルへの出力時に余計なダブルクオートを除去し、文字コードを指定する方法は?

    Excel2007のデータを行毎にhtmlファイルとして保存しようとしています。 そこで、2つ問題が解決できずにいますので、どなたかお力添えをお願いできますでしょうか。 (1) セル内に改行がある場合、ダブルクオートが追加されたデータがhtmlファイルに出力されてしまうので、余計なダブルクオートを取り除いた、セル内に記載されたままのテキストデータをhtmlファイルに出力したい ---データ例 (A1)ここから--- <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> if (document.getElementById) { document.write("<st" + "yle type=\"text/css\">.j1 {display:block;}</st" + "yle>");} </script> </head> <body> ---データ例 (A1)ここまで--- ---データ例 (B1)ここから--- <p class="j1">見出し1</p> </body> </html> ---データ例 (B1)ここまで--- (2) htmlファイルの文字コードをutf-8で出力&保存したい 現在は Open "001.html" For Output As #1 Write #1, Cells(1, 1) Write #1, Cells(1, 2) Close #1 このような感じのコードに CreateObject("ADODB.Stream") や Charset = "utf-8" を組み込んでいる最中ですが、自力では解決しそうになく、質問させていただきました。 なお、実際に出力されるhtmlは50KBほどあり、ファイル数(=Excelの行数)も100を超えるため、できるだけメモリーを圧迫しない方法で解決できればと思います。 よろしくお願いいたします。

専門家に質問してみよう