Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Subscrito Fora do intervalo


andregiordano43

Pergunta

Bom dia,

Estou tentando realizar um comando simples no VBA que abre diferentes arquivos dentro de uma mesma pasta, com o seguinte código:

Sub TESTE()
Nomes = Array("Jose", "Mario", "Pedro", "Paulo", "Rafael")
For i = 1 To 5
Arquivo = "F:\" & Nomes(i)
Workbooks.Open (Arquivo)
Next i
End Sub

Porém ele está me apresentando o seguinte erro:

"Erro em tempo de execução 9

Subscrito Fora do intervalo"

Alguém pode me ajudar??

Obrigado!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Os arrays começam em 0, não em 1. Tente trocar essa linha:

For i = 1 To 5
Por:
For i = 0 To 4
Se desejar, pode obter a posição em que o array termina a partir da função UBound, não precisando assim saber o tamanho dele. Exemplo:
For i = 0 To UBound(Nomes)

Poste aí se conseguiu ou não resolver.

Link para o comentário
Compartilhar em outros sites

  • 0

Perdão cara,

Na verdade quando postei que estava resolvido eu tinha testado com o exemplo que tinha postado anteriormente.

O erro voltou a acontecer quando alterei o código do meu programa!

A linha que da erro é a seguinte:

Windows(Arquivo).Activate
Windows(Arquivo).Close

Quero que quando o arquivo não tenha conteúdo ele feche a janela.

Mas parece que a variável não está funcionando direito.

Dá erro quando tenho ativar a janela. (que assumiu o valor da variável)

O que você acha que pode ser??

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Nomes = Array("Jose.xls", "Mario.xls", "Pedro.xls", "Rafael2.xls", "Rafael3.xls")
    For i = 0 To UBound(Nomes)
    Arquivo = "G:\" & Nomes(i)
    Workbooks.Open (Arquivo)
    
        
'Seleciona somente linhas com dados e cola especial na Planilha Consolidado.xls
'Abrindo 1º Arquivo
    'Workbooks.Open ("G:\Rafael2.xls"), , True
    If Range("B7") <> "" Then
        Range("B7:H7").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Windows("Consolidado.xls").Activate
        Range("A65536").Select
        Selection.End(xlUp).Select
        ActiveCell.Offset(1, 0).Activate
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        'Copiando nome do técnico
        Windows(Arquivo).Activate
        Range("B1").Select
        Selection.Copy
        Windows("Consolidado.xls").Activate
        Range("A65536").Select
        Selection.End(xlUp).Select
        ActiveCell.Offset(0, 7).Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            Do While ActiveCell.Offset(-1, 0) = ""
               ActiveCell.Offset(-1, 0).Activate
               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
               :=False, Transpose:=False
            Loop
        'Copiando Data
        Windows(Arquivo).Activate
        Range("D1").Select
        Selection.Copy
        Windows("Consolidado.xls").Activate
        Range("A65536").Select
        Selection.End(xlUp).Select
        ActiveCell.Offset(0, 8).Activate
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
            Do While ActiveCell.Offset(-1, 0) = ""
               ActiveCell.Offset(-1, 0).Activate
               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
               :=False, Transpose:=False
            Loop
        Windows(Arquivo).Close
    Else
    Range("A1").Select
    Windows(Arquivo).Activate
    Windows(Arquivo).Close
    End If
        
    Next i

O que ele faz basicamente é ver se na célula B7 tem conteúdo, se não tiver ele fecha (ou deveria fechar..) o arquivo.

A linha onde eu abria o arquivo atraves de uma referencia fixa está comentada, justamente porque agora eu peciso que isso não seja mais fixo, para abrir os outros arquivos.

Abraços!!

Link para o comentário
Compartilhar em outros sites

  • 0

Você vai precisar salvar o arquivo aberto numa variável para depois trabalhar com ele.

Algo mais ou menos assim:

dim var as workbook
set var = Workbooks.Open (Arquivo)

E depois, ao invés de utilizar Windows(Arquivo), deve utilizar var. Por exemplo, Windows(Arquivo).Close vira var.Close.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...