• ベストアンサー

Excelのマクロで、CSVファイルの内容を性格にコピーさせたい

マクロで、選択したCSVファイルの内容をExcelにコピーさせようとしています。(csvFileName = CSVファイルの名前、MyFileName = コピー先のExcelファイル名) Workbooks(csvFileName).Activate Sheets(1).Select Sheets(1).Copy after:=Workbooks(MyFileName).Sheets(1) 以上のような物なのですが、ここで困った事が起きました。 CSVの中に、1-1などと書かれているセルがあるのですが、これをExcelで開くと自動的に1月1日となってしまいます。 1-1という文字列のまま、コピーさせたいのですが、何か方法はありますでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >Workbooks(csvFileName).Activate ←ここの時点で既に、1月1日になっているのでは? もう、CSVを開いた時には、変わっているはずですから、その前に処理するとか、テキスト・インポートで、QueryTables を使えばよいと思います。このレベルは、記録マクロで、記録できます。   With ActiveSheet.QueryTables.Add(Connection:= _     "TEXT;" & csvFileName, Destination:=Range("A1"))     .TextFileParseType = xlDelimited     'ここに細かい仕様を指定します。   End With

ikazuti
質問者

お礼

なるほど、こういう方法もあるのですね。 Excelも表計算ソフトなら、そのまま変な解釈をせずにそのまま読み込んで欲しいのですが…… ご回答、有り難うございます。

その他の回答 (3)

回答No.3

Sheets("Sheet1").Select Cells.Select Selection.NumberFormatLocal = "@" でそのシート自体の書式設定で表示形式を「文字列」に変えてしまってはどうでしょか? 他の所で数値を使うのでしたら1-1が入るセルの行か列のみ文字列にかえるとか。

ikazuti
質問者

お礼

一カ所だけじゃないんで……なかなか難しいですね。 ご回答、有り難うございます。

  • Kurouto
  • ベストアンサー率28% (96/338)
回答No.2

コピーを実行する前に、「1-1」が入るセルもしくは行また列を Selection.NumberFormatLocal = "@" などを使って「文字列」として認識させればいいでしょうね。

ikazuti
質問者

お礼

開いた瞬間に、もうなんか変な解釈して表示されてるんですよね・・・ ご回答、有り難うございました。

回答No.1

セルを全選択し、セルの書式設定で表示形式を"文字列"としてから貼り付けると解決です。

ikazuti
質問者

お礼

ユーザーが、そういうスキルが一切無く(ファイルをダブルクリックするのが関の山)というのを想定してるので、なかなか難しい物が…… ご回答、有り難うございます。

関連するQ&A