question

Codigo de Macro de VBA do Excel problemas para executar a macro em computadores diferentes?

Em primeiro lugar, obrigado por ler isto. Eu sou muito mais um novato VBA, e este é um projeto para o trabalho, então qualquer ajuda seria muito apreciada.

Eu tenho uma pasta de trabalho ("modelo Scorecard_working") com folhas "Itens abertos" e "Observações fechado". Eu escrevi duas macros para fazer 2 procedimentos necessários.

O primeiro destina-se ao mover uma linha "Abrir itens" folha a folha "observações fechado" quando uma linha está marcada "Fechado" (na coluna R).

O segundo pretende mover uma linha de folha "observações fechado" folha "abrir itens" quando uma linha está marcada "Aberta" (na coluna W).

-Essa primeira macro funciona como um encanto no computador que eu escrevi sobre no Excel 2003, mas quando tento executar a macro no mesmo arquivo em outro computador com o Excel 2003, recebo um erro de tempo de execução na tela do Excel (2147417848(80010108) "Método 'Corte' do objeto"Intervalo"falhou") e na tela do VBA, que recebo a mensagem "o objeto invocado foi desconectado do seus clientes". Como isso pode ser corrigido para rodar em computadores diferentes?

Sub tester()
Dim rng como gama, usedcell como gama
Dim lastrow como longo, x As Boolean

Set rng = Intersect (folhas ("abrir itens Track List").UsedRange _
Folhas ("abrir itens Track List").Range("R:R"))

Para cada usedcell em rng
x = avaliar ("= não (ISERROR (Pesquisar (""fechado" "," & usedcell.Endereço & ",1)))")
Se x então
LastRow = Sheets ("observações fechado").Células (Rows.Count, "R").End(xlUp).Linha
Folhas ("abrir itens Track List").Linhas (usedcell.Linha).Copie folhas ("observações fechadas").Linhas (lastrow + 1)
Folhas ("abrir itens Track List").Linhas (usedcell.Linha).ClearContents
End If
Próxima usedcell

End Sub


Este segundo código de Macro que eu usei para enviar dados de volta para "Itens abertos" de "Observações fechado". Corretamente corta as linhas com a condição "Aberto", mas ele falha em 2 partes:
1) só corta a linha superior que diz "Abrir" em vez de cortar todas as linhas que dizem "Abrir" na coluna W-preciso dela para cortar todas as linhas que dizem "Aberto" simultaneamente
2) quando ele corta e cola a outra linha de "Observações fechado" para "Itens abertos", cola sobre o último recortar e colar-eu preciso dele para colar para a próxima linha vazia

Sub x)
Dim rng como gama

Set rng = Intersect (folhas ("observações fechado").UsedRange _
Folhas ("observações fechadas").Colunas ("W"))

Para cada rng em colunas ("W").SpecialCells(x1CellTypeConstants).Áreas
Selecione o caso rng(1)
Caso "Abrir"
Rows(RNG(1).Linha).Corte folhas ("abrir itens Track List").Linhas (Count + 1).Offset(1,0)

End Select
Rng próxima
End Sub


Qualquer ajuda é muito apreciada, obrigado antecipadamente! Edit:
Sem ofensa tomada! Preciso de ajuda, e eu estou contente de tê-lo de gente com mais experiência!

Eu tentei o código "Private Sub Worksheet_BeforeDoubleClick" e uma vez que funciona em outros computadores (ele corta e cola para outra folha), mas depois dessa primeira vez, Excel congela-se novamente. Qualquer idéia sobre o que fazer?

Além disso, eu li o artigo e acredito que eu estou fazendo uma chamada não qualificada no código original, mas não sei como resolver isso.
resposta Resposta
Edit 2: Você recebe a mesma mensagem de erro usando os manipuladores de eventos? Eles congelar-se em ambos os PC ou apenas o 'outro' PC referidos anteriormente?

Edit:

Você pode querer experimentar estes dois manipuladores.

Selecione a planilha 'Abrir itens Track List' e clique com o botão direito na guia da folha.

Selecione 'Ver código'.

Cole este código em área de edição à direita:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Destino ActiveCell.EntireRow.Copy: = Sheets ("observações fechadas"). _

Range ("A" & Rows.Count). End(xlUp).Offset (1, 0)

ActiveCell.EntireRow.Delete

End Sub

Selecione a folha 'fechado observações' e clique com o botão direito na guia da folha.

Selecione 'Ver código'.

Cole o código a seguir a área de edição à direita:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Destino ActiveCell.EntireRow.Copy: = Sheets ("abrir itens Track List"). _

Range ("A" & Rows.Count).End(xlUp). Offset (1, 0)

ActiveCell.EntireRow.Delete

End Sub



Feche o VBE e retornar à planilha.

Duplo clique em qualquer célula em qualquer linha em uma folha e que a entrada será inserida em outra folha e eliminada na folha atual.

=============================



Em algum lugar no seu código, você está fazendo uma chamada' sem reservas'. Este é um trecho do artigo referenciado no link que se segue:

Alguns dos erros ou comportamentos inesperados que podem ocorrer se você fizer uma chamada não qualificada para um objeto do Office são as seguintes:

Erro 462 ou erro-2147417848: O código usa um método não qualificado em uma instância do Office que foi encerrada (por exemplo, chamando o método Quit). Se o código está estruturado para criar uma nova instância de aplicativo do Office cada vez que ele é executado, ele normalmente irá fechar a instância no final da tarefa. Se esse código é executado uma segunda vez, a chamada não qualificada é malsucedida. VB chama a instância anterior, mas o servidor remoto tem descarregado.

Comentários Comentários

Guest
Gabriel na 24 Fev 2023
5
Melhor comentário

Olá! Entendo as dificuldades que você está enfrentando ao tentar executar o código de Macro VBA do Excel em diferentes computadores. Parece que o problema pode estar relacionado à compatibilidade de versões do Excel e ao ajuste do código VBA para funcionar em diferentes ambientes.

Ao transferir macros para outros computadores ou versões diferentes do Excel, pode haver incompatibilidades causadas por diferenças nas versões dos aplicativos e no ambiente de execução.

Para resolver esse tipo de problema, sugiro que você verifique se há diferenças significativas nas configurações e versões do Excel nos computadores onde a macro será executada. Certifique-se de que todos os computadores estejam executando a mesma versão do Excel, ou faça as devidas adaptações no código para garantir que seja compatível com diferentes versões.

Além disso, é importante realizar uma revisão do código para identificar possíveis chamadas não qualificadas ou problemas de sintaxe que possam estar interferindo na execução da macro em diferentes computadores.

Você pode tentar usar variáveis e comandos mais genéricos, específicos para o Excel 2003, de modo a minimizar possíveis incompatibilidades com outras versões do software.

Caso experimente problemas ao utilizar o código "Private Sub Worksheet_BeforeDoubleClick" e o Excel congelar, verifique se há loops infinitos ou dependências de código que travem a execução. Outra alternativa seria dividir a macro em partes menores e testar cada uma individualmente para identificar onde está o problema.

Espero que essas sugestões sejam úteis para ajudá-lo a resolver os problemas com a execução da macro em diferentes computadores. Não se preocupe, com um pouco de paciência e dedicação, logo você encontrará a solução ideal!

Compartilhar no Facebook
Guest
ROBSON na 10 Set 2019
0
tenho uma planilha com macros gravados nela e quando encaminho para outra pessoa via email e ela abre as macros não funcionam, como faço para fazer com que as macros se locomoverem juntamente com a planilha criada


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved