none
Macro funciona apenas no computador de criação RRS feed

  • Pergunta

  • Prezados,

    Criei uma macro,que possui alguns modulos com códigos.A mesma funciona perfeitamente em meu computador,mas ao tentar rodar em outro pc,da erro na seguinte linha de codigo:

    Workbooks("GTB_SIN_YTD - " & mesatual).Activate

    É a primeira linha de cod do modulo 1.

    Ao utilizar o arquivo em outro computador,preciso fazer alguma ação ?

    terça-feira, 22 de março de 2016 15:02

Respostas

  • Otávio,

    Selecione manualmente uma das pastas de trabalho aberta que supostamente deveria fechar, e na Janela de Verificação Imediata do VBE (Alt+F11) digite:

    ?ActiveWorkbook.Name

    Verifique se o que aparece é exatamente o resultado da concatenação que faz para acessar uma das pastas de trabalho.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 23 de março de 2016 00:03
    Moderador

Todas as Respostas

  • Qual o Erro Otávio ?

    A variável mesatual possui algum valor ?

    O nome do arquivo é esse mesmo ? (GTB_SIN...)


    André Santo | basevba.wordpress.com

    terça-feira, 22 de março de 2016 16:01
  • Da erro de subscrito fora do intervalo,mas funciona perfeitamente em meu computador.


    A variavel mes atual recebe um valor string digitado pelo usuario:

    mesatual = Application.InputBox(prompt:="Mes atual da base de dados", Default:="Nome do mes", Type:=2, Title:="DIGITE O MES")

    O nome do arquivo está correto.


    terça-feira, 22 de março de 2016 16:33
  • Esse erro geralmente se refere a nomes incorretos mesmo...

    Quando aparecer a mensagem de erro, vá até a janela de verificação imediata (CTRL + G) e digite: 

    debug.print ThisWorkbook.name
    Esse comando nos dirá o nome exato deste arquivo



    André Santo | basevba.wordpress.com

    terça-feira, 22 de março de 2016 16:56
  • André,

    O que não entendo é o seguinte:

    O arquivo em excel(que contem a macro) está em uma pasta da rede, onde consigo rodar a macro normalmente.

    O problema é que,ao ser executada por outra pessoa(outro computador),a macro apresenta esse erro.

    Por serem os mesmos arquivos,acredito que nome não é a questão.

    Quando programo em módulos,teria algum problema em passar esse arquivo para outra pessoa e ela nao conseguir rodar?

    terça-feira, 22 de março de 2016 17:18
  • Os problemas que podem acontecer ao trocar de máquina geralmente são referências ausentes ou caminhos fixos que você usou na programação.

    Você testou pessoalmente na máquina do usuário ?? Será que ele não está digitando mes 4 ao invés de Abril por exemplo ?? ou não está respondendo sua inputbox ??


    André Santo | basevba.wordpress.com

    terça-feira, 22 de março de 2016 17:23
  • testei pessoalmente

    Da mesma forma que funciona em minha maquina ,faço na dele.

    Mas na dele da o erro.

    O codigo do botao é esse:

    Private Sub CommandButton1_Click()
     Call BuscaMes
      
      
    ' Chama as rotinas de atualização dos dados das planilhas
      Call AtualizaSinter
      Call AtualizaBF
      Call AtualizaBF1
      Call AtualizaBOF
      Call AtualizaEAF
      Call AtualizaLRM
      Call AtualizaLRM1
      
      
      
      ' Fecha os arquivos GTB abertos
      
    Workbooks("GTB_SIN_YTD - " & mesatual).Close
       
    Workbooks("GTB_BF_YTD - " & mesatual).Close
      
    Workbooks("GTB_BOF_YTD - " & mesatual).Close
     
    Workbooks("GTB_EAF_YTD - " & mesatual).Close
      
    Workbooks("GTB_LRRB_YTD - " & mesatual).Close
    
    Workbooks("GTB_CCM_YTD - " & mesatual).Close
    
    
    End Sub

    Na sub AtualizaSinter, que está dando o erro:

    Seria a primeira "ativação" de outra planilha aberta do código.

    Sub AtualizaSinter()
     
     mesatual = Range("A1").Value
     
     'Atualiza os dados da planilha SIN ---------------------------------------------------------------------
    
    Workbooks("GTB_SIN_YTD - " & mesatual).Activate
    ActiveSheet.Range("D11:AN11").Select
     Selection.Copy
        
    ThisWorkbook.Worksheets("Sinter").Activate
    Worksheets("Sinter").Range("E4").Select
    ActiveCell.PasteSpecial xlPasteValues
    
    Workbooks("GTB_SIN_YTD - " & mesatual).Activate
    
    ActiveSheet.Range("D12:AN12").Select
     Selection.Copy
        
    ThisWorkbook.Worksheets("Sinter").Activate
    Worksheets("Sinter").Range("E5").Select
    ActiveCell.PasteSpecial xlPasteValues
    
    For i = 0 To 36 Step 1
        
    Range("E3").Offset(0, i).Select
    y = ActiveCell.AddressLocal
    
        For w = 0 To 36 Step 1
        Range("E9").Offset(w, 0).Select
        z = ActiveCell.AddressLocal
    
        If Range(y).Value = Range(z).Value Then
        
        Range(z).Offset(0, 2).Value = Range(y).Offset(1, 0).Value
        End If
        
        Next w
        
    Next i
    
    For i = 0 To 36 Step 1
        
    Range("E3").Offset(0, i).Select
    y = ActiveCell.AddressLocal
    
        For w = 0 To 36 Step 1
        ActiveSheet.Range("A9").Offset(w, 0).Select
        z = ActiveCell.AddressLocal
    
        If Range(z).Value = Range(y).Value Then
        
        ActiveSheet.Range(z).Offset(0, 1).Value = Range(y).Offset(2, 0).Value
        End If
        
        Next w
        
        For A = 0 To 36 Step 1
        Range("E9").Offset(A, 0).Select
        B = ActiveCell.AddressLocal
        
        If Range(y).Value = Range(B).Value Then
        
        Range(B).Offset(0, 1).Value = Range(y).Offset(2, 0).Value
        
        End If
        
        Next A
        
    Next i
    
    
    Range("A9:B45").Sort key1:=Range("B9"), Order1:=xlAscending, key2:=Range("A9")
    
    Range("F9:H45").Sort key1:=Range("H9"), Order1:=xlAscending, key2:=Range("F9")
     
     
     
     End Sub
    
    

    terça-feira, 22 de março de 2016 17:30
  • Você está pegando mesAtual não da inputbox e sim da célula A1

    Visto que tem um monte de arquivo aberto.. esse A1 é no arquivo correto mesmo ?

    Dá um debug nesse mesAtual


    André Santo | basevba.wordpress.com

    terça-feira, 22 de março de 2016 17:33
  • Após inserir na inputbox,uma celula de cada planilha recebe o valor de mesAtual(celula A1)

    Tentei rodar em um computador de uma terceira pessoa e funcionou,portanto deve haver algum problema no computador da pessoa que da o erro.(acredito que o código está realmente ok portanto)

    As referencias estão iguais e a versão do Office é a mesma.

    Complicado viu rs

    terça-feira, 22 de março de 2016 18:01
  • Putz.. Estranho mesmo

    André Santo | basevba.wordpress.com

    terça-feira, 22 de março de 2016 18:10
  • Otávio,

    Selecione manualmente uma das pastas de trabalho aberta que supostamente deveria fechar, e na Janela de Verificação Imediata do VBE (Alt+F11) digite:

    ?ActiveWorkbook.Name

    Verifique se o que aparece é exatamente o resultado da concatenação que faz para acessar uma das pastas de trabalho.


    http://www.ambienteoffice.com.br - http://www.clarian.com.br

    quarta-feira, 23 de março de 2016 00:03
    Moderador