特定のファイル名が "normal-item-stock" を含むCSVのセル内に改行があるため、一気にexcelに取り込みすると、データがぐちゃぐちゃになります。
特定のファイル名が "normal-item-stock" を含むCSVファイルから1列目のデータをExcelのshoplistというシートのA列に取り込み、75列目をB列、82列目をC列に取り込みたいです。
Dim ws As Worksheet
Dim SelFile As Variant
SelFile = Dir(ThisWorkbook.Path & "\" & "normal-item-stock*.csv")
Set ws = Worksheets("shoplist") ' CSV のデータを取り込むシート
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
スマートな方法は他にもあると思いますが、CSVをテキストファイルとして取り込み、エクセルのデータの区切り位置をカンマ指定しながら、指定のエリアを「文字列」に設定した後、必要な部分のみ残せば、まずは第一弾のデータが出来るんじゃないでしょうか。
No.2
- 回答日時:
でやってみてください。
Sub ImportCSVData()
Dim ws As Worksheet
Dim SelFile As Variant
Dim filePath As String
Dim rowNum As Long
' 対象のシートを設定
Set ws = Worksheets("shoplist")
' CSVファイルを選択
SelFile = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv", Title:="CSVファイルを選択")
' キャンセルされた場合は処理終了
If SelFile = "False" Then
Exit Sub
End If
' ファイルパスを取得
filePath = SelFile
' CSVファイルからデータを取り込む
With ws
' 列Aに1列目のデータを取り込む
.Columns("A").ClearContents
With .QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=.Range("A1"))
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileCommaDelimiter = True
.Refresh
End With
' 列Bに75列目のデータを取り込む
.Columns("B").ClearContents
For rowNum = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(rowNum, 2).Value = .Cells(rowNum, 75).Value
Next rowNum
' 列Cに82列目のデータを取り込む
.Columns("C").ClearContents
For rowNum = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(rowNum, 3).Value = .Cells(rowNum, 82).Value
Next rowNum
End With
End Sub
No.3
- 回答日時:
こんにちは
>一気にexcelに取り込みすると、データがぐちゃぐちゃになります
どのような読み方をなさっているのか不明ですが、普通に直接エクセルで読み込んだ場合の話と解釈しました。
エクセルで読めるタイプのルールのCSVであれば、セル内改行があっても問題なく読み込めるはずですので、ご質問のCSVファイルは異なるルールで記述されているものと推測されます。
どのようなルールで記述されているのかはご質問文からは不明なので、具体的な方法を記すことはできませんけれど、記述ルールを調べることで解決できるのではと思います。
文字化けはしていないようですから(=言及されていないので)、文字コードはShift-JIS等であると思いますが、そちらも念のためご確認を。
ちなみに、「エクセルで読めるタイプのルール」とは、
基本的に、セル区切りは(CSVなので)カンマ、改行(=次の行)はCrLfになっているはずです。
エクセル上でのセル内改行はLfコードで、CSVでの記述も同様です。
また、セル内改行を含むセルデータは全体をダブルクォーテーションで囲っておく必要があります。
カンマを含む文字列等も(当然ですが)クォーテーションで囲います。
この辺りの記述ルールが異なると、まとめて読み込ませた場合に別の解釈をされる可能性があり、結果として表示が乱れることになると考えられます。
そのような場合でも、TextStream等で読み込んで、そのルールに即した解釈をすれば処理は可能だと思われます。
まずは、以下あたりを中心に対象のCSVを調べてみれば、どのように対処すれば良いかがわかるでしょう。
・改行コードには何が使用されているか
・セル内改行のコードには何が使用されているか
・セル内改行を含む文字列はダブルクォーテーションで囲われているか
など。
(対象のCSVをテキストファイルとして開けば、だいたいはわかるでしょう)
解釈の方法がわかれば、文字コードを置換えるなり、あるいはそれに応じた読み込み方をすることで解決するものと想像します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessでexcelデータを一部変換してインポートするVBAコードを教えてください。 2 2021/12/14 08:31
- Visual Basic(VBA) VBA CSV取り込みについて 3 2021/12/30 22:40
- その他(Microsoft Office) 横1行のデータを3つずつ3列に変換したい(マクロ初心者) 4 2021/12/17 15:03
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) マクロを修正できないものか、統合シートについて 3 2021/12/07 09:26
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excelセルに入力された文字の色を変える方法を教えてください
Visual Basic(VBA)
-
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
-
4
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
5
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
6
A列B列どちらにもあるのを抽出する
Visual Basic(VBA)
-
7
VBA コード
Visual Basic(VBA)
-
8
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
-
9
Cellsのコードが打てません
Visual Basic(VBA)
-
10
郵便番号検索APIにてget ElementByTagNameでうまくを取得できない
Visual Basic(VBA)
-
11
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
12
エクセルVBAでデータ転記
Visual Basic(VBA)
-
13
自動VBAマクロって会社の中で禁止なんですか?
Visual Basic(VBA)
-
14
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
15
VBAのコードを教えてください
Visual Basic(VBA)
-
16
ExcelのVBAコードを教えて頂けますでしょうか。 例シート2つがあります。 シート1は元データ
Visual Basic(VBA)
-
17
フォルダを自動作成・移動を複数ファイルに対して行うバッチ処理について
その他(プログラミング・Web制作)
-
18
VBA 二つのブックをうまく扱えないでいます
Visual Basic(VBA)
-
19
Excel VBA ダブルクリックで入力 複数まとめる
Visual Basic(VBA)
-
20
お世話になります。 Excel VBAのプログラムについてご教授をお願いいたします。 添付した写真よ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
VBAでcsvファイルを読み込んで...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
Visual C++によるcsvファイルの...
-
Excelでcsvのフィールドが減る
-
データ解析ソフトRでのファイル...
-
vb2010でCSVファイルを並び替え...
-
CSVの読み込み処理について
-
Csvから1行ずつ変数に格納する...
-
csvファイルのデータの一部を取...
-
巨大なCSVの加工(指定列のみの...
-
CSVファイル作成
-
バッチでCSVを処理する時、空の...
-
COBOL85でのCSVファ...
-
マクロから出力されるcsvのダブ...
-
CSV形式での保存時に”文字列...
-
CSVファイルを折れ線グラフ化す...
-
csvファイルでの日付設定「yyyy...
-
エクセル形式のファイルの読み込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
csvファイルでの日付設定「yyyy...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルを列数ごとに分割す...
-
csvファイルのデータの一部を取...
-
エクセル形式のファイルの読み込み
-
エクセルVBA 大容量CSVファイル...
-
CSVファイル作成
-
EXCEL|csvで保存→開くcsvを閉じる
-
CSVファイルの項目行を削除...
-
巨大なCSVの加工(指定列のみの...
-
データ解析ソフトRでのファイル...
-
VBAでCSVファイルのデータを集...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
【エクセル マクロ】読み込ん...
おすすめ情報
回答ありがとうございました。A1、B1、C1は正しいデータを取りこめましたが。D1からがわけわからないです。CSVを1列ごとをA列に 75列ごとをB列に、82列ごとをC列にしたいです。お願いします。