Jump to content

código vba para abrir livro dentro de uma pasta


Recommended Posts

olá pessoal como posso fazer uma macro que ao clicar no botão ele me abrisse um livro de excel numa determinada localização depois copiasse desde a célula A1 ate H20 e me colasse os valores copiados noutro livro e por fim fechasse o livro que abriu não sei se me estou a fazer entender. Obrigado

Link to comment
Share on other sites

bom vamos ver...  talvez eu possa te ajudar...  Vc quer copiar um livro de um arquivo específico e colo´calo em outro??  ou quer criar um novo arquivo e colocar os dados neste já citados neste novo arquivio??

Me de mais detalhes para poder ajudar...

Link to comment
Share on other sites

Olá então é assim tenho um livro no qual estou a trabalhar e ao longo do dia preciso de actualizar com dados existentes noutro livro que vai sendo actualizado por outra pessoa . o que estou a fazer neste momento é ir a pasta dessa pessoa abrir o livro e copiar os dados e colalos no meu mas perco tempo com isso pois faço isso varias vezes ao dia o que eu queria era criar um botão no meu livro que me fizesse isso . os dados que eu copio vão desde A1 ate H20 precisava mesmo de ajuda obrigada.

Link to comment
Share on other sites

Dá uma testada neste código, eu estou utilizando ele para algo parecido com este fim que desejas....

Public Sub Teste()
'Abre a planilha em questão para poder fazer a cópia.  Caso o arquivo esteja em outra estação
'pode usar caminho de rede antes do arquivo, ou se está em outro diretório use caminho completo para o arq.
'Ex: rede - \\192.168.0.105\PastaCompartilhada_Ou_Administrativa\Dir1\Dir2\Arquivo.xls
'Ex: Outro DIR - E:\Dir1\Dir2\arquivo.xls
'tudo entre as aspas
'abre em modo silencioso, sem mostrar o arquivo
Set Planilha2 = GetObject("Arquivo a ser copiado.xls")
'copia o range para área de transferência
Planilha2.Worksheets(7).Range("C5:C15").Copy
'cola a copia na planilha que deseja no range certo (planilha de destino)
Workbooks("Novo.xls").Worksheets(1).Paste Destination:=Worksheets(1).Range("A1")
'fecha planilha aberta em silencio
Planilha2.Close
End Sub

Espero que isso ajude... e não esqueça de substituir os range para os seus locais.. e acertar as worksheets, bem como o nome dos seus arquivos.

cumps.

😉🙂

Link to comment
Share on other sites

Olá é mesmo isto que quero mas não estou a conseguir como é que ficava o código se arquivo a ser copiado se chamasse www e estivesse em c: dentro da pasta x e o que é para ser copiado esta na folha1 e o range a ser copiado a1 h20 da- me sempre erro aqui Set Planilha1 = GetObject("www.xls")  obrigado

Link to comment
Share on other sites

Desculpe.. fui meio apressado...  fiz outros teste...  e deu certo

Set Planilha2 = GetObject("e:\arquivos\Documentos\produtividade\ano 2010\www.xls")

Funcionou nessa sintaxe....

o Range ponha  ("A1:H9")

certifique-se que a planilha não esteja protegida.

Link to comment
Share on other sites

Ae ....  tenta assim...

Public Sub Teste()
Set Planilha2 = GetObject("e:\arquivos\Documentos\produtividade\ano 2010\www.xls")
Planilha2.Worksheets(1).Range("A1:H9").Copy
Workbooks("Novo.xls").Worksheets(1).Paste Destination:=Worksheets(1).Range("A1")
Planilha2.Close
End Sub

O getobject está com set para um endereçamento em que fiz um teste, porém deve alterar para o endereçamento do seu arquivo...  mesmo que ele esteja em rede... aí vc usa a forma de expressão de conexão para máquina \\ipdamaquina\pastacompartilhada\arquivo.

