Excel Erro de tempo de execução VBA 9 subscrever fora do intervalo

0

Ao fechar a pasta de trabalho que estou recebendo:

Run-time error 9 subscript out of range

Este é o código do VBA:

Set wbk = Workbooks.Open(path & filename)
  wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
  ThisWorkbook.Sheets(sheetname).Range("b6").Resize(1, col_count).PasteSpecial xlPasteValues
wbk.close

Alguém pode me ajudar a sair desse erro?

    
por user578784 04.04.2016 / 12:31

2 respostas

1

Esse tipo de erro indica que você está fazendo referência a uma célula ou intervalo . No seu caso, acho que o problema não está se fechando, mas em uma dessas linhas:

  wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
  ThisWorkbook.Sheets(sheetname).Range("b6").Resize(1, col_count).PasteSpecial xlPasteValues

Verifique se sheetname , row_count e col_count contêm um valor válido.

    
por 04.04.2016 / 12:50
0

Por que você está usando o método ".Resize" na pasta? A maneira que eu vejo é que você está tentando copiar o intervalo de, digamos, células 3x4 e colá-las em células 1x4. Isso não é possível. Experimente sem redimensionar a colagem:

Set wbk = Workbooks.Open(path & filename)
  wbk.Sheets(sheetname).Range("b6").Resize(row_count, col_count).Copy
  ThisWorkbook.Sheets(sheetname).Range("b6").PasteSpecial xlPasteValues
wbk.close

Eu vi em outro post uma maneira de copiar dados de várias planilhas em uma só:

Public Sub CopyMultipleData()
    Dim ws  As Worksheet, LR1 As Long, LR2 As Long
    Application.ScreenUpdating = False
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Master" Then
            LR1 = Sheets("Master").Range("A" & Rows.Count).End(xlUp).row + 1
            LR2 = ws.Range("D" & Rows.Count).End(xlUp).row
            ws.Range("A1:J" & LR2).Copy Destination:=Sheets("Master").Range("A" & LR1)
        End If
    Next ws
    Application.ScreenUpdating = True
End Sub
    
por 04.04.2016 / 12:49