Notifications
Clear all

Macros falham quando estou com outra pasta EXCEL aberta

7 Posts
4 Usuários
0 Reactions
1,597 Visualizações
(@rabstein)
Posts: 2
New Member
Topic starter
 

Pessoal, bom dia. ;)

Preciso da ajuda de vocês. Sou recém-iniciado na programação em VBA e tenho enfrentado um problema que, mesmo com todas as pesquisas nos fóruns da web, não consegui encontrar respostas. :cry:

Desenvolvi diversas macros que acessam não só as planilhas que estão no próprio arquivo onde estão as macros, como em outras pastas.

Quando a pasta é a única em EXCEL aberta, tudo funciona bem, mas quando há qualquer outra pasta EXCEL aberta, o aplicativo começa a travar ou ter comportamentos estranhos.

Pelo que pude entender dos diversos posts de suporte nos fóruns, deve ter algo a ver com os comandos Thisworkbook, Activeworkbook e Activeworksheet, mas confesso que não sei como tratar este problema.

Normalmente, quando quero acessar os dados de uma planilha que estão no arquivo que contém a macro, uso o comando Thisworkbook.Worksheets("nomedaplanilha"). Select e depois começo a fazer as operações.

Quando quero trabalhar com outras pastas, uso, por exemplo:

Workbooks.Open Filename:=arquivofonte, UpdateLinks:=False

registros = ActiveWorkbook.Worksheets("CADASTROTURMA").UsedRange.Rows.Count

ActiveWorkbook.Worksheets("CADASTROTURMA").Range("A3:AN" & registros).Copy shdestino1.Range("A" & linha + 1)

Neste caso acima, as macros estão em uma pasta e os dados a serem lidos em outra.

Se eu executo o arquivo com macros, sem nenhuma outra pasta EXCEL aberta, tudo funciona bem, mas se aciono as macros tendo outras pastas já abertas, ele começa a travar.

Fico agradecido se alguém me der uma luz neste sentido.

Grato,

Marcos Rabstein

 
Postado : 07/03/2016 5:59 am
(@robo8268)
Posts: 73
Trusted Member
 

É porque você esta usando o objeto activeWorkbook, então ele executa na pasta de trabalho que está ativa...

Em vez do activeWorkbook, tente usar a opção ThisWorkbook, aí automaticamente o vba interpreta como a pasta de trabalho a qual o módulo pertence.

 
Postado : 07/03/2016 12:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Para te ajudar leia:
http://www.bertolo.pro.br/FinEst/Tutori ... orial2.pdf
https://usuariosdoexcel.wordpress.com/2 ... tivesheet/

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/03/2016 1:15 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Toda vez que preciso identificar uma pasta ou aba declaro uma variavel e assunto resolvido.

Nao uso (salvo em casos muito especificos e raros) activesheet, activeworkbook, Thisworkbook nunca usei.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 07/03/2016 2:27 pm
(@rabstein)
Posts: 2
New Member
Topic starter
 

caro robo8268,
O problema é que na pasta em que estão as macros, eu uso thisworkbook, mas eu abro outras pastas (que tb possuem macros e dados), nas quais eu uso activeworkbook.

Me parece que a saída é a que deu o Marcelo, que declara as pastas como variáveis ... ainda não sei exatamente como fazê-lo porque, como disse antes, estou engatinhando no VBA

De qualquer maneira, agradeço a todos.

abrs,

Marcos

 
Postado : 14/03/2016 7:23 am
(@robo8268)
Posts: 73
Trusted Member
 

Dim wb As Workbook

Set wb = Application.Workbooks.Open(pastaondeaplanilhaestasalvanomedoarquivo.extensão) Ex: C:pasta de trabalho.xlsx

 
Postado : 14/03/2016 7:33 am
(@mprudencio)
Posts: 2749
Famed Member
 

Declare assim

Dim WS as Worksheet

Set WS = Sheets("Plan1")

Ou assim

Dim W as workbook

Set W = Workbooks ("Pasta1")

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 14/03/2016 10:13 am