|
こんにちは、VBA初心者です。
過去のファイルを管理しやすいように、VBAにて検索&表示画面を作ろうかと思ったんですが、うまくいきません。。
色々なサイトで紹介されているプログラミングを参考に、以下のコードを作成しました。
複数個ある、過去ファイルから条件に合う行をそれぞれ一行ずつコピーして一覧を作成したいのですが、フィルタまではうまく動くのですが、タイトル行を削除しようとするとエラーになります。
(下記プログラムで★の部分)
どうやら原因はtbl.Rows.Count の値が1になっているようなのですが、最後の「 Workbooks(b4Table.Name).Close SaveChanges:=False」をコメントアウトして、ファイルを表示してみるとタイトル行以外にも一行表示されています。。。
VBA上級者の皆様の力を貸して下さい。よろしくお願いします!
ちなみにExcel2007を使ってます。
Sub display()
Dim b4Table As Object
Dim fso As Object
Dim CasNo, Row As Integer
Dim CalNo As String
Set fso = CreateObject("Scripting.FileSystemObject")
Row = 7
Application.ScreenUpdating = False
For Each b4Table In fso.GetFolder(ThisWorkbook.Path & "\before\").Files
CalNo = "A" & Row
Workbooks.Open Filename:=ThisWorkbook.Path & "\before\" & b4Table.Name
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
Workbooks(b4Table.Name).Worksheets(1).Range("1:500").AutoFilter _
field:=5, Criteria1:=ThisWorkbook.Worksheets(1).Range("C2")
Range(CalNo).CurrentRegion.Select
Set tbl = Range(CalNo).CurrentRegion.SpecialCells(xlCellTypeVisible)
MsgBox ("tbl.Rows.Count = " & tbl.Rows.Count)
★tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select
tbl.Copy ThisWorkbook.Worksheets(1).Range(CalNo)
tbl.AutoFilter
Workbooks(b4Table.Name).Close SaveChanges:=False
Row = Row + 1
Next
Application.ScreenUpdating = True
Set fso = Nothing
End Sub
|
|