Notifications
Clear all

Exportar planilha em excel através do VBA

11 Posts
2 Usuários
0 Reactions
1,633 Visualizações
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Pessoal. boa tarde!

estou criando um programa em vba e não sei como exportar para pdf. Podem me ajudar?

Em anexo segue a planilha para verificação., aceito sugestões para melhoria tbm..

 
Postado : 29/03/2013 12:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Reinaldo, eu consegui atribuir uma macro para imprimir, mas esse código foi inserido em um módulo, tem como inserir um botão no meu programa e atribuir essa macro?

tentei mas não consegui.. ele apresenta um erro e me grifa de amarelo a parte que destaquei em baixo de negrito.

Private Sub CommandButton3_Click()
Dim Pasta As String, MyPath As String
Pasta = ActiveSheet.Range("P1").Value
arq = Pasta & ActiveSheet.Range("P2").Value & ActiveSheet.Range("P3").Value & ".pdf"
MyPath = "D:Teste" 'Indica em que local a pasta estará , pode ser C: ou d: ou e:....
'Verifica se o diretorio existe
If (Dir(MyPath & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
' se não existir, cria se quiser
MkDir (MyPath & Pasta)
End If
'Verifica se o arquivo já existe, se existir, deleta
'If (Dir(Arquivo) <> "") Then
' Kill Arquivo
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End Sub

 
Postado : 30/03/2013 3:59 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Ops, eu consegui tentando aqui..

tenho uma combox que me carrega dados, só que ela só carrega os dados se eu estiver com a guia da planilha (onde estão os dados) se eu estiver em outra guia e iniciar o teste do programa ela me traz erros, tem como modificar esse código para que ela só me traga dados da plan2 por exemplo.

Private Function matriz(lista As Range) As Variant
Dim matrizSaída() As Variant
Dim Item As Variant
Dim matrizÚnica As New Collection

On Error Resume Next
For Each Item In lista
If Item.Formula <> "" Then
matrizÚnica.Add Item.Value, CStr(Item.Value)
End If
Next Item
matriz = ""
If matrizÚnica.Count > 0 Then
ReDim matrizSaída(1 To matrizÚnica.Count)
For i = 1 To matrizÚnica.Count
matrizSaída(i) = matrizÚnica(i)
Next i
matriz = matrizSaída
End If
End Function

 
Postado : 30/03/2013 4:48 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Qual combobox???????

de um Formulário? ou ActiveX etc?

Att

 
Postado : 30/03/2013 4:57 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Perdão, esqueci de postar a planilha

 
Postado : 30/03/2013 6:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Perdoe me mas eu não entendi...

Eu não encontro a função que você indicou nas postagem em seu arquivo.

Qual coluna da guia "Plan2" você quer popularizar sua Combobox?

Att

 
Postado : 30/03/2013 6:29 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Alexandre, boa tarde!
olhe a partir desse arquivo...

tipo.. se eu estiver com a plan1 aberta e iniciar o visual basic ele me carrega na minha combobox os arquivos da plan1, mas se eu for visualizar a minha plan2 e iniciar novamente o visual basic ele me traz as informações da plan2. E o que eu preciso é que o código esteja fixado na plan1 para que toda vez que eu iniciar o programa as informações sejam carregadas da minha plan1 que é onde estarão meus dados.

 
Postado : 31/03/2013 2:35 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

O arquivo ficou grande, vou zipar ele.

 
Postado : 31/03/2013 2:42 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

http://www.filefactory.com/file/6orcstao7bhv/n/teste_xlsm

o arquivo ficou grande, por isso hospedei ele

 
Postado : 31/03/2013 3:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

franca, para carregar sempre o combo com os dados de uma determinada aba sem precisar estar com ela ativa, precisamos referencia-la diretamente na rotina ou criar constantes, então no evento "UserForm_Initialize" faça referencia a aba desta forma :

Veja que utilizei o nome da Aba Sheet1 : Worksheets("Sheet1"), se renomear a aba tem de ajustar na rotina.

Private Sub UserForm_Initialize()

    linha = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
    
    cbo1.List = matriz(Worksheets("Sheet1").Range("A2:A" & linha))
        
    cbo1.ListIndex = 0
    
End Sub

Espero que seja isto o que quer.

[]s

 
Postado : 31/03/2013 6:45 pm