VBA コードにいくつか問題があります。これは私がやりたいことです:
- シートからパスを取得 (入力)
- 関連するブックを開く
- 高度なフィルターを使用して、開いている 60 を超えるファイルの必要な列のみを元のファイルにコピーします。
- ファイルを閉じる
これまでのところ、コードが部分的にハードコーディングされていて、肥大化していることは承知していますが、無視してください。
vba を実行すると、ランタイム エラー 438 が表示されます。 (プロパティまたはメソッドがサポートされていません) 高度なフィルター行で。
これは私のコードです:
Public strFileName As String
Public currentWB As Workbook
Public dataWB As Workbook
Public strCopyRange As String
Public rngFiltro As Variant
Sub PrendiDati()
Dim strListSheet As String
Dim rngFonte As Variant
strListSheet = "input"
'On Error GoTo ErrH
Application.Calculation = xlCalculationManual
ActiveWorkbook.Worksheets("SCADENZIARIO").Range("A2:R15000").Clear
Sheets(strListSheet).Select
Range("b6").Select
'this is the main loop, we will open the files one by one and copy their data into the masterdata sheet
Set currentWB = ActiveWorkbook
strFileName = ActiveCell.Offset(0, 1) & ActiveCell.Value
strCopyRange = ActiveCell.Offset(0, 2) & ":" & ActiveCell.Offset(0, 3)
strWhereToCopy = ActiveCell.Offset(0, 4).Value
strStartCellColName = Mid(ActiveCell.Offset(0, 5), 2, 1)
Application.Workbooks.Open strFileName, UpdateLinks:=False
Set dataWB = ActiveWorkbook
dataWB.Worksheet(1).Range("Database").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=currentWB.Sheets("SCADENZIARIO").Range("A1")
Application.CutCopyMode = False
dataWB.Close False
Sheets(strListSheet).Select
Exit Sub