Notifications
Clear all

Adicionar referencias por vba

6 Posts
2 Usuários
0 Reactions
2,495 Visualizações
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Estava lendo esse tópico

viewtopic.php?f=10&t=4069&p=20329&hilit=instalador#p20329

onde cita a rotina abaixo, para adicionar uma referencia caso a mesma esteja na mesma pasta da planilha

'codigo referencias
Dim bRef As Boolean
Dim i As Integer, iNref As Integer
bRef = False
iNref = Application.VBE.ActiveVBProject.References.Count
For i = 1 To iNref
If Application.VBE.VBProjects("VBAProject").References.Item(i). _
Description = "Microsoft Windows Common Controls-2 6.0 (SP3)" Then
bRef = True
End If
Next
If bRef = False Then
Application.VBE.ActiveVBProject.References.AddFromFile ThisWorkbook.Path & "MSCOMCT2.OCX"
End If
'esta biblioteca é muito boa. Contém um controle Calendário
'bastante flexível, inclusive de horas

Rotina funciona quando a referencia não está instalada, mas quando já está gera um erro de conflito dizendo que a biblioteca ja exite .

como resolver isso?

Obrigado

 
Postado : 24/06/2013 8:00 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente usar um tratamento de erro (On Error Resume Next )

....Código
 GoTo CleanUp

....Código

CleanUp:
    If BoolExists = True Then
        MsgBox "A Referência já existe"
    Else
        MsgBox " Referência adicionada com sucesso"
    End If

    Set vbProj = Nothing
    Set VBAEditor = Nothing
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/06/2013 4:14 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Beto,

Rotina funciona quando a referencia não está instalada, mas quando já está gera um erro de conflito dizendo que a biblioteca ja exite .
como resolver isso?

A principio esta rotina funciona corretamente, existindo ou não a Referencia, se analisar as Condições "IFs" ou seja :
If bRef = False Then

Só será instalada se não existir, portanto, primeiramente passe em uqal versão do Excel (office) está utilizando, depois verifique se o Nome da Referencia digitado corresponde com o que se encontra na caixa Referencias do VBE.

Um ajuste na Rotina acima irá listar em uma aba as referencias instaladas, será mais fácil para verificar se o nome está digitado corretamente.

    Private Sub ListaReferencias()
        Dim bRef As Boolean
        Dim i As Integer, iNref As Integer
        Dim iLin As Integer
    
        iLin = 1
        
        ActiveSheet.Cells(iLin, 1).Value = "Referencias"
        
        bRef = False
        iNref = Application.VBE.ActiveVBProject.References.Count
    
        For i = 1 To iNref
            
            If Application.VBE.VBProjects("VBAProject").References.Item(i).Description = "Microsoft Windows Common Controls-2 6.0 (SP3)" Then
                bRef = True
            End If
            
            iLin = iLin + 1
           
           ' MsgBox Application.VBE.VBProjects("VBAProject").References.Item(i).Description
            ActiveSheet.Cells(iLin, 1).Value = Application.VBE.VBProjects("VBAProject").References.Item(i).Description

        Next
    
        If bRef = False Then
            Application.VBE.ActiveVBProject.References.AddFromFile ThisWorkbook.Path & "MSCOMCT2.OCX"
        End If
        'esta biblioteca é muito boa. Contém um controle Calendário
        'bastante flexível, inclusive de horas
    
    End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/06/2013 6:17 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Bom Dia!

Realmente era um problema na versão.

listo abaixo as referencias do meu projeto

Visual Basic For Applications
Microsoft Excel 15.0 Object Library
Microsoft Office 15.0 Object Library
OLE Automation
MIcrosoft Forms 2.0 Object Library
MIcrosoft Office Web discussions client Type Library
MIcrosoft Windows Common Controls 6.0 (SP6)

Será que preciso fazer essa rotina para todas?

ou apenas para:

o controle Listview: (MIcrosoft Windows Common Controls 6.0 (SP6) )
e monthview: (MIcrosoft Windows Common Controls-2 6.0 (SP6))

0utra questão seria se tem como registra-las (regsvr32 ) via VBA ?

 
Postado : 25/06/2013 8:06 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Beto existem algumas instruções para registrar, lembrando que antes de tudo, na maioria dos casos, como estamos lidando com Bibliotecas do SO, geralmente temos que estar como administrador do sistema e em alguns casos é necessário reiniciar o PC, logicamente isto serve se resolver instalar em algum outro PC onde não é administrador.

De qq forma de uma olhada nos links abaixo, se pesquisar no Google por "regsvr32 excel vba", encontrara varias outras dicas :

How to run regsvr32 as administrator with VBA
http://social.msdn.microsoft.com/Forums ... r-with-vba

Visual Basic > API and Miscellaneous sample source codes
http://www.visualbasic.happycodings.com ... ode36.html

IMPORTANTE : "LEMBRE-SE SEMPRE DE CRIAR UM PONTO DE RESTAURAÇÃO DO WINDOWS PARA SE PRECISAR DESFAZER, POIS COMO DISSE ESTAMOS LIDANDO COM ARQ DE SISTEMA, JÁ VI MUITOS PROBLEMAS."

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/06/2013 9:02 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Na verdade eu ja havia feito uma busca, mas não entendi como posso aplicar as rotinas, por isso perguntei aqui
mas obrigado mesmo assim

 
Postado : 25/06/2013 10:11 am