Excel VBA質問箱 IV

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

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


10547 / 13646 ツリー ←次へ | 前へ→

【21199】複数のcsvファイルから1つのExcelファイ... Aiz 05/1/14(金) 15:37 質問[未読]
【21202】Re:複数のcsvファイルから1つのExcelファ... Jaka 05/1/14(金) 15:53 回答[未読]
【21205】Re:複数のcsvファイルから1つのExcelファ... Aiz 05/1/14(金) 16:53 お礼[未読]

【21199】複数のcsvファイルから1つのExcelファイ...
質問  Aiz  - 05/1/14(金) 15:37 -

引用なし
パスワード
   2つのcsvファイルを以下のように、1つのExcelファイルの別シートに貼り付けたいのです。
testA.csv→testC.exlのsheet1
testB.csv→testC.exlのsheet2
それで、作ってみたのですが、アクティブでないsheetだとエラーが出るみたいなのです(エラーの出るシートをアクティブにすると正常に処理される)
過去ログにWithを使うといいと書いてあったのですが、どうもうまくいきません。
何かいい方法があれば教えてください。よろしくお願いします。

testA.csvのデータ
12    本部    1    本部 10:00    0

testB.csvのデータ
21    大阪    2    本部 12:00    5

testC.exlのソース

Const csv1 = "A.csv"
Const csv2 = "B.csv"

Sub Auto_Open()
  Dim fname As String
  Dim fno As Integer
  Dim col(0 To 4) As Variant
  Dim i As Integer
  Dim sts As String
  
  'ファイル名
  fname1 = ActiveWorkbook.Path & "\" & csv1
  fname2 = ActiveWorkbook.Path & "\" & csv2
  
  'testA.csvの処理   <--------ここの処理でSheet1に貼り付けたい
  'CSVファイルの内容を貼り付ける
  fno = FreeFile
  On Error GoTo file_not_found
  Open fname1 For Input As #fno
  On Error GoTo 0
  l = 3
  Do Until EOF(fno)
    '一旦String型で受けてVariant型に入れなおす
    For i = 0 To 4
      Input #fno, sts
      col(i) = sts
    Next
    l = l + 1
    
    With Worksheets("sheet1")
      .Range(Cells(l, 2), Cells(l, 6)).Value = col
    End With
  Loop
  Close #fno
  
  'testB.csvの処理   <--------ここの処理でSheet2に貼り付けたい
  'CSVファイルの内容を貼り付ける
  fno = FreeFile
  On Error GoTo file_not_found
  Open fname2 For Input As #fno
  On Error GoTo 0
  l = 3
  Do Until EOF(fno)
    '一旦String型で受けてVariant型に入れなおす
    For i = 0 To 4
      Input #fno, sts
      col(i) = sts
    Next
    l = l + 1
    With Worksheets("sheet2")
      .Range(Cells(l, 2), Cells(l, 6)).Value = col
    End With
  Loop
  Close #fno
  
  'オートフォーマット
  Cells(4, 2).CurrentRegion.AutoFormat _
    Format:=xlRangeAutoFormatLocalFormat3, _
    Number:=False, _
    Font:=False, _
    Alignment:=False
  
  'CSVファイルを削除する
  Kill fname1
  Kill fname2
  
  Exit Sub
  
file_not_found:
  MsgBox "CSVファイルが見つかりません", vbCritical + vbOKOnly, "システムエラー"

End Sub

【21202】Re:複数のcsvファイルから1つのExcelフ...
回答  Jaka  - 05/1/14(金) 15:53 -

引用なし
パスワード
   こんにちは。

すみません。
前に確認しなかった。
どこのCellsだか解らないから

正解

With Worksheets("sheet1")
  .Range(.Cells(l, 2), .Cells(l, 6)).Value = col
End With

With Worksheets("sheet2")
  .Range(.Cells(l, 2), .Cells(l, 6)).Value = col
End With


ここもどこのシートだかちゃんと指定してください。

  'オートフォーマット
  Cells(4, 2).CurrentRegion.AutoFormat _
    Format:=xlRangeAutoFormatLocalFormat3, _
    Number:=False, _
    Font:=False, _
    Alignment:=False

【21205】Re:複数のcsvファイルから1つのExcelフ...
お礼  Aiz  - 05/1/14(金) 16:53 -

引用なし
パスワード
   できました!ありがとうございます!
また何かありましたらよろしくお願いします。

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