
No.4ベストアンサー
- 回答日時:
下記URLにアップしました。
標準モジュールに登録してください。https://ideone.com/L4fZyt
使用上の注意
1.マクロを登録したブックに空のシート("Sheet1")を作成しておいてください。そのシートを作業用として、以降使用します。
2.マクロ実行後、マクロのあるブックは自動的に閉じられます。
3.新規のブックのSheet1に読み込んだCSVファイルの内容が設定されます。
No.5
- 回答日時:
No4です。
問題点1
>またちなみにY列→「O」列に変更した場合
>If i = 15 Then attr(i) = xlTextFormat 'O列は文字形式
>でよろしいでしょうか?
If i = 14 Then attr(i) = xlTextFormat 'O列は文字形式
になります。0始まりなので、O列は14になります。
問題点2
>F列はエラーマークが付き2「0」落ち状です。
上記の意味がよくわかりません。
F列のCSVファイルの実際の値を提示していただけませんでしょうか。
上記の内容に一致するexcelのセルの状態の画像を提示していただけませんでしょうか。
問題点3
>大元のファイルをテキストファイルをどうなっているか確認するためテキストファイル開き確認したところ、F列Y列はカンマ区切りになっていました。
そもそもCSVファイルは、カンマ区切りのテキストファイルです。
F列Y列以外もカンマ区切りであれば、想定通りですが、他の列はカンマ区切りではないのでしょうか。
追伸:
こちらで、実行した時のF列の画像です。
左上の緑の三角マークのことをエラーマークと呼ばれてますか?

No.3
- 回答日時:
不明点です。
1.読み込み先は、VBA(マクロ)を格納してあるブック内のシートで良いのでしょうか。
2.その場合のシート名は何でしょうか。(どのシートに読み込みますか)
3.データはダブルクートで囲まれていますか。それとも囲まれていませんか。下記の①②のどちらでしょうか。
"ABCD","123","XYZ"・・・・①
ABCD,123,XYZ・・・・②
メモ帳で開いてみました。②です。
オフィスはエクセル2016をしようしています。
なので、データ→外部データの取り込み→テキストファイル→インポート→カンマ区切りのをいちいち行うのが面倒でマクロにできないかと思いました。
No.2
- 回答日時:
Sub ImportCSVwithFormatting()
Dim strFile As String
Dim strPath As String
Dim wb As Workbook
Dim ws As Worksheet
' CSV ファイル名を選択
strFile = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv), *.csv", Title:="Select CSV File")
If strFile = "False" Then Exit Sub
' CSV ファイルをエクセルに読み込む
strPath = Application.DefaultFilePath & "\"
Set wb = Workbooks.Open(strFile)
Set ws = wb.Sheets(1)
' F 列と Y 列を文字列形式に変換
ws.Range("F:F,Y:Y").NumberFormat = "@"
' 新規エクセルブックにシートを貼り付ける
ws.Copy
ThisWorkbook.Activate
ws.Paste
' 作業用ブックを閉じる
wb.Close False
End Sub
このコードは、CSV ファイルを選択して読み込んでから、F 列と Y 列の書式を文字列に変換します。次に、読み込んだシートを新しいエクセルブックに貼り付けます。このマクロを実行すると、所望の動作が行われます。
No.1
- 回答日時:
CSVファイルとして読み込むのなら、文字列は引用符で囲む必要があります。
引用符で囲まれていないものを文字列として扱いたいなら、一旦テキストファイルとして読み込んで、カンマで分割するくらいでしょうか。aaa,"bbb,BBB",ccc
のように、引用符で囲まれたカンマを含んだ文字列がデータ中にあり得るのなら、非常に面倒ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
このQ&Aを見た人はこんなQ&Aも見ています
-
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
EXCELからCSVへ変換すると0が消えてしまいます
Excel(エクセル)
-
-
4
【Excel VBA】先頭の「0」飛びを埋める方法
Visual Basic(VBA)
-
5
アクセスでcsvに出力した際、頭の0が消えてしまいます
Access(アクセス)
-
6
VBAを使って選択した範囲の数字(電話番号)の先頭に0を付ける方法が知りたいです。
Visual Basic(VBA)
-
7
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
8
エクセルvbaで転記したのですが、数字のゼロが消えてしまいます。 ゼロも転記するためにはどうしたらい
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
Excel VBAでOpenTextのFieldInfoが効かない・・
Excel(エクセル)
-
11
Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換さ
その他(Microsoft Office)
-
12
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
13
CSVファイルを開いた時の0落ち
Excel(エクセル)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
ExcelVBAからAccessMDB内のテーブル存在チェックをしたい
Visual Basic(VBA)
-
16
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
17
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
18
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
19
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
20
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VLOOKUPの列番号の最大は?
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
Excel/VBA ステップインと通常...
-
エクセル マクロ 範囲指定で...
-
VBA 指定した列にある日時デー...
-
エクセルで最初の行や列を開け...
-
最終行に合計(最終行が列によ...
-
エクセルのソートで、数字より...
-
エクセル 1つのシートを日付で...
-
エクセル マクロ 範囲の値を上...
-
【Excel VBA】列幅の設定
-
エクセルで選択した列のみテキ...
-
csvデータの列の入れ替えができ...
-
Excel マクロ ファイル名取得に...
-
アクセス 取り込み時に、桁数(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
VBAで別ブックの列を検索し、該...
-
エクセル マクロ 範囲の値を上...
-
VBAで重複データを合算したい(...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
エクセルマクロPrivate Subを複...
-
土日の列幅の自動変更を教えて...
-
最近急にVBAの処理速度が遅くな...
-
エクセルでセル12個間隔で合...
おすすめ情報
皆さまご回答ありがとうございます。
説明がたりず申し訳ありません。
大元CSVファイルを添付致します。
①大元のファイルは、システム上でダウンロードし、指定フォルダに保存されたCSVファイルとなっております。
②毎日ダウンロードするためファイル名(日付が入ったもの)は同一ではありません。
③マクロを実行した場合、実行は新規エクセルブックで開きたい
よろしくお願いします(*- -)(*_ _)ペコリ
高度なご回答ありがとうございます。
貼り付けて実行してみましたが、F列はエラーマークが付き2「0」落ち状です。
文字列には表示形式は変わっています。
大元のファイルをテキストファイルをどうなっているか確認するためテキストファイル開き確認したところ、F列Y列はカンマ区切りになっていました。
但し、これをデータ→外部データの取り込み→テキストファイル→インポート
→テキストファイルウィザード→(省略)カンマ→F列Y列を文字列に変更して読み込むと0落ちせず表示されるのですがこの作業が面倒で何か良いコードはないかと思った次第です。
またちなみにY列→「O」列に変更した場合
If i = 24 Then attr(i) = xlTextFormat 'Y列は文字形式
If i = 15 Then attr(i) = xlTextFormat 'O列は文字形式
でよろしいでしょうか?
ご回答ありがとうございます。
動きましたが、やはり0落ちしたままです。
更に、元ファイルをメモ帳で開いて元データを確認したところ「カンマ」で区切られていました。
Excelより手動で外部データ取り込み→テキスト→インポート・・・の作業が面倒でマクロでできないかと考えています。
ちなみに、Y列→P列に変更した場合は
' F 列と P 列を文字列形式に変換
ws.Range("F:F,P:P").NumberFormat = "@"
でよろしいでしょうか?