0

VBA コードにいくつか問題があります。これは私がやりたいことです:

  1. シートからパスを取得 (入力)
  2. 関連するブックを開く
  3. 高度なフィルターを使用して、開いている 60 を超えるファイルの必要な列のみを元のファイルにコピーします。
  4. ファイルを閉じる

これまでのところ、コードが部分的にハードコーディングされていて、肥大化していることは承知していますが、無視してください。

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
4

1 に答える 1