Excel VBA質問箱 IV

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

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


19190 / 76734 ←次へ | 前へ→

【62980】Re:VBAでCSVを連結してをXLSで保存
発言  kanabun  - 09/9/29(火) 0:11 -

引用なし
パスワード
   ▼YUKI さん:

ついでに(といっては何ですが)
ぼくが最初に考えていた処理の流れを紹介しておきます。
(CSVファイルの結合を行わず、個々のCSVファイルを指定シートに
 順番に インポートしていく方法です)

'最初に考えていた方法
(仮定)各CSVファイルには 列見出しがあると考えています。
    1つめのCSVをシートに書き出すときは、この列見出しを含めて
    1行目から書き出します。
    2つ目以降のCSVは 2行目からインポートしています。

Sub 複数CSVファイルのインポート()
  Dim fs As Object, fd As FileDialog
  Dim fStr As String, fName As Variant
  Dim i As Long, fCount As Long

  '結合するCSVファイルの選択
  Set fd = Application.FileDialog(msoFileDialogFilePicker)
  With fd
    .AllowMultiSelect = True
    .Title = "データ選択(ファイル参照)"
    .Filters.Add "CSVファイル", "*.csv"
    If .Show = 0 Then Exit Sub
    fCount = .SelectedItems.Count
    If fCount < 2 Then
      MsgBox "データを複数選んでください"
      Exit Sub
    End If
  End With
  
  '指定CSVを2枚目のシートにインポートする
  Dim iRow As Long    'Importするシート行番号
  Dim WS As Worksheet
  Set WS = Worksheets.Add(After:=Worksheets(1))
  For i = 1 To fCount
    CSVのインポート fd.SelectedItems(i), WS, iRow
  Next
  
  '名前を付けてXLS形式で保存
  fName = LCase$(fd.SelectedItems.Item(1))
  fName = Replace(fName, ".csv", ".xls")
  fName = Application.GetSaveAsFilename( _
    InitialFileName:=fName, FileFilter:="Book,*.xls")
  If fName = False Then Exit Sub
  Application.EnableEvents = False
  ActiveWorkbook.SaveAs fName, FileFormat:=xlNormal
  Application.EnableEvents = True
End Sub

Sub CSVのインポート(CSVname, ByVal WS As Worksheet, iRow As Long)
 iRow = iRow + 1
 With WS
  With .QueryTables.Add(Connection:= _
    "TEXT;" & CSVname, Destination:=WS.Cells(iRow, 1))
    .Name = "foo"          'iRow : Sheet書き出し行
    .FieldNames = True
    .AdjustColumnWidth = True
    .TextFilePlatform = 932
    .TextFileStartRow = 1 - (iRow > 1) 'Text Import開始行
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    WS.Names(.Name).Delete
    .Delete
  End With
  iRow = .Cells(.Rows.Count, 1).End(xlUp).Row
 End With
End Sub

5 hits

【62965】VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 0:52 質問
【62967】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 9:02 発言
【62968】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 9:37 発言
【62973】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 15:37 発言
【62974】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 16:55 発言
【62975】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 17:45 発言
【62976】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 18:35 お礼
【62977】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/28(月) 18:49 発言
【62978】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/28(月) 18:53 お礼
【62980】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/29(火) 0:11 発言
【62987】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/29(火) 18:53 お礼
【63004】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/9/30(水) 17:48 質問
【63006】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:32 発言
【63007】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:35 発言
【63008】Re:VBAでCSVを連結してをXLSで保存 kanabun 09/9/30(水) 19:52 発言
【63047】Re:VBAでCSVを連結してをXLSで保存 YUKI 09/10/4(日) 6:04 お礼

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