PLanilha2 é uma variável...  O Range eu já coloquei pra vc...  e em worksheets(1) (quer dizer a primeira pasta do livro, e caso seja outra tem que mudar...  2 a segunga pasta, 3 a terceira e assim por diante.  Novo.xls é o nome do seu arquivo, para onde vai importar.... e defini o Range A1, porém deve alterar isso para que coloque na posição desejada...  tipo se vc quiser inserir esses dados a partir de C5, é só mudar e o close é para fechar o arquivo...

Creio que sua dúvida esteja aki...  se não estiver especifique melhor para poder te ajudar melhor vc....

Ps.:vc num é burro.. :nono: apenas esta começando a aprender...  fica tranquilo.. é assim mesmo.... vai devagar que chega!!! 👍

cumps  🙂

Link to comment
Share on other sites

Public Sub Teste()

Set Planilha2 = GetObject("e:\arquivos\Documentos\produtividade\ano 2010\www.xls")

Esse comando aqui, abre o arquivo que será copiado.  Nele Planilha2 é uma variável, apesar de não ser declarada com a função Dim.  Pode até trocar o nome da variável (Planilha2), mas pode deixar assim mesmo.  O que deve troca aqui??  Sim tem que colocar o caminho do arquivo que será aberto.  Pode usar o sistema de rede, caso o arquivo esteja em outra máquina que não seja a sua, o que faria que você use o sistema de redes para chamar o arquivo (\\ipdamaquina\pastacompartilhada\nomedoarquivo.xls).  Se o arquivo estive no mesmo diretório do arquivo que receberá os dados, pode apenas colocar o nome do arquivo sem precisar especificar unidade e pastas.  Mas se o arquivo estive em outro diretório deve usar o caminho completo para o arquivo.

Planilha2.Worksheets(1).Range("A1:H9").Copy

Como pode ver, anteriormente abrirmos o arquivo, usando o set para colocar o nome da planilha nesta variável (Planilha2), portanto a partir dela chamamos as funções de planila.  Worksheets, que significa planilha, neste caso, deve ser acompanhado por uma numeração ou simplimente o nome da pasta (entre aspas para o nome, e numero não).  O que deve trocar com relação a Worksheets, é a numeração, pois como pode ver esse 1 significa que estou direcionando para a primeira pasta.  Se os dados que deseja copiar estiver em uma pasta que não seja a primeira, deve usar o numero dela com relação a posição que ela se encontra na aba inferior.  Se a pasta a ser usada é a 1, mantenha como esta.

Seguindo neste comadno, temos o Range, que define o que e onde ser executada a cópia.  Como você definiu anteriormente que deseja copiar de A1 até H9, eu já deixei preparado para isso, mas caso venha querer alterar a range de cópia, será feito aki.

Workbooks("Novo.xls").Worksheets(1).Paste Destination:=Worksheets(1).Range("A1")

Esse comando aqui, faz com que os dados já copiados seja colado no seu arquivo.  Vamos lá...  A plavra Novo.xls é o nome do seu arquivo, ou pelo menos o que eu usei.  Deve se alterado  para o nome do seu arquivo.  A palavra worksheets(1), é a pasta do seu arquivo, bem como a posição em que ele está.  No caso está usando 1, porque eu usei a primeira pasta, se tiver usando outra, deve adequar a seu uso.  No Range("A1"), que siginifica que irá colar a partir a A1, pode alterar para que seja usado de acordo com sua pasta.  Pode colocar somente a primeira célula como fiz, ou colocar a range completa.

Planilha2.Close

Comando  fecha o arquivo do qual foi copiado os dados, porém não fecha o arquivo que estava trabalhando.

End Sub

Será que essa explicação te ajuda??  Se ficar faltando algo pode falar....

Link to comment
Share on other sites

Olá rogi_cps e já agora muito obrigado pela paciência que tens tido comigo mas não estou conseguindo por o código a funcionar

Public Sub Teste()
Set Planilha2 = GetObject("c:\teste\teste22.xls")
Planilha2.Worksheets(1).Range("A1:H9").Copy
Workbooks("Novo.xls").Worksheets(1).Paste Destination:=Worksheets(1).Range("A1")
Planilha2.Close
End Sub

este é o código que estou a usar para fazer o teste mas da-me sempre este erro " File name or class name not found during Automation operation"e é na linha que diz Set Planilha2 = Getobject("c:\teste22.xls")

a pasta está em c:\ e chama-se "teste" e dentro dela está o ficheiro de excel que se chama "teste22" e o livro onde estou a trabalhar está no ambiente de trabalho e chama-se "Novo" e tenho o código acima dentro do ficheiro "novo" num módulo o meu excel é em português mas penso que isso não intrefere não sei. e as folhas tanto do livro a copiar como o livro a colar são as folhas 1  mais uma vez obrigada pela ajuda

Link to comment
Share on other sites

Tah certo.. vamos er uma coisa...  quando eu fiz naum deu erro..  então vamos pra segunda parte.. que versão do office esta usando???

Tera vc como postar os dois arquivo para mim, para eu checar como vc fez??  Vou criar a mesma coisa que vc fez aki comigo...

Aguardo retorno seu...

E naum se preocupa.. estamos em forum jusamente para ajudar....  e se puder ensinar sim...

Link to comment
Share on other sites

Bom sou eu de novo...  eu recriei o ambiente que vc citou em sua ultima mensagem, e não há nada errado.  Como eu tinha criado em Office 2003, desta vez resolvi utilizer o office 2007.  Nenhuma mensagem de erro, funcionou perfeitamente...  Poderia emviar os seus arquivos para análise??

Vou fazer o seguinte..  vou postar os dois arquivos que usei para teste, e coloque-os no seu ambiente.

Novo.xls http://www.4shared.com/document/v8fj8Y-P/novo.html

Teste22.xls http://www.4shared.com/document/jDiPEZwY/teste22.html

Dá uma olhada.

Link to comment
Share on other sites

Bom vamosl lá...  eu dei uma olhada no ficheiro, e de cara no link de download já da pra ver o erro.

Quando é o caminho completo de arquivo, isso inclui a extensão dele (exceto que use o linux....)

Vc estava tentando usar novo.xls e teste22.xls, quando seus arquivos são respectivamente .xlsm e xlsx (arquivos de office 2007).  Eu comentei em alguma resposta que desenvolvi em office 2003, ele usa .xls para tudo, o que não ocorre mais no office 2007.

Portanto o código com seus arquivos ficariam assim:

Public Sub Teste()
Set Planilha2 = GetObject("c:\teste\teste22.xlsx")
Planilha2.Worksheets(1).Range("A1:H9").Copy
Workbooks("Novo.xlsm").Worksheets(1).Paste Destination:=Worksheets(1).Range("A1")
Planilha2.Close
End Sub

Repare as exten~soes de arquivos que mudam.

Espero que ajude.

cumps    😁

Link to comment
Share on other sites

Olá rogi_cps é mesmo isto já funciona eram as extenções és um espectaculo agora vou ver se consigo por isto a funcionar lá no trabalho que é em rede. Tenho outras questões sobre outros assuntos mas depois abro outros tópicos mas desde já muito obrigado mesmo depois digo se consegui lá ou não. Obrigadooooooooo 😁

Link to comment
Share on other sites

Olá só mais uma coisinha para dar este tópico como resolvido como é que ficava o código vba para colar valores em vez de ser só colar não sei se me estou a fazer entender onde diz "Paste" tenho de colocar o quê para colar só os valores no livro "novo" obrigado

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.