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
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Erro em tempo de execução 9 ao usar Set Workbook
- Reinaldo
- 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
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")
Altere a definição do tipo wsOrigem para Dim wsOrigem As Worksheet
e a atribiução do nome para: Set wsOrigem = ActiveWorkbook.Worksheets("Plan1")
Re: Erro em tempo de execução 9 ao usar Set Workbook
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
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