- ベストアンサー
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という文字列のまま、コピーさせたいのですが、何か方法はありますでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >Workbooks(csvFileName).Activate ←ここの時点で既に、1月1日になっているのでは? もう、CSVを開いた時には、変わっているはずですから、その前に処理するとか、テキスト・インポートで、QueryTables を使えばよいと思います。このレベルは、記録マクロで、記録できます。 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & csvFileName, Destination:=Range("A1")) .TextFileParseType = xlDelimited 'ここに細かい仕様を指定します。 End With
その他の回答 (3)
- 12tomo1973
- ベストアンサー率31% (11/35)
Sheets("Sheet1").Select Cells.Select Selection.NumberFormatLocal = "@" でそのシート自体の書式設定で表示形式を「文字列」に変えてしまってはどうでしょか? 他の所で数値を使うのでしたら1-1が入るセルの行か列のみ文字列にかえるとか。
お礼
一カ所だけじゃないんで……なかなか難しいですね。 ご回答、有り難うございます。
- Kurouto
- ベストアンサー率28% (96/338)
コピーを実行する前に、「1-1」が入るセルもしくは行また列を Selection.NumberFormatLocal = "@" などを使って「文字列」として認識させればいいでしょうね。
お礼
開いた瞬間に、もうなんか変な解釈して表示されてるんですよね・・・ ご回答、有り難うございました。
- takase_000
- ベストアンサー率27% (52/189)
セルを全選択し、セルの書式設定で表示形式を"文字列"としてから貼り付けると解決です。
お礼
ユーザーが、そういうスキルが一切無く(ファイルをダブルクリックするのが関の山)というのを想定してるので、なかなか難しい物が…… ご回答、有り難うございます。
お礼
なるほど、こういう方法もあるのですね。 Excelも表計算ソフトなら、そのまま変な解釈をせずにそのまま読み込んで欲しいのですが…… ご回答、有り難うございます。