O gaucho estava respondendo a um interrogatorio por ter matado o seu vizinho, um paulista. Sabe o que e seu delegado explicava ele. Ele queria me comer. Todo dia que eu saia de casa, passava perto dele e ele ficava me cantando. Ai um dia eu perdi a paciencia e dei tres tiros nele. Mas so por causa disso? Por que voce nao tentou conversar com ele? Bem, seu delegado, eu tentei, mas o problema e que ele estava quase me convencendo. Ola Pessoal,Mesmo sendo componentes nativos do VBA o TreeView e o ListView podem apresentar problemas quando utilizados em maquinas diferentes da que ele foi criado.Esse problema deve-se a versao dos mesmo que pode variar de maquina para maquina.Quando criamos um projeto e utilizamos algum componente do VBA o ID desse objeto e associado ao projeto, caso ao ser carregado ele verifique que o ID do objeto instalado na maquina e diferente do associado ao projeto ocorrera o erro.Para solucionar esse problema irei explicar uma maneira de contornar essa situacao. Como o erro ocorre quando a versao e diferente da "original" iremos utilizar a versao que esta instalada na maquina.OK mas como vamos fazer isso se nao sabemos qual e a versao? A boa noticia e que o VBA fara isso automaticamente e nao precisamos nos preocupar com isso, para isso vamos criar os controles em tempo de execucao utilizando o seguinte codigo.Para o TreeViewSet t = Me.Controls.Add("MSComctlLib.TreeCtrl")Para o ListViewSet t = Me.Controls.Add("MSComctlLib.ListViewCtrl.2")Todas as outras propriedades dos controles podem ser ajustadas posteriormente como quantidade de nos no TreeView e quantidades de colunas no ListView.Com isso solucionamos esse problema que vem incomodando geracoes de programadores do Office de uma maneira bem simples. Uma necessidade recorrente em projetos de automatizacao de processos, e o envio de emails para diversos usuarios.Esta tarefa pode ser realizada rapidamente atraves de qualquer aplicacao do Office, inclusive do Outlook :)Vamos ao Codigo que e bem simples:Sub EnviaEmail(EMail As String, Optional FPath As String = vbNullString)'officevb.com'desenvolvido por Bruno Leite Dim appOutlook As Object Dim myMail As Object 'Verifica se Outlook esta aberto. Caso nao esteja, criar nova instancia On Error Resume Next Set appOutlook = GetObject(, "Outlook.Application") If appOutlook Is Nothing Then Set appOutlook = CreateObject("Outlook.Application") End If On Error GoTo 0 Set myMail = appOutlook.CreateItem(0) '0 e um item de e-mail With myMail .to = EMail .Subject = StrAssunto If FPath <> vbNullString Then .Attachments.Add FPath End If .Body = StrMsg .Send End WithEnd SubEsta Sub recebe como parametro um endereco de email e um parametro opcional com o nome do arquivo para envio como anexo.As variaveis StrAssunto e StrMsg , sao publicas e contem os textos para o assunto e o corpo do email, eles foram preenchidos num formulario anteriormente. Uma tarefa comum aos projetos desenvolvidos a partir do office 2007 e a criacao de barra de tarefas para execucao das rotinas da ferramenta criada chamada de Ribbon.Porem a MS nao disponibilizou uma ferramenta pratica e intuitiva para a criacao desse tipo de componente, Algum tempo atras encontrei uma planilha na NET que continha os ids das