none
Excel VBA ファイル名に中国語が入っている場合「ファイル名または番号が不正です」になる RRS feed

  • 質問

  • Excel2003のマクロでフォルダ内のExcelファイルを順番に開いて、シート名をゲットして別ブックにコピーする作業を行っています。

    ファイル名は、英数、日本語、中国語が混在しており、中国語が入っている場合、マクロを実行するパソコンによっては「ファイル名または番号が不正です」となってコピーできません。

    ファイル名が???となって正しく取得できておらず、ファイル名を使った操作でエラーになっているようです。

    確かにブック名の中国語の部分は、パソコンによって表示が違います。(全ての中国語が正しく表示されるPCや、でアンダーバーなどに文字化けして見えるPC)

    現在このエラーが起こるパソコンでは、中国語(unicode)も全て正しく表示されていますが、ファイル名が???となって正しく取得できません。取得できない事によって、その後のファイル名を使った操作でエラーになってしまいます。

    ファイル名に中国語が入っている全てのファイルでエラーになるわけではなく、いくつかのファイルのみ起こります。

    VBAではunicodeが扱えない(文字化ける)らしいのですが、マクロを実行するパソコン環境に依存しないようなVBAコードの書き方、もしくは文字化けたときの上手い回避方法はないでしょうか。

    下記のような動作です。

    Aブックを開く→シート名をゲットして変数に保管(①)

    Hフォルダを開く→ブックを順番に開く(Bブック)→Bブックのシートを順番にチェック

    Aブックのシート(①)と同じシート名が存在するならば、Bブックのシートに入れ替える

    全てのファイル名、シート名は変数にいれて使用しています。

    Hフォルダ内のブックをゲットして、シート名もゲットすている部分のコードは下記です。

    Set FSO = CreateObject("Scripting.FileSystemObject")で

    For Each File In FSO.GetFolder(Path).Files
              Workbooks.Open Filename:= File.Path_, UpdateLinks:=0

        book_name = ActiveWorkbook.Name ’ブック名を変数にセット

        

           For Each ws In Worksheets

                sheet_name = ws.Name ’シート名を変数にセット

                     Next ws

    ・・・

            変数を使って、シートのコピーやブックを閉じるなどの作業

    ・・・

    Next File

    2013年3月12日 4:14