文字コードの違うファイルインポート

このQ&Aのポイント
  • 文字コードの違うcsvファイルをTransferTextでインポートする方法について教えてください。
  • csvファイルの文字コードが「unicode」で設定されているため、mdbにインポートすると文字化けする問題が発生しました。
  • エディタでcsvファイルの文字コードを「SJIS」に変更して保存し直すことで問題が解決しましたが、VBAでコマンドボタンを押下してインポートする方法が見つかりません。
回答を見る
  • ベストアンサー

文字コードの違うファイルインポート

こんにちわ。 いつもお世話になっています。 文字コードの違うcsvファイルをTransferTextでインポートしたいのですが いい方法がなく困っています。 ご存知の方、ご教示下さい。 【経緯】 csvファイルはインターフェイス上では文字コードが「unicode」 で設定されているとの事でした。 mdbにてファイルのインポートを行うと文字化けするのでインポート定義を 設定してみた所、「UTF-8」だけが日本語にできたました。 しかし、インポートしてみるとカラム数が12個あったのに対して9個しか 取込できませんでした。 そこでそのcsvをエディタにて「名前を付けて保存」→文字コードを「SJIS」に変更して 保存し直しました。 その保存し直したcsvを読込するとカラム数も12個で文字も日本語でインポート できました。 どうしてもVBAでコマンドボタンを押下してインポートしたいのですが いい方法が見つかりません。 お知恵をお貸し下さい。 よろしくお願い致します。

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

  • ベストアンサー
回答No.1

UTF-8をShift_jisにファイル変換するVBAです。 参照設定:Microsoft ActiveX Data Objects ?.? Object Library が必要です Sub convUTF8(iFile As String, oFile As String) Dim iStm As New ADODB.Stream Dim oStm As New ADODB.Stream With iStm .Open .Charset = "UTF-8" .Type = adTypeText .LoadFromFile iFile End With With oStm .Open .Charset = "Shift_JIS" .Type = adTypeText iStm.CopyTo oStm .SaveToFile oFile, adSaveCreateOverWrite End With iStm.Close oStm.Close Set iStm = Nothing Set oStm = Nothing End Sub Sub test() Dim iFile As String Dim oFile As String iFile = "c:\test1.txt" oFile = "c:\test2.txt" convUTF8 iFile, oFile End Sub

earlgyreprince
質問者

お礼

fumufumu_2006さま 失礼致しました。 当方の記述が誤っておりました。 上記、ソースでうまくできました。 本当に助かりました。 ありがとうございました。

earlgyreprince
質問者

補足

ありがとうございます。 早速、記述後に実行してみた所「オブジェクトが必要です。」のデバックが発生しました。 参照設定はMicrosoft ActiveX Data Objectsだけでよろしいのでしょうか?? ご回答よろしくお願い致します。

関連するQ&A

  • CSVファイルをインポートさせたい

    先頭行がフィールド名をあらわしたCSVファイルがあるのですが、これをOracle10gXEにインポートさせるにはどうしたらよいのでしょうか? 文字コードも気にする必要がありますか?現在SJISファイルのCSVファイルがあります。

  • phpMyAdminでCSVファイルをインポートするが文字化け

    MYSQL初心者です。 教えてください。御願いします。 phpMyAdminにて、漢字コードが「Sjis」のCSVファイルをLinuxサーバのMySQLにインポートするのですが、文字化けを起こしてしまい、旨く変換出来ません。多分、「utf8」に変換されているようです。勿論変換時の漢字コードは「sjis」にしております。どなたか助けて下さい。宜しく御願いします。

  • 文字コードについて

    データベースの文字コードとアプリケーションの文字コードが異なる場合、書き込み(INSERT)や取り出し(SELECT)はどのような扱いになるのでしょうか? イメージ的にはデータベースがUTF-8の設定の場合に、アプリケーションがSJISを指定し読み取ったデータをINSERTする場合や、SELECTで取り出す場合に何が問題になるのかを知りたいです。 質問の意図はアプリケーションやデータベースを国際化を意識して作成したく、アプリケーションはVB.NETで、CSVのファイルをsjisを指定して読み込み、それを書き込む際にそのままInsertやSelectを指定して問題ないのか、そもそもCSVファイルにはUTF-8で書き込み、読み込みもUTF-8ですべきなのでしょうか? ちなみにUTF-8がAsciiが1バイト、日本語が3バイトで扱われ、SJISの場合は、Asciiが1バイト、日本語が2バイトで扱われることは理解しています。

  • csvファイルの文字コードを変更するvbaコード

    お世話になってます。 ¥C:User¥documentのフォルダにあるBefore.csv(中身の文字コードはUnicode)のデータを文字コードをUft-8に変更して別名保存して 同フォルダ内のAfter.csv(元々あるファイルでも新規作成でも大丈夫です)として保存するvbaコードを教えてもらえませんか。 毎週使痛いコードなのでよろしくお願いします。

  • Access VBAでファイルのインポートについて

    あるディレクトリにAccessのmdbファイルを置き、「インポート」フォルダを隣に置きます。 このフォルダ内にCSVファイルを置き、それをVBAでテーブル「tbl_import」にインポートさせたいのです。 ちなみにインポート後はディレクトリ「インポート」下層のディレクトリ「インポート済」に移動させたいのです。 下記例文では「file.csv」と書いていますが、このファイル名はインポートの都度、常に変わります。 インポートさせるファイルは常に一つです。 「*」を用いれば出来ると思っていたのですが、うまくいきません。 良い方法を教示いただけませんか。 DoCmd.RunSQL "DELETE * FROM tbl_import" DoCmd.TransferText acImportDelim, "インポート定義", "tbl_import", CurrentProject.Path & "\インポート\file.csv", True FileCopy CurrentProject.Path & "\インポート\file.csv", CurrentProject.Path & "\インポート\インポート済\file.csv" Kill CurrentProject.Path & "\インポート\file.csv"

  • CSVファイルをインポートすると、文字化けがおこる。

    CSVファイルをインポートすると、文字化けがおこってしまいます。 MySQLの文字コードは以下のようになっています。 ファイル自体の文字コード体系はsjisです。 解決策として、どんなことが考えられるでしょうか? よろしくお願いします。 mysql> show variables like 'char%'; +--------------------------+---------------------------------------------------- -----------+ | Variable_name | Value | +--------------------------+---------------------------------------------------- -----------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | C:_Program Files_MySQL_MySQL Server 5.1_share_chars ets_ |

  • CSVファイルのデータが、データベース上で文字化け

    CSVファイルのデータが、データベース上で文字化けする現象を解決したい! CSVファイルは、任意の場所にFTPソフトを使用してアップロードし、プログラム上でCSVを読み込むという手順です。 ■開発関係情報 phpは使用しておらず開発はperlを使用 開発プログラムの文字コードはEUC-JPで、出力されるHTMLの文字コードはShift-JISです。 (1)hetemlに設置した場合は正常に動作しました。 予め作成されていたデータベースのエクスポートファイルをインポートしてテーブルを作成しましたがインポート時のファイルの文字セットは「utf8」で、コーディングへの変換は「non」で実行しています。 MySQLバージョン:5.0.82 MySQLの文字セット:UTF-8 Unicode(utf8) MySQLの接続照合順序:utf8_unocode_ci phpMyAdmin - 2.11.11.3 MySQL クライアントのバージョン: 4.0.25 (2)無料のレンタルサーバー(国外)に設置すると文字化けします。 (1)と同じ手順で行うと、データベース上でCSVデータの日本語が文字化けします。 MySQLバージョン:5.1.65-cll MySQLの文字セット:UTF-8 Unicode(utf8) MySQLの接続照合順序:utf8_unocode_ci phpMyAdmin - 3.4.11.1 MySQL クライアントのバージョン: 4.1.22 そこでCSVをFTPでアップせずデータベースでインポート(ファイルの文字セット:utf-8、エンコーディングの変換なし)しようとすると「CSV入力のカラム数が不正です」というエラーになります。 色々と調べていると、文字コードをすべてEUCに統一すると文字化け解決と書いてあったので、CSVファイル・MySQLの接続照合順序・インポートするときの文字セットなどの思い当るところ全てをEUCに指定して、エンコーディングへの変換を「EUC」に「全角カナへ変換する」にチェックを入れて実行してみても、やはり「CSV入力のカラム数が不正です」エラーになります。 この時、フォーマット項目で「LOAD DATA文を使用したCSVの読み込み」を選択し、特有のオプションで「カラムの終端記号」を「,」「カラム囲み記号」を「"」に設定して、CSVファイルでは区切りを「,」と「","」の2パターンで試しても同じエラーでした。 また、気になる点としては、MySQLの文字セットはUTF-8のままでどうやって変更するのかがわかりません。 開発にphpは使用していなくても、phpmyadminを使用しているということはphp.iniの設定が必要ですよね? php.iniの設定は、権限が与えられていなければサーバー側で設定を行ってもらう必要があるのでしょうか?(初歩的な事ですみません) 試行錯誤していますが、解決法が分からず困っています。 どなたかご教示いただけませんでしょうか。 何卒よろしくお願い致します。

  • mysql文字コード

    文字コードの設定をSJISにしていますが 日本語のデータが登録できません。 どうすればできるのでしょうか?

    • ベストアンサー
    • MySQL
  • ファイルの日本語コードの調べ方

    2つの同じようなファイルがあり、あるアプリからファイルをインポートしますが、1つはOKですが、1つはNGです。エラーの発生は//の間の日本語の部分で、2つめの/がどうも認識されていないようです。日本語部分は完全に文字化けしていました。 おそらくUTF-8のユニコードであれば正しく認識されると思うのですが、2つのファイルは見た目は日本語部分は同じですが、日本語のコードが現在何か調べる方法はありますか。

  • 異なる文字コードの環境にインポートするには

    下記のようにサーバがあります。 ・Aサーバ(Solaris) ・Bサーバ(Windows) 下記のように文字コードが異なります。 ・Aサーバ(JA16EUCTILDE) ・Bサーバ(JA16SJIS) ※Oracleのバージョンは同じです。 AサーバでエクスポートしたdmpファイルをBサーバにインポートしたいと考えています。 文字コードが異なるdmpファイルをインポートするにはどのようにしたらいいのでしょうか。また注意点などあるのでしょうか。 テストする環境が今ないため、試す事ができません。 些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。 宜しくお願いします。