• ベストアンサー

Excelのバージョンの違いを吸収するには?

こんにちわ。 Excel2000でカンマ区切りのテキストファイルをインポートするマクロを組んだのですが、 Excel2002の環境で実行すると、漢字等文字列の入っている列が文字化けしてしまい、困っています。 原因を調べてみたところ、QueryTablesのTextFilePlatformプロパティの値が原因ではないかというところまで行き着きました。 ver2000では、値が「xlWindows」 ver2002では、値が「932」 となれば、文字化けせずに済むようなのですが、 両者でコードを書き分ける(ver2000用のファイルとver2002用のファイルを作成する)か、 実行しているExcelのverを取得して、その条件により値を変更するしかないのでしょうか? Helpで調べた限りでは、 ver2000では、(xlMacintosh、xlMSDOS、xlWindows)しか定数が使えないようです。 その他のアイディア、こういう風に書くと一つの値で済む等、教えていただけないでしょうか? よろしくお願いします。

  • kenton
  • お礼率74% (110/148)

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

>ver2000では、値が「xlWindows」 >ver2002では、値が「932」 >となれば、文字化けせずに済むようなのですが、 そこまで調べてるのでしたら、素直に条件分岐させるだけなのでは? 安直なコードですが、 Select Case Application.Version   'Excel2002 or Later Version   Case Is > 10: A = 932   'Excel Other Version   Case Else: A = 2 End Select こんな感じで。 別解としては、CSV の取り込み自体を VBA で自力でやってしまうのはどうでしょう? http://www.asahi-net.or.jp/~ef2o-inue/ URL先の[VBA応用]-[CSV形式テキストデータの読み込み]のページが参考になりそうです。

参考URL:
http://www.asahi-net.or.jp/~ef2o-inue/
kenton
質問者

お礼

お礼が遅くなり、申し訳ありません。 条件分岐も考えたのですが、Excelのバージョンによって使うファイルを変更する形にしました。 参考URLもありがとうございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ver2002のヘルプを読んでみましたが ver2002でも、(xlMacintosh、xlMSDOS、xlWindows)しか定数が使えないようです。 このことからすると、ちょっと原因としてはちがうのではないかとおもいますが 932は、多分SHIFT_JISを表すコードページで これが直接指定できるなら、これでやってみたらどうでしょう。 ちなみに xlMacintosh:1、xlMSDOS:3、xlWindows:2 でした。

kenton
質問者

お礼

BLUEPIXYさん、回答ありがとうございます。 ver2002で、コード上のTextFilePlatformにカーソルをあてF1キーで見るとヘルプが出ますが、 私のExcelのヘルプには定数の制限が載っていなかったんですよ。 Helpが全部インストールされていないのかな・・・ >932は、多分SHIFT_JISを表すコードページで その後、ver2002にて、マクロの記録でテキストファイルを読み込む操作を保存する際に、 「データ」-「外部データの取り込み」-「データの取り込み」から、ファイルを選択すると、 「元のファイル」という項目に該当するのが、932 : Japanese(Shift-JIS)になっていました。 やはり、バージョンによってコードの一部を書き換えた方が早そうですね。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

「数値」では覚えにくいから「文字」で表現できるようにしてあるだけです。 今、Excelが無い環境からなので確認できませんが、もしかしたら同じ「値」かも。 [xlWindows]をイミディエイトウィンドゥで表示させてみると「値」がわかるはずです。

kenton
質問者

お礼

bin-chanさん、早速の回答ありがとうございます。 >「数値」では覚えにくいから「文字」で表現できるようにしてあるだけです。 ふむふむ。と思うのですが、 イミディエイトウィンドゥで確認しますと、 xlWindows = 2 だそうです。 逆に、ver2000のTextFilePlatformプロパティの定数を932にしてみると、「プロシージャの呼び出し、または引数が不正です。」とエラーが出てストップします。 使ってもらう方に、Excelのバージョンを調べてもらい、 それぞれに該当するファイルを使ってもらうしかないかな・・・ と思い始めています。

関連するQ&A

  • csvファイルをエクセルで開いたら文字化け

    csvファイルを下記設定で開いたら「'(シングルクオテーション)」が文字化けしました。 「'(シングルクオテーション)」以外は文字化けしていません。 どうしたら「'(シングルクオテーション)」が文字化けしないように開けますか? 文字列→日本語(Windows-932) 言語→標準-日本語 区切り→コンマ

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • CSVファイルをカンマ区切りのテキストファイルに直したい!

    CSVのエクセルファイルを文字化けすることなく、カンマ区切りのテキストファイルにしたいのですが、どうすればよろしいのでしょうか?

  • データーの入力規則で

    エクセルにてデーターの入力規則を設定してますが 下記のようなエラーが出てきてしまいます。 どうしたらよいのでしょうか? 区切り文字でとありますが カンマで区切ってますが 元の値を参照してくれません。 区切り文字が違うのでしょうか? ちなみに元の値は「○○,△△,□□」と3つを区切ったものです。 『リストの元の値は、区切り文字で区切られたリストか、 または単一の行または列の参照でなければなりません。』 よろしくお願いいたします。

  • エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

    WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

  • エクセルのバージョンの違いによる文字化け

    エクセル2003でマクロ(VBA)を開発しました。 そのファイルをエクセル2007で開いたところ、VBAのソースコードの一部が文字化けしてしまいます。 特に日本語のところが文字化けしています。 どうしたら解決するのでしょうか?

  • ワード差し込み印刷時の数字にカンマを入れたい

    ワードで差し込み印刷をする際、データはエクセルファイルで、エクセルファイルのなかでは数字の表示を桁区切りスタイルにしていますが、差込にすると普通に数字のになってしまいます。差込んでも桁区切りスタイルのままにさせることは出来ますでしょうか? 私がない知恵を絞って考えたのは、「元のエクセルファイルの数字を最初から文字列のカンマが入ったものにする」なのですが、文字列にするまではできても、その後カンマをいれる方法がわからないのです。 よい方法はあるのでしょうか??

  • Excel 取り込んだDATファイルを保存したい。

    いつもお世話になっています。 ExcelにDATファイルを取り込んで、テキストファイルウィザードで カンマ区切りを列の区切りにしています。 これを編集後、再度、DATファイルで保存すると、カンマのかわりに 空白スペースが入っています。 預りファイルなので、原型のまま保存したいのですが、どうすればいいでしょうか。 お力添え、お願いいたします。

  • VBA(テキストファイルのデータ コピー)

    質問No.773038にて 回答No.5で 実際にやってみると 確かに動作は抜群に質問通りですが 文字化けして エクセルに貼られています。 肝心の テキストデータの保存方法が悪いのか  検討が付きません。 私個人は アプリから csv 変換用があり やっているのです。しかし エクセルにて手作業にて テキストファイルウィザードで カンマやタブの区切り・・・ 元のファイルは 932 日本語(シフト JIS) フィールドの区切りは セミコロンとしてやり セルにしてやると 確かに問題なく 文字化けしません 何故 VBAでやると 文字化けするのか 原因がわかりません。 どなたか 文字化けに出会った人はいませんか? 対応策があれば ご教授願います。

  • エクセルVBAのヒントをください

    エクセルのある列に、文字列が入っているとします。 たとえば、Aであったり、Cであったり、A,C,Fとカンマ区切りで複数の文字列(個数は不定) が入っていたりします。 このとき、一行に一つの文字列しか含まないように、カンマで区切られた文字列を展開し、 複数行に分けて格納したいと思っています。 たとえば、一番上の行のセルにA、二番目の行に「C,D,A」、三番目の行にB、四番目の行に 「E,A」と入っていたら、各行に一文字列のみ入るように、上からA、C、D、A、B、E、Aという行を 作りたいと思います。各セルに含まれる文字列の個数は不定で、規則性はありません。 基本的に、 (1)各セルに含まれているカンマの数を調べる (2)カンマの数だけ次の処理を繰り返す  ・行挿入   ・最初のカンマの位置を調べる   ・先頭からカンマまでを切り取る   ・上記の値をセルに入力  ・行挿入   ・2番目のカンマの位置を調べる   ・1番目のカンマの位置+1から2番目のカンマの位置まで切り取る   ・上記の値をセルに入力 上記をカンマの数だけ繰り返す。 といった具合にしていくのだと思いますが、このような処理をするのに はどの程度のVBAのスキルが必要ですか? 上記のヒントや、参考になるサイト、書籍があればご教授ください。

専門家に質問してみよう