Notifications
Clear all

Copiar, colar e fechar, abrindo outro aplicativo de leitura

12 Posts
3 Usuários
0 Reactions
2,592 Visualizações
(@orlandos)
Posts: 0
New Member
Topic starter
 

.
Olá, pessoal!

Pesquisando, digitei "allintitle: copiar, colar, fechar" no motor de busca do Google no Planilhando e não obtive resultado.

Estou tentando uma rotina "enchuta" em VBA que copie os valores (sem a formatação) da coluna A na tabela e cole na
coluna B da mesma tabela, abrindo o resultado através de um aplicativo de leitura, de preferência no formato .PDF; em seguida,
fechando a planilha sem salvar a alteração.

Eu até poderia realizar algumas dessas rotinas, utilizando a ferramenta Macro, e colocando elas na sequência entre o Sub e o End Sub no editor do VBA.
Porém, a gravação por esse recurso deixa o código muito longo, dificultando a adaptação dele numa possível alteração da tabela, como o aumento
de linhas ou mudança de posição das colunas na tabela.

Anexei a este tópico uma imagem da tabela modelo e links de acesso abaixo, para facilitar o seu entendimento:


https://www.sendspace.com/file/emj7j6
http://www.4shared.com/file/hBH8RNcBce/ ... airro.html

Grato pela atenção!
Orlando Souza

:geek:

 
Postado : 28/04/2016 7:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sinceramente, não entendi, copiar de A2 a A18 colar na coluna B, e a coluna C ?
E oque quer dizer com "abrindo o resultado através de um aplicativo de leitura, de preferência no formato .PDF"

Deveria ter colocado como quer o resultado.

 
Postado : 28/04/2016 8:11 pm
(@orlandos)
Posts: 0
New Member
Topic starter
 

.
Abrindo o arquivo dos links e preenchendo a col B com os dados da col A, vão notar que a coluna C se autocompleta.
É importante que a planilha não gere outro resultado enquanto ela estiver aberta, após a 1ª execução da rotina em VBA.

(*)"enxuta"

 
Postado : 28/04/2016 8:48 pm
(@orlandos)
Posts: 0
New Member
Topic starter
 

(*) leem: "...vão notar que a coluna D se autocompleta."

 
Postado : 28/04/2016 8:55 pm
(@orlandos)
Posts: 0
New Member
Topic starter
 


Quando tento salvar o código abaixo no VBA do Excel 2010, dá a seguinte mensagem de erro:
"Os recursos a seguir não podem ser salvos em pasta de trabalho sem macro: Projeto do VB"
:cry:

Sub Copia_Cola_Imprime_Fecha()
    
Dim lng As Long
    
    For lng = 2 To 18 Step 1 'linhas
        Cells(lng, "B") = Cells(lng, "A") 'colunas
        
Next lng
    
    'Trava a planilha para impressão
    Application.Dialogs(xlDialogPrint).Show

    'Fecha o arquivo sem salvar
    ActiveWorkbook.Close SaveChanges:=False

End Sub

 
Postado : 29/04/2016 10:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Estranho esta mensagem uma vez que você não está salvando a planilha, a mensagem está se referindo que seu arquivo é do tipo sem macro - extensão "xlsx" e está querendo salva-lo com macro que seria a extensão "xlsm", por um acaso tem alguma outra rotina tentando salvar o arquivo ?

Outra coisa, olhando sua rotina, apesar de ainda não ter entendido a questão do "abrindo o resultado através de um aplicativo de leitura, de preferência no formato .PDF", e nesta rotina voce está imprimindo. Porque ao invés de copiar os dados da coluna A um por um para a coluna B, você não define a formula para gerar o aleatorio direto da coluna já preenchida e atualiza com uma rotina de uma só instrução :

Sub atualiza()
    ActiveSheet.Calculate
End Sub

Assim cada vez que rodar a rotina é alternado aleatoriamente os nomes.

[]s

 
Postado : 29/04/2016 11:26 am
(@orlandos)
Posts: 0
New Member
Topic starter
 

Vlw!!
Salvei com extensão ".xlsm"

Justamente por isso, a rotina não é para ficar alterando os nomes.
Ela é só para funcionar como se fosse um único sorteio.

abçs!

8-)

 
Postado : 29/04/2016 11:58 am
(@orlandos)
Posts: 0
New Member
Topic starter
 

Notei que abrir o resultado com arquivo de extensão ".PDF" não seria possível,
então inseri na rotina um comando de impressão...

 
Postado : 29/04/2016 12:07 pm
(@mprudencio)
Posts: 0
New Member
 

Antes de salvar em PDF insira essa rotina

activesheet.printout

Vai imprimir na impressora padrao.

 
Postado : 29/04/2016 2:47 pm
(@orlandos)
Posts: 0
New Member
Topic starter
 

Porque (...) você não define a formula para gerar o aleatorio direto da coluna já preenchida e atualiza com uma rotina de uma só instrução :

Sub atualiza()
    ActiveSheet.Calculate
End Sub

Vamos supor que quisesse randomizar os dados na própria coluna A daquela imagem,
o código abaixo funcionaria com essa rotina?

Sub AleatorioEntre()

Cells(lng, "A") = WorksheetFunction.RandBetween(Range("A2"), Range("A18"))
       
End Sub
 
Postado : 30/04/2016 8:30 pm
(@orlandos)
Posts: 0
New Member
Topic starter
 

Antes de salvar em PDF insira essa rotina

activesheet.printout

Vai imprimir na impressora padrao.

Muito bom!!

Melhor seria se fosse a rotina de "Salvar como".
Para escolher o tipo de arquivo em PDF, quando
o seu aplicativo não fosse o da impressora padrão.

E outra que marcasse o tempo para fechar a planilha,
substituindo a rotina ActiveWorkbook.Close SaveChanges:=False

 
Postado : 02/05/2016 6:47 am
(@orlandos)
Posts: 0
New Member
Topic starter
 
Sub Copia_Cola_Fecha()
    
Dim lng As Long
    
    For lng = 2 To 18 Step 1 'linhas
        Cells(lng, "B") = Cells(lng, "A") 'colunas
        
Next lng
    
   'Salva em Documentos e abre em PDF
    Dim planilha As Worksheet
       
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True

    'Fecha o arquivo sem salvar
    ActiveWorkbook.Close SaveChanges:=False

End Sub
 
Postado : 05/05/2016 7:01 am