ここから本文です

CVSファイルで住所の番地を開くと番地が日付や数値になってしまう問題について ...

nor********さん

2018/2/2011:22:29

CVSファイルで住所の番地を開くと番地が日付や数値になってしまう問題について

みなさん、こんにちは!

ネットショップを運営しており、
ネットショップのシステムから
お客様の住所をCVSファイルでダウンロードできるのですが
エクセルで開くと住所の番地が
添付のように日付になってしまいます。

本当は 1-5-2 だけど
2001/5/2 になったり
番地が数字になることもあります。


以前番地が日付に変換されない元のコードのまま開ける
無料の表ソフトも試しましたが
コピーアンドペーストの時にセルをすごく選択しづらいという問題で
使えませんでした。

エクセルでこのCVSファイルを開いて、
番地が日付や数値に変換されない
何か良いお知恵はございますでしょうか。

もしエクセルでは無理な場合は、その他の方法をご教示いただければ幸いです。

よろしくお願いします。

補足間違いがありました。
CVSファイルは書き間違えで
正しくはCSVファイルでした。

CSVファイル,エクセル,番地,日付,コピーアンドペースト,テキストファイル,sh.Cells

閲覧数:
441
回答数:
4
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/2/2012:31:16

通常は、メニューの「データ」から「外部データの取り込み」→「テキストファイル」で、ファイルを選択して、すべての「列」を「文字列」に設定(郵便番号の列も「0」から始まる場合があり、そのまま読み込むと、頭の「0」が欠落します)すれば、問題は解決できますが、それが邪魔くさければ、以下のマクロをお使いください(「Windows限定」です)。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。

できたプログラムファイル(「~.vbs」ファイル)に、これから読み込みたい「csv」ファイルをドラッグ&ドロップするだけです。

ドラッグ&ドロップしたファイルと同じフォルダ内に、同じ名前(「abc.csv」→「abc.xlsx」)で結果ファイルを作成します。

最後に「Finished!」と表示しますので、「OK」を押して、終了してください。

Option Explicit
Dim a, bk, cv, ex, f, i, n, r, sh, so, wa
Set so = CreateObject("Scripting.FileSystemObject")
Set wa = WScript.Arguments
If wa.Count <> 1 or LCase(so.GetExtensionName(wa(0))) <> "csv" Then
MsgBox("ドラッグ&ドロップできるのは、csvファイル1つだけです")
WScript.Quit
End If
f = so.GetParentFolderName(wa(0))
n = so.GetBaseName(wa(0))
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = False
Set bk = ex.Workbooks.Add()
Set sh = bk.ActiveSheet
Set cv = so.OpenTextFile(wa(0), 1)
r = 0
Do Until cv.AtEndOfStream
a = Split(cv.ReadLine, ",")
r = r + 1
For i = 0 to UBound(a)
sh.Cells(r, i + 1).NumberFormat = "@"
sh.Cells(r, i + 1).Value = a(i)
Next
Loop
cv.Close
bk.SaveAs(f & "\" & n & ".xlsx")
bk.Close
ex.Quit
Set cv = Nothing
Set sh = Nothing
Set bk = Nothing
Set ex = Nothing
Set so = Nothing
MsgBox("Finished!")

  • 質問者

    nor********さん

    2018/2/2116:05:41

    ありがとうございます。
    プログラム使えました。
    プログラムが使えるって素晴らしいことですね。

    ただ "1-5-2" という風に
    ” ”がついてしまうようで
    それを消してからコピペする作業が一つ増えました。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/2/22 15:31:13

素晴らしいと思いました。
こんなに良い方法で解決できるなんて、
ありがとうございました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tac********さん

2018/2/2011:54:04

下記をお試し下さい。

CSVをExcelで開くと文字列が数値になるのを防ぐ方法2つ(サンプルデータ付)
http://kouritu.net/csv-excel-error-prevent/



参考
エクセルではCSVデータを開く時の定義を保存する仕組みが無いようです、
毎回”文字列”に指定しないとならず実用に成りません。
その点アクセスでは読み込む詳細設定を保存する機能が有ります、業務として毎回繰り返すのであればアクセスに乗り換えるのも手です。

もっともエクセルでもCSVファイルをVBAを使ってデータの読み込みをすれば文字列として読み込む処理を自動化する事は出来ると思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Chiquilinさん

2018/2/2011:33:45

外部データの取り込み機能の [テキスト ファイル]から開けば
指定列の書式を設定しながら開くことができます。

「.csv」を「.txt」にリネームしてやれば [ファイル]→[開く]
でも同じことになります。

もしくはスタートメニューの「データベース(ODBC)」に
「Microsoft Access Text Driver (*.txt, *csv)」を追加して
外部データの取り込み機能の「その他のデータ ソース]
→[Microsoft Query]→作成したデータソースを指定

で指定フォルダのテキストファイルを指定して取り込めるよう
になります。この場合 接続を持続させることができます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

nan********さん

2018/2/2011:30:26

CSVファイルをダブルクリックして、Excelで開いた場合
Excelが勝手に予測した表示形式に変換します。

Excelを開いてから、CSVファイル(テキストデータ)を
文字列として取り込んでください。

参考にどうぞ
https://smarthr.jp/help/etc/217

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる