question

Problema de Excel VBA Appactivate & sendkeys.?

Estou tentando copiar e colar do excel pasta de trabalho a para b de pasta de trabalho do excel usando o VBA. No entanto a pasta de trabalho está sendo executada em outro computador em outra rede, e é no.Formato MHTML. Eu não sou capaz de manipular a pasta de trabalho com uma macro a partir de pasta de trabalho usando qualquer um a codificação padrão de B. (workbooks("A").sheets (etc....))

Idealmente, eu gostaria de usar um sendkey pressione ctrl-a ctrl-c na pasta de trabalho a e, em seguida, colá-lo para B. No entanto quando uso appactivate, ele abre a pasta de trabalho para a frente, mas é como se fosse uma imagem até que a macro seja concluída. Os sendkeys não estão sendo enviados para as células do excel porque o appactivate não é destacar as células dentro da pasta de trabalho, apenas a pasta de trabalho. (se isso faz sentido?)

Alguém sabe como conseguir essas duas pastas de trabalho para conversar com os outros usando VBA? Estou em uma perda. Obrigado. Aqui está o código que tenho agora. O único problema é que ele não vai selecionar qualquer coisa sobre o arquivo (A pasta de trabalho) de exportação Sub atest() AppActivate "Microsoft Excel - export.mhtml", True SendKeys ("^ a") SendKeys ("^ c") Workbooks("Book1").Sheets(1).Ative Cells (1, 1).Selecione o formato de ActiveSheet.PasteSpecial: = "Texto", Link: = False, DisplayAsIcon: = False End Sub VBA não vai se comunicar com este excel porque ele existe em um servidor diferente em algum outro computador. Que gostaria de usar, mas eu não posso chamar essa folha.
resposta Resposta
Para copiar e colar de uma pasta de trabalho para outra usando VBA, especialmente quando a outra pasta de trabalho está em um servidor diferente, é necessário uma abordagem diferente. AppActivate e SendKeys podem não ser a melhor opção neste caso, pois eles podem não conseguir selecionar e copiar o conteúdo da forma que desejamos. Em vez disso, podemos usar métodos mais diretos e seguros.

Uma forma de fazer isso é utilizando a referência direta do objeto Worksheet e a função Copy/Paste. Primeiro, é preciso ter certeza de que a pasta de trabalho está acessível e aberta. Em seguida, podemos acessar a planilha desejada utilizando o método Workbooks.Open e referenciar a planilha diretamente.

Por exemplo, podemos fazer algo assim:

```vba

Sub CopiarParaOutraPastaDeTrabalho()

Dim wbOrigem As Workbook

Dim wbDestino As Workbook

Dim wsOrigem As Worksheet

Dim wsDestino As Worksheet



' Abrir a pasta de trabalho de origem

Set wbOrigem = Workbooks.Open("Caminho\para\Arquivo\A.xlsx")

' Definir a planilha de origem

Set wsOrigem = wbOrigem.Sheets("NomeDaPlanilha")



' Abrir a pasta de trabalho de destino

Set wbDestino = Workbooks.Open("Caminho\para\Arquivo\B.xlsx")

' Definir a planilha de destino

Set wsDestino = wbDestino.Sheets("NomeDaOutraPlanilha")



' Copiar o conteúdo da célula A1 da origem

wsOrigem.Cells(1, 1).Copy

' Colar o conteúdo na célula A1 do destino

wsDestino.Cells(1, 1).PasteSpecial Paste:=xlPasteAll ' Ou qualquer outro formato desejado

End Sub

```

Neste exemplo, abrimos e referenciamos as duas pastas de trabalho desejadas, e então utilizamos o método Copy para copiar o conteúdo de uma célula na planilha de origem para a planilha de destino. É importante lembrar de ajustar os caminhos e nomes das planilhas conforme a necessidade.

Espero que esta abordagem ajude a superar as dificuldades que você está encontrando ao tentar copiar e colar entre pastas de trabalho do Excel em VBA. Vale lembrar que esta é apenas uma possibilidade e outras abordagens podem ser mais adequadas dependendo do caso específico. Boa sorte!

Comentários Comentários

Guest
Diana na 22 Jun 2023
0
Olá! Parece que você está tendo dificuldades com o VBA no Excel. Em vez de usar o AppActivate e o SendKeys, você pode tentar usar o método Copy e Paste do VBA para copiar e colar as informações entre as duas pastas de trabalho. Crie uma referência ao outro arquivo de pasta de trabalho e use o método Copy para copiar os dados desejados e, em seguida, o método Paste para colá-los na pasta de trabalho B. Isso pode ajudar a contornar o problema de comunicação entre as duas pastas. Espero que isso ajude! Boa sorte!

O seu comentário
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


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