Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Erro em tempo de execução 9 ao usar Set Workbook

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Osbont
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Jun 07, 2018 11:13 am

Erro em tempo de execução 9 ao usar Set Workbook

Mensagem por Osbont »

Olá!

Adaptei uma macro para selecionar uma planilha, abri-la e copiar a plan1 para a plan1 de outra planilha (será copiado sempre para "Requisição ao Compras (AbrirArquivo3).xlsm").

Já tentei de resolver mas dá erro em tempo de execução 9: Subscrito fora do intervalo.

A linha que dá erro é:
Set wsOrigem = Workbooks(lArquivo).Worksheets(Plan1)

A planilha roda para selecionar o arquivo e abrir mas daí tranca no erro.

Desde já agradeço pela atenção.
Segue o código completo

Sub lsSelecionarArquivo()
Dim fDlg As FileDialog
Dim lArquivo As String
Dim wsOrigem As Workbook
Dim wsDestino As Workbook


'Chama o objeto passando os parâmetros
Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogOpen)
With fDlg
'Alterar esta propriedade para True permitirá a seleção de vários arquivos
.AllowMultiSelect = False

'Determina a forma de visualização dos aruqivos
.InitialView = msoFileDialogViewDetails

'Filtro de arquivos, pode ser colocado mais do que um filtro separando com ; por exemplo: "*.xls;*.xlsm"
.Filters.Add "All files", "*.*"

'Determina qual o drive inicial
.InitialFileName = "C:\"
End With

'Retorna o arquivo selecionado
If fDlg.Show = -1 Then
lArquivo = fDlg.SelectedItems(1)
MsgBox "O arquivo selecionado está em: " & lArquivo

'Especifica o caminho do arquivo de origem.
Workbooks.Open Filename:=lArquivo


'Especifica o nome e a aba do arquivo de origem, que deseja copiar os dados.
Set wsOrigem = Workbooks(lArquivo).Worksheets(Plan1)
'Especifica a aba no arquivo de destino, que deseja colar os dados.
Set wsDestino = Workbooks("Requisição ao Compras (AbrirArquivo3).xlsm").Worksheets(Plan1)
'Realiza o procedimento de copiar e colar os dados, no intervalo que desejar. Neste caso está sendo copiado todos os dados da planilha, exceto a primeira linha.
With wsOrigem
Cells.Select.Copy Destination:=wsDestino.Range("A1:CU8800")
End With

Else
MsgBox "Não foi selecionado nenhum arquivo"
End If
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Erro em tempo de execução 9 ao usar Set Workbook

Mensagem por Reinaldo »

Experimente:
Altere a definição do tipo wsOrigem para Dim wsOrigem As Worksheet
e a atribiução do nome para: Set wsOrigem = ActiveWorkbook.Worksheets("Plan1")


Osbont
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Jun 07, 2018 11:13 am

Re: Erro em tempo de execução 9 ao usar Set Workbook

Mensagem por Osbont »

Continua dando erro.
Resolvi da seguinte forma:
Sub lsSelecionarArquivo()
Dim fDlg As FileDialog
Dim lArquivo As String
Dim wbOrigem As Workbook 'Inclui
Dim wbDestino As Workbook 'Inclui
Dim wsOrigem As Worksheet 'Alterei
Dim wsDestino As Worksheet 'Alterei

'Chama o objeto passando os parâmetros
Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogOpen)
With fDlg
'Alterar esta propriedade para True permitirá a seleção de vários arquivos
.AllowMultiSelect = False

'Determina a forma de visualização dos aruqivos
.InitialView = msoFileDialogViewDetails

'Filtro de arquivos, pode ser colocado mais do que um filtro separando com ; por exemplo: "*.xls;*.xlsm"
.Filters.Add "All files", "*.*"

'Determina qual o drive inicial
.InitialFileName = "C:\"
End With

'Retorna o arquivo selecionado
If fDlg.Show = -1 Then
lArquivo = fDlg.SelectedItems(1)
'MsgBox abaixo informa o caminho do arquivo selecionado e o nome. É Opcional. Pode ser excluído.
MsgBox "O arquivo selecionado está em: " & lArquivo
'Especifica o arquivo de origem dos dados
Set wbOrigem = Workbooks.Open(lArquivo)
'Especifica a planilha de origem dos dados
Set wsOrigem = wbOrigem.Worksheets(1)
'Especifica o arquivo de destino dos dados
Set wbDestino = Workbooks("Requisição ao Compras (AbrirArquivo)3") ' Substitua pela sua planilha de destino
'Especifica a planilha de destino dos dados
Set wsDestino = wbDestino.Worksheets(1)
With wsOrigem
Range("A1:CU8800").Copy Destination:=wsDestino.Range("A1:CU8800")
End With

Else
MsgBox "Não foi selecionado nenhum arquivo"
End If
End Sub

Muito grato pela atenção


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder