Excel VBA質問箱 IV

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

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


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

【53875】複数のCSVファイルについて TKM 08/2/13(水) 11:12 質問[未読]
【53876】Re:複数のCSVファイルについて neptune 08/2/13(水) 11:43 発言[未読]
【53879】Re:複数のCSVファイルについて 今日も暇人 08/2/13(水) 16:05 発言[未読]
【53884】Re:複数のCSVファイルについて TKM 08/2/13(水) 17:27 お礼[未読]

【53875】複数のCSVファイルについて
質問  TKM  - 08/2/13(水) 11:12 -

引用なし
パスワード
   はじめまして。
複数のCSVファイルについてです。
過去ログを見てチャレンジしてみたのですが、 どうしてもうまくいかず
皆さんの力をお貸しください。

 csvファイル"00000001"から"00000100"までbook1の特定の表にデータを抽出するマクロを作ってみたのですが、1行目が00000001の値、2行目が00000002の値となるようにしたいのですが。
説明不足かもしれませんが、何かいい方法ありませんでしょうか?
よろしくお願いいたします。

Dim myFLName As String
Dim csvfile As String
Dim 範囲 As Range
Dim a As Variant 
Dim d As Variant
  
  csvfile = Dir(ThisWorkbook.Path & "\00000001.csv")
  
  If csvfile = "" Then
  
  MsgBox "シートがありません", vbInformation, "確認してください"
  Exit Sub
  
  Else
  
  myFLName = ThisWorkbook.Path & "\00000001.csv"
  Workbooks.Open Filename:=myFLName
  
  End If  
  
  For Each a In Array(2, 7, 9, 11, 27, 29, 31, 33, 37)
  
    Windows("00000001.csv").Activate
    Set 範囲 = Worksheets("00000001").Range("a8:d27")

    値 = Application.WorksheetFunction.VLookup(a, 範囲, 4)

    Windows("book1").Activate
   
      If a = 2 Then
        ActiveCell.Offset(rowoffset:=2, columnoffset:=-48).Activate
        ActiveCell.Formula = 値
      Else
        ActiveCell.Offset(columnoffset:=1).Activate
        ActiveCell.Formula = 値
      End If

  Next a
  
    ActiveCell.Offset(columnoffset:=11).Activate
   
  For Each d In Array(14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 50)
  
    値 = Application.WorksheetFunction.VLookup(d, 範囲, 4)
   
      If d = 14 Then
        ActiveCell.Formula = 値
      Else
        ActiveCell.Offset(columnoffset:=1).Activate
        ActiveCell.Formula = 値
      End If

  Next d


Windows("00000001.csv").Activate
ActiveWorkbook.Close SaveChanges:=False

End Sub

【53876】Re:複数のCSVファイルについて
発言  neptune  - 08/2/13(水) 11:43 -

引用なし
パスワード
   ▼TKM さん:
こんにちは

> csvファイル"00000001"から"00000100"までbook1の特定の表にデータを抽出するマクロを作ってみたのですが、1行目が00000001の値、2行目が00000002の値となるようにしたいのですが。
>説明不足かもしれませんが、何かいい方法ありませんでしょうか?
すみません。コードは見てないのですが、
>csvファイル"00000001"から"00000100"
は、00000001.csv から 00000100.csv という事ですね?

>1行目が00000001の値、2行目が00000002の値となるようにしたいのですが。
これは何の1行目、2行目なんでしょう?

Activecellに対して作業をしているようですが、Activecellが特定の
セルであるという保障がないようです。

#読む気が失せてしまいますのでソースにコメントはつけて置いて下さいね。
私は自分の為にもコメントは付けます。すぐ忘れますから。

【53879】Re:複数のCSVファイルについて
発言  今日も暇人  - 08/2/13(水) 16:05 -

引用なし
パスワード
   今日も暇人です
ご苦労されているようなので

Sub Torikomi()

Dim i    As Long
Dim F_Nb   As String
Dim MyFName As Workbook
Dim CsvFile As String
Dim 範囲  As Range

i = 1
For i = 1 To 3        ’確認用に100を3に変更
  F_Nb = Format(i, "000")
  CsvFile = Dir(ThisWorkbook.Path & "\00000" & F_Nb & ".csv")
  If CsvFile = "" Then
    MsgBox F_Nb & "はありません", vbInformation, "確認してください"
    Exit Sub
  Else
    Set MyFName = Workbooks.Open(CsvFile)
  End If
  Set 範囲 = MyFName.ActiveSheet.Range("A8:D27")

'  ・
'  ・
'  ・処理
'  ・
'  ・
  MyFName.Close

Next i
   
End Sub

今回はコメントは書きません。TKM さんが書いてみてください。
neptuneさんと同じく、自分と自分以外の人がメンテするためには書いています。

>Windows("book1").Activate
>If a = 2 Then
>   ActiveCell.Offset(rowoffset:=2, columnoffset:=-48).Activate

でActivateされる前にActivateされているCellが解りません。
操作ファイル?のAW列より右なのはわかりますが…。

やっぱりコメントの代わりにコードのイメージを
ThisWorkbookと同じところに有るcsvファイルを00000001から00000003まで
一つずつMyFNameとあだ名をつけて、開きます。
MyFNameを開いたときにActiveなSheetのRange("A8:D27")を 範囲 とあだ名をつける
もし、00000***.csv ファイルが無かったら、マクロ中止です。

*投稿したのを一回消して投稿しなおしました。
前回のコード試してたらすみません。m(__)m

【53884】Re:複数のCSVファイルについて
お礼  TKM  - 08/2/13(水) 17:27 -

引用なし
パスワード
   早速のお返事ありがとうございます。
根本的なところ(コメント等)から見直して、教えていただいたソースを参考にしてもう一度チャレンジしてみます。
また何かわからないことがあれば再度質問するかもしれませんが、
そのときはよろしくお願いいたします。
ありがとうございました。

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