2017年11月24日ファイル他の変換は以下のリンクを参照このページではShift-JISからBOM付きのUTF-8へのファイル変換について紹介しています。その他の変換は以下を参照ください。Objectsを利用するVBAの標準機能では文字コードはUnicode(UTF16-LE)とASCIIの2種類が扱えます。実際に目にするファイルの文字コードはShift-JIS、UTF-8のBOM付き、UTF-8のBOM無し、EUCの4種類になってきます。問題になるのが文字コードの相互変換の方法で、変換が必要な場合にどうやって変換したらいいのか、という点です。Linuxでは文字コードを変換するnkfコマンドやiconvコマンドがありますが、Windowsの場合は簡単に使えるものがなく、.NetのSystem.Text.Encodingクラス、PerlのEncodeモジュール、PHPのmb_convert_encoding関数、など、どうやって実装しようかなあ、と悩まされる問題があります。これら.NetもPerlもPHPもプログラミング言語や開発環境のインストールが必要になってくるため、どうしてもハードルが高くなります。Objectsを利用しましょう。Excelさえ入っていればインストール不要で文字コード変換が可能です。上に挙げた.Netは標準でインストール済みのPowerShellでも使えますので、分かる方はそちらでもいいと思います。以下のコードではADODB.Streamを利用するための参照設定が必要です。ここではバージョン6.1ですが、最新バージョンを選択すれば問題ありません。参照設定を行わない場合はCreateObject関数を利用し、以下のコードの「ADODB.Stream」のオブジェクト変数の初期化の部分を「CreateObject(“ADODB.Stream”)」としてください。参照設定をした方がわずかではありますが処理速度は速くなります。.を入力するとプロパティやメソッドが表示される利点もあります。文字コードがShift-JISのテキストファイルをBOM付きのUTF-8に変換するマクロです。通常、UTF-8のファイルはLinuxのファイルが多いため、改行コードもLFに変換するようにしています。変換が不要な場合は後述の説明を参照してください。関数の引数にファイルのフルパスを渡して使います。引数に変換元のShift-JISファイルのフルパスを指定し、第二引数に書き込み先のUTF-8ファイルのフルパスを指定します。引数のファイルをそのまま変換したい場合は第二引数に第一引数と同じファイルパスを指定しても構いません。Objectsのクラス変数のインスタンス変数を作成しています。Shift-JISファイルを読み込む変数と、UTF-8に変換する先のファイルへの書き込み変数用です。参照設定をしている場合はADODB.Streamの部分はStreamと書いても問題なく動作します。書き込み用のデータを格納する変数です。途中の処理で改行コードの変換を行っています。7行目から10行目は読み込むShift-JISファイルの設定を行います。Typeプロパティにはバイナリモード(adTypeBinary)とテキストモード(adTypeText)の2種類があり、ここではテキストモードを指定しています。Charsetプロパティには文字セットを指定します。読み込むファイルがShift-JISのためそのように指定しています。データストリームを開きます。ここではまだ引数のShift-JISファイルは参照していません。ファイルの内容をストリームに読み込みます。読み込んだShift-JISファイルデータを取得します。取得したデータの改行コードのCRLFをLFに置換します。LFへの変換が不要な場合は、この行をコメントアウトしてください。17行目から25行目は書き込むUTF-8ファイルの設定を行います。Typeプロパティにはテキストモードを指定しています。書き込むファイルの文字コードであるUTF-8を指定しています。データストリームを開きます。ここではまだ引数のUTF-8ファイルは指定していません。WriteTextメソッドでデータの書き込みを行います。コピー後のUTF-8のデータを引数のファイルパスに保存します。読み込みデータ、書き込みデータをクローズします。CreateObject関数を利用する場合CreateObject関数を利用する場合は2行目と3行目を以下のように書き換えます。CreateObject("ADODB.Stream")以降のコードは変更不要です。別ファイルにUTF-8ファイルを保存する場合。引数と同じファイルパスを第二引数にも設定する。別ファイルにUTF-8ファイルを保存する場合。引数と同じファイルパスを第二引数にも設定する。Excel作業をVBAで効率化シェアお問合わせTOPへ。