Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


266 / 13645 ツリー ←次へ | 前へ→

【81267】CSVのヘッダーだけExcelで表示させるには VBA初心者です 20/4/29(水) 0:59 質問[未読]
【81269】Re:CSVのヘッダーだけExcelで表示させるには マナ 20/4/29(水) 8:19 発言[未読]
【81270】Re:CSVのヘッダーだけExcelで表示させるには VBA初心者です 20/4/29(水) 10:22 発言[未読]
【81271】Re:CSVのヘッダーだけExcelで表示させるには マナ 20/4/29(水) 10:57 発言[未読]
【81272】Re:CSVのヘッダーだけExcelで表示させるには VBA初心者です 20/4/29(水) 11:34 発言[未読]
【81273】Re:CSVのヘッダーだけExcelで表示させるには VBA初心者です 20/4/29(水) 23:00 お礼[未読]

【81267】CSVのヘッダーだけExcelで表示させるには
質問  VBA初心者です  - 20/4/29(水) 0:59 -

引用なし
パスワード
   ExcelでCSVを読み込むサンプルを使用して、CSVを読み込めるようになりました。

そのコードをふまえて、
「シート2」にCSVのヘッダーのみ出力したいのですが可能でしょうか?
また、処理後に「シート2」を表示した状態にしたいです。

現在使用のコードは

 Dim filepath As String
 With Application.FileDialog(msoFileDialogOpen)
  .AllowMultiSelect = False
  .Filters.Clear
  .Filters.Add "CSVファイル(*.csv)", "*.csv", 1
  .InitialFileName = ThisWorkbook.Path & "\"
  .Show
  
  If .SelectedItems.Count = 0 Then
   End
  End If
  
  filepath = .SelectedItems(1)
 End With
 
 Dim WS As Worksheet
 Set WS = ReadCSV.ReadCSV(filepath:=filepath, OutputWorksheet:=Worksheets("シート2"), OutputRow:=1)

上記となります。

どうぞ宜しくお願い致します。

【81269】Re:CSVのヘッダーだけExcelで表示させる...
発言  マナ  - 20/4/29(水) 8:19 -

引用なし
パスワード
   ▼VBA初心者です さん:

ReadCSVが、どんなものか不明です?

【81270】Re:CSVのヘッダーだけExcelで表示させる...
発言  VBA初心者です  - 20/4/29(水) 10:22 -

引用なし
パスワード
   扱うCSVが複数(7種類くらい)ありまして、項目(列)が数十件、レコード(行)が数千〜数万件のものです。
ヘッダーに項目目が入っているのですが似たような項目が順番が違っていたりするので、開いてみてもパッと見では何のファイルかわからないんです。

なので、今はCSVをテキストで開いて1行目だけコピーして、用意しておいたヘッダーと照合をかけているのですが、行が多いと開くだけでも時間がかかるので、これをなんとかもう少し簡単にならないかと思いまして質問させていただきました。

【81271】Re:CSVのヘッダーだけExcelで表示させる...
発言  マナ  - 20/4/29(水) 10:57 -

引用なし
パスワード
   ▼VBA初心者です さん:


>そのコードをふまえて、

そのコード(ReadCSV)がわからないと…
という意味です。

こんな感じでどうなりますか

Dim buf As String, s

Open filepath For Input As #1
Line Input #1, buf
Close #1

s = Split(buf, ",")
Worksheets("シート2").Cells(1).Resize(, UBound(s) + 1).Value = s

【81272】Re:CSVのヘッダーだけExcelで表示させる...
発言  VBA初心者です  - 20/4/29(水) 11:34 -

引用なし
パスワード
   あ!すいません。無知なものであれで完結なのかと思っていました。
サンプルを見ながらコードを打ったのではなくて、Excelごとダウンロードしたので構造がわかってなかったのですが、別のモジュールにとんでもなく長いコードが入っていました。
今回ダウンロードしたものは全部を表示させるものなので「ふまえて」ではなくて1から作ったほうが良いのかもしれません。

ReadCSV の記載があるのは・・・

Public Function ReadCSV(ByRef filepath As String, _
  Optional ByRef OutputWorksheet As Worksheet, _
  Optional ByRef TextColumns As String = "", _
  Optional ByRef SkipColumns As String = "", _
  Optional ByRef ColumnNumberFormats As Object = Nothing, _
  Optional ByRef ReadHeader As Boolean = True, _
  Optional ByVal OutputRow As Long = 1, _
  Optional ByVal OutputColumn As Long = 1, _
  Optional ByRef Delimiter As String = ",", _
  Optional ByRef Charset As String = mc_AutoDetectString, _
  Optional ByRef Quote As String = """", _
  Optional ByRef LineEndingCode As String = mc_AutoDetectString, _
  Optional ByRef AutoFit As Boolean = True) As Worksheet

 Dim CSV As Variant
 CSV = ReadCSVToArray2D(filepath, SkipColumns, ReadHeader, Delimiter, Charset, Quote, LineEndingCode)
 
 If OutputWorksheet Is Nothing Then
  Set OutputWorksheet = Worksheets.Add
 End If
 
 Call Array2DToWorksheetWithColumnFormat(OutputWorksheet, CSV, TextColumns, SkipColumns, ColumnNumberFormats, OutputRow, OutputColumn, AutoFit)
 
 Set ReadCSV = OutputWorksheet
End Function

上記になっておりますが、これ以外にも沢山記述がありました・・・

上記がわからない中、先程お教えいただいたコードがどういった意味を持つものか調べてみます・・・

お手数をおかけしてしまいすいません・・・

【81273】Re:CSVのヘッダーだけExcelで表示させる...
お礼  VBA初心者です  - 20/4/29(水) 23:00 -

引用なし
パスワード
   ありがとうございます!!!出来ました!!
今回とにかく一行目だけそのまま取り込めれば良かったのでなんとか出来ました!
サンプル等を調べてもなかなか合うものがなかったので助かりました。
ありがとうございます。
ちょっとずつ出来る事が増えていって思い通りにいろいろ作れるように勉強していきたいと思います。
ありがとうございました。

266 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free