Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#50405
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 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
#50409
Experimente:

1. substitua as linhas abaixo
Código: Selecionar todos
Dim wsOrigem As Workbook
Dim wsDestino As Workbook
por estas
Código: Selecionar todos
Dim wbOrigem As Workbook
Dim wbDestino As Workbook
Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet

2. substitua as linhas abaixo
Código: Selecionar todos
'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)
por estas
Código: Selecionar todos
'Especifica o arquivo de origem dos dados
Set wbOrigem = Workbooks.Open(lArquivo)
'Especifica a planilha de origem dos dados
Set wsOrigem = wbOrigem.Worksheets("Plan1")

'Especifica o arquivo de destino dos dados
Set wbDestino = Workbooks("Requisição ao Compras (AbrirArquivo3).xlsm")
'Especifica a planilha de destino dos dados
Set wsDestino = wbDestino.Worksheets("Plan1")
#50424
Resolvido.
Funcionou perfeito.
Tive que fazer somente uma alteração que foi substituir o("Plan1") somente por (1).
A primeira aba da planilha pode estar nomeada com qualquer nome.
Daí funcionou perfeito.
Muitíssimo grato pela ajuda, estava me quebrando.
Depois encontrei outro erro que corrigi.
Substituí a linha:
Cells.Select.Copy Destination:=wsDestino.Range("A1:CU8800")
Por:
Range("A1:CU8800").Copy Destination:=wsDestino.Range("A1:CU8800").
Estava dando erro 424 - O objeto é obrigatório.

O código todo da macro que seleciona arquivo e copia para planilha ficou assim:
Sub lsSelecionarArquivo()
Dim fDlg As FileDialog
Dim lArquivo As String
Dim wbOrigem As Workbook
Dim wbDestino As Workbook
Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet

'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

Mais uma vez obrigado
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord