none
Digito 9 para DDD11 RRS feed

  • Pergunta

  • Boa tarde, como devem saber, agora foi acrescentado o digito 9 em todas as linhas moveis com DDD11.

    Alguem conhece alguma maneira de acrescentar esse digito aos contatos do outlook de forma automatizada?


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    segunda-feira, 30 de julho de 2012 17:59

Respostas

  • Sub Exemplo()
        Dim obj As Object
        Dim cti As ContactItem
        
        For Each obj In Session.GetDefaultFolder(olFolderContacts).Items
            If TypeName(obj) = "ContactItem" Then
                Set cti = obj
                cti.AssistantTelephoneNumber = Processar(cti.AssistantTelephoneNumber)
                cti.Business2TelephoneNumber = Processar(cti.Business2TelephoneNumber)
                cti.BusinessTelephoneNumber = Processar(cti.BusinessTelephoneNumber)
                cti.CallbackTelephoneNumber = Processar(cti.CallbackTelephoneNumber)
                cti.CarTelephoneNumber = Processar(cti.CarTelephoneNumber)
                cti.CompanyMainTelephoneNumber = Processar(cti.CompanyMainTelephoneNumber)
                cti.Home2TelephoneNumber = Processar(cti.Home2TelephoneNumber)
                cti.HomeTelephoneNumber = Processar(cti.HomeTelephoneNumber)
                cti.MobileTelephoneNumber = Processar(cti.MobileTelephoneNumber)
                cti.OtherTelephoneNumber = Processar(cti.OtherTelephoneNumber)
                cti.PrimaryTelephoneNumber = Processar(cti.PrimaryTelephoneNumber)
                cti.RadioTelephoneNumber = Processar(cti.RadioTelephoneNumber)
                cti.TTYTDDTelephoneNumber = Processar(cti.TTYTDDTelephoneNumber)
                cti.Save
            End If
        Next obj
        
    End Sub
    
    Private Function Processar(sNúmero As String) As String
        If sNúmero Like "([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" Then
            Processar = Mid(sNúmero, 1, 9) & "9" & Mid(sNúmero, 10)
        Else
            Processar = sNúmero
        End If
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 31 de julho de 2012 21:51
  • Alexandre,

    aqui tem o código para isso: http://carlosfprocha.com/blogs/paleo/archive/2012/08/01/adicionando-o-d-237-gito-9-para-quem-usa-o-c-243-digo-da-operadora.aspx


    Abraço, Carlos F. P. Rocha - Conheça http://www.carlosfprocha.com

    quinta-feira, 13 de setembro de 2012 13:36
  • hum, interessante, nao entendo muito de programacao, mas deu para entender oque faz.

    um unico detalhe, é que existem diversas variaveis que devem ser consideradas, se o numero é ou nao de sao paulo, se é um numero de celular, se é da operadora vivo, tim, oi, claro, pois a nextel nao possui esse novo digito, entre alguns outros detalhes.

    enquanto nao sai alguma atualizacao da microsoft, estou instruindo os usuarios a utilizar os softwares disponiveis na internet e fazer as alterações pelos telefones, e depois sincronizar com o outlook.

    Mas o ideal seria se fosse possivel fazer essa alteracao em massa nos contatos dos usuarios.

    grato pela ajuda


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    terça-feira, 31 de julho de 2012 22:03

Todas as Respostas

  • Olá Alexandre, boa tarde.

    Um simples campo de texto não resolveria seu problema?

    Ou você precisa de uma máscara para armazenar esse quarto digito?

    Nos forneça mais detalhes.


    Hezequias Vasconcelos

    segunda-feira, 30 de julho de 2012 20:49
    Moderador
  • Hezequias, nao sei se voce é sao paulo,

    mas agora, em sao paulo todos os telefones celulares possuem 9 digitos e nao 8, e sao identificados pelo digito 9.  se meu numero era.

    (11) 1234-5678  agora ele virou (11) 91234-5678.

    Oque eu gostaria, era de alguma forma, acrescentar o digito 9 na frente de todos os numeros, apos o codigo de area.

    para ios e android, ja sairam diversos aplicativos, porem nao vi nenhum para agenda de contatos do outlook


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    segunda-feira, 30 de julho de 2012 22:23
  • Olá Alexandre, boa tarde.

    Veja duas formas de resolver a sua dificuldade.

    1 - Na forma nativa do programa esta alteração ainda não existe, mas acredito que já esteja no roadmap da Microsoft o seu desenvolvimento assim você pode aguardar a liberação desse pack.

    2 - A única forma que vejo no momento que você pode aplicar é o de desenvolver um formulário manualmente que contemple essa alteração.

    Espero ter ajudado.



    Hezequias Vasconcelos

    terça-feira, 31 de julho de 2012 17:48
    Moderador
  • Sub Exemplo()
        Dim obj As Object
        Dim cti As ContactItem
        
        For Each obj In Session.GetDefaultFolder(olFolderContacts).Items
            If TypeName(obj) = "ContactItem" Then
                Set cti = obj
                cti.AssistantTelephoneNumber = Processar(cti.AssistantTelephoneNumber)
                cti.Business2TelephoneNumber = Processar(cti.Business2TelephoneNumber)
                cti.BusinessTelephoneNumber = Processar(cti.BusinessTelephoneNumber)
                cti.CallbackTelephoneNumber = Processar(cti.CallbackTelephoneNumber)
                cti.CarTelephoneNumber = Processar(cti.CarTelephoneNumber)
                cti.CompanyMainTelephoneNumber = Processar(cti.CompanyMainTelephoneNumber)
                cti.Home2TelephoneNumber = Processar(cti.Home2TelephoneNumber)
                cti.HomeTelephoneNumber = Processar(cti.HomeTelephoneNumber)
                cti.MobileTelephoneNumber = Processar(cti.MobileTelephoneNumber)
                cti.OtherTelephoneNumber = Processar(cti.OtherTelephoneNumber)
                cti.PrimaryTelephoneNumber = Processar(cti.PrimaryTelephoneNumber)
                cti.RadioTelephoneNumber = Processar(cti.RadioTelephoneNumber)
                cti.TTYTDDTelephoneNumber = Processar(cti.TTYTDDTelephoneNumber)
                cti.Save
            End If
        Next obj
        
    End Sub
    
    Private Function Processar(sNúmero As String) As String
        If sNúmero Like "([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" Then
            Processar = Mid(sNúmero, 1, 9) & "9" & Mid(sNúmero, 10)
        Else
            Processar = sNúmero
        End If
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 31 de julho de 2012 21:51
  • hum, interessante, nao entendo muito de programacao, mas deu para entender oque faz.

    um unico detalhe, é que existem diversas variaveis que devem ser consideradas, se o numero é ou nao de sao paulo, se é um numero de celular, se é da operadora vivo, tim, oi, claro, pois a nextel nao possui esse novo digito, entre alguns outros detalhes.

    enquanto nao sai alguma atualizacao da microsoft, estou instruindo os usuarios a utilizar os softwares disponiveis na internet e fazer as alterações pelos telefones, e depois sincronizar com o outlook.

    Mas o ideal seria se fosse possivel fazer essa alteracao em massa nos contatos dos usuarios.

    grato pela ajuda


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    terça-feira, 31 de julho de 2012 22:03
  • Olá Alexandre, boa noite.

    Realmente da forma que descreve a melhor solução é aguardar a futura atualização que será distribuida pela Microsoft.

    Agradeço ao Benzadeus pelo código desenvolvido para esta solução, com certeza ajudará a muitos usuários.

    Desculpe não poder ajudar mais.


    Hezequias Vasconcelos


    terça-feira, 31 de julho de 2012 22:13
    Moderador
  • Bom, um codigo que me foi passado, se nao me engano foi desenvolvido por alguem de windows phone (Mário Abreu)

    nao testei, mas aparenta fazer as verificações necessarias.

    Sub ResolveOperadora()
    
        Dim oFolder As MAPIFolder
        Set oFolder = Application.ActiveExplorer.CurrentFolder
        If Left(UCase(oFolder.DefaultMessageClass), 11) <> "IPM.CONTACT" Then
            MsgBox "Selecione pasta de contatos", vbExclamation
            Exit Sub
        End If
        
        Dim Contador As Integer
        Dim Operadora As String
        Dim Area As String
        Contador = 0
        
    pedeOperadora:
        Operadora = InputBox(Prompt:="Digite o codigo de sua operadora de longa distancia:", _
                    Title:="Digite sua operadora:", Default:="00")
      
    testaOperadora:
            If Operadora = vbNullString Then Exit Sub
            If Operadora = "00" Or _
               Operadora = "" Then
                    Operadora = InputBox(Prompt:="Digite Algum valor:", _
                    Title:="Digite sua operadora:", Default:="00")
                    GoTo testaOperadora
            Else
                If (Len(Operadora) > 2) Or _
                   (Len(Operadora) < 2) Or _
                    IsNumeric(Operadora) = False Then
                     MsgBox "Operadora deve ser dois digitos númericos!", vbError
                     GoTo pedeOperadora
                End If
            End If
            
    pedeArea:
        Area = InputBox(Prompt:="Digite o codigo de area de sua cidade:", _
                    Title:="Digite seu codigo de Area:", Default:="00")
      
    testaArea:
            If Area = vbNullString Then Exit Sub
            If Area = "00" Or _
               Area = "" Then
                    Area = InputBox(Prompt:="Digite Algum valor:", _
                    Title:="Digite seu codigo de Area:", Default:="00")
                    GoTo testaArea
            Else
                If (Len(Area) > 2) Or _
                   (Len(Area) < 2) Or _
                    IsNumeric(Area) = False Then
                     MsgBox "Codigo de Area deve ser dois digitos númericos!", vbError
                     GoTo pedeArea
                End If
            End If
      
        On Error GoTo handle
        
         MsgBox "Ao clicar em OK o Processo de alteraçao comecará. Seu Outlook Permanecerá em um estado " & _
                "não responsivo até o termino onde uma mensagem informará o numero de contatos processados.", vbInformation
    
        
    
        Dim oItem
        For Each oItem In oFolder.Items
            Dim oContact As ContactItem
            Set oContact = oItem
            If Not oContact Is Nothing Then
                With oContact
                    
                    .AssistantTelephoneNumber = CorrigeNumeros(.AssistantTelephoneNumber, Operadora, Area)
                    .Business2TelephoneNumber = CorrigeNumeros(.Business2TelephoneNumber, Operadora, Area)
                    .BusinessFaxNumber = CorrigeNumeros(.BusinessFaxNumber, Operadora, Area)
                    .BusinessTelephoneNumber = CorrigeNumeros(.BusinessTelephoneNumber, Operadora, Area)
                    .CallbackTelephoneNumber = CorrigeNumeros(.CallbackTelephoneNumber, Operadora, Area)
                    .CarTelephoneNumber = CorrigeNumeros(.CarTelephoneNumber, Operadora, Area)
                    .CompanyMainTelephoneNumber = CorrigeNumeros(.CompanyMainTelephoneNumber, Operadora, Area)
                    .Home2TelephoneNumber = CorrigeNumeros(.Home2TelephoneNumber, Operadora, Area)
                    .HomeFaxNumber = CorrigeNumeros(.HomeFaxNumber, Operadora, Area)
                    .HomeTelephoneNumber = CorrigeNumeros(.HomeTelephoneNumber, Operadora, Area)
                    .ISDNNumber = CorrigeNumeros(.ISDNNumber, Operadora, Area)
                    .MobileTelephoneNumber = CorrigeNumeros(.MobileTelephoneNumber, Operadora, Area)
                    .OtherFaxNumber = CorrigeNumeros(.OtherFaxNumber, Operadora, Area)
                    .OtherTelephoneNumber = CorrigeNumeros(.OtherTelephoneNumber, Operadora, Area)
                    .PagerNumber = CorrigeNumeros(.PagerNumber, Operadora, Area)
                    .PrimaryTelephoneNumber = CorrigeNumeros(.PrimaryTelephoneNumber, Operadora, Area)
                    .RadioTelephoneNumber = CorrigeNumeros(.RadioTelephoneNumber, Operadora, Area)
                    .TelexNumber = CorrigeNumeros(.TelexNumber, Operadora, Area)
                    .TTYTDDTelephoneNumber = CorrigeNumeros(.TTYTDDTelephoneNumber, Operadora, Area)
                    
                    .Save
                    Contador = Contador + 1
                End With
            End If
    nextItem:
        Next
    
        MsgBox Contador & " contatos processados.", vbInformation
        
        Exit Sub
    
    handle:
        Resume nextItem
        
    End Sub
    
    
    Public Function CorrigeNumeros(strNumero As String, strOperadora As String, strArea As String) As String
        Dim Corrigido As String
        Dim Ramal As String
        Dim ValidaRamal As Integer
        Corrigido = ""
        Ramal = ""
        strNumero = Trim(strNumero)
        CorrigeNumeros = strNumero
        If strNumero = "" Then Exit Function
        strNumero = Replace(strNumero, " ", "")
        strNumero = Replace(strNumero, "(", "")
        strNumero = Replace(strNumero, ")", "")
        strNumero = Replace(strNumero, ".", "")
        strNumero = Replace(strNumero, ",", "")
        strNumero = Replace(strNumero, "-", "")
        
        ValidaRamal = InStr(strNumero, "X")
        If Not IsNull(ValidaRamal) Then
            If ValidaRamal > 0 Then
                Ramal = Mid(strNumero, ValidaRamal)
                strNumero = Left(strNumero, ValidaRamal - 1)
            End If
        End If
        
        If Left(strNumero, 1) = "+" Then 'Testa se formato E.163
            If Left(strNumero, 3) = "+55" Then 'Testa se for do Brasil
                If Right(Left(strNumero, 5), 2) = "11" Then
                    If Right(Left(strNumero, 6), 1) = "6" Or Right(Left(strNumero, 6), 1) = "7" Or Right(Left(strNumero, 6), 1) = "8" Or Right(Left(strNumero, 6), 1) = "9" Then
                        Corrigido = "0" & strOperadora & "119" & Mid(strNumero, 6) 'Corrige com um 9 extra para Sao Paulo
                    Else
                        Corrigido = "0" & strOperadora & Mid(strNumero, 4)
                    End If
                Else
                    Corrigido = "0" & strOperadora & Mid(strNumero, 4)
                End If
            
                Corrigido = "0" & strOperadora & Mid(strNumero, 4)
            Else
                Corrigido = "00" & strOperadora & Mid(strNumero, 2)
            End If
        ElseIf Left(strNumero, 2) = "00" Then 'Testa se padrão internacional
            Corrigido = "00" & strOperadora & Mid(strNumero, 5)
        ElseIf Len(strNumero) = 10 Then 'Testa se for americano sem digitos e corrige a discagem
            Corrigido = "00" & strOperadora & "1" & strNumero
        ElseIf Len(strNumero) = 8 Then 'Testa se for local com 8 digitos
            If strArea = "11" Then
                If Left(strNumero, 1) = "6" Or Left(strNumero, 1) = "7" Or Left(strNumero, 1) = "8" Or Left(strNumero, 1) = "9" Then
                    Corrigido = "0" & strOperadora & strArea & "9" & strNumero 'Corrige com um 9 extra para Sao Paulo
                Else
                    Corrigido = "0" & strOperadora & strArea & strNumero
                End If
            Else
                Corrigido = "0" & strOperadora & strArea & strNumero
            End If
        ElseIf Len(strNumero) = 9 Then 'Testa se for local com 9 digitos
            If strArea = "11" Then
                If Left(strNumero, 1) = "6" Or Left(strNumero, 1) = "7" Or Left(strNumero, 1) = "8" Or Left(strNumero, 1) = "9" Then
                    Corrigido = "0" & strOperadora & strArea & "9" & strNumero 'Corrige com um 9 extra para Sao Paulo
                Else
                    Corrigido = "0" & strOperadora & strArea & strNumero
                End If
            Else
                Corrigido = "0" & strOperadora & strArea & strNumero
            End If
        ElseIf Len(strNumero) = 13 Then 'Testa se esta no formato operadora
            If Right(Left(strNumero, 5), 2) = "11" Then
                If Right(Left(strNumero, 6), 1) = "6" Or Right(Left(strNumero, 6), 1) = "7" Or Right(Left(strNumero, 6), 1) = "8" Or Right(Left(strNumero, 6), 1) = "9" Then
                    Corrigido = "0" & strOperadora & "119" & Mid(strNumero, 6) 'Corrige com um 9 extra para Sao Paulo
                Else
                    Corrigido = "0" & strOperadora & Mid(strNumero, 4)
                End If
            Else
                Corrigido = "0" & strOperadora & Mid(strNumero, 4)
            End If
        ElseIf Len(strNumero) = 14 Then 'Testa se esta no formato operadora
            If Right(Left(strNumero, 5), 2) = "11" Then
                    Corrigido = "0" & strOperadora & Mid(strNumero, 4)
            End If
        ElseIf Left(strNumero, 4) = "55" & strArea Then ' Corrige contatos sem + do Brasil
            Corrigido = "0" & strOperadora & Mid(strNumero, 3)
        Else
            Corrigido = strNumero
        End If
        If Corrigido = "" Then Exit Function
        
        If Not IsNull(ValidaRamal) Then
            If ValidaRamal > 0 Then
                CorrigeNumeros = Corrigido & Ramal
            Else
                CorrigeNumeros = Corrigido
            End If
        Else
            CorrigeNumeros = Corrigido
        End If
    
    End Function
    Public Function IsNumericOnly(TestString As String) As Boolean
        
        Dim sTemp As String
        Dim iLen As Integer
        Dim iCtr As Integer
        Dim sChar As String
        
        'returns true if all characters in string are numeric
        'returns false otherwise or for empty string
        
        'this is different than VB's isNumeric
        'isNumeric returns true for something like 90.09
        'This function will return false
        
        sTemp = TestString
        iLen = Len(sTemp)
        If iLen > 0 Then
            For iCtr = 1 To iLen
                sChar = Mid(sTemp, iCtr, 1)
                If Not sChar Like "[0-9]" Then Exit Function
            Next
        
        IsNumericOnly = True
        End If
        
    End Function
    
    
    


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    terça-feira, 31 de julho de 2012 22:21
  • Testou o código que fiz? As duas únicas linhas que você talvez precise alterar são:

        If sNúmero Like "([0-9][0-9]) [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" Then
            Processar = Mid(sNúmero, 1, 9) & "9" & Mid(sNúmero, 10)


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 31 de julho de 2012 22:51
  • Benzadeus

    nao cheguei a testar, mas pelo codigo, me corrija se eu estiver errado, ele vai adicionar o numero 9 para todos os numeros correto?

    Porem, nao sao todos os numeros que devem ser alterados.

    mesmo com o codigo que eu postei. que faz diversas verificações, ainda existem numeros sendo alterados indevidamente.

    numeros de telefone que se iniciam com 77 e 78 nao devem ter o 9 acrescentado.

    assim como alguns numeros iniciados com 5. 

    existem ainda algumas consideracoes, nao é todo mundo que tem os numeros no formato (DD) xxx-xxxx

    muitas vezes o usuario poe somente o numero e sem DDD, as vezes ele mesmo coloca 5511xxxx-xxxx

    resumindo, existem muitas "tratativas" que devem ser realizadas.

    fico grato pelo codigo gerado, mas ele nao atende em 100%.


    Foi util? Classifique ^^ MCP - MCDST - MCTS - MCSA - MCITP www.nrv.com.br www.alexandrenakagawa.com.br

    quarta-feira, 1 de agosto de 2012 00:03
  • Sim, concordo. Meu código atende apenas para números da forma (XXX) XXXX-XXXX. Eu não sabia dessa questão do 77 e 78. Tem pessoas também que não gravam o número da forma adequada, muitas vezes até suprimindo hífens e parânteses.

    No entanto, está bastante simples adaptar meu código para suas necessidades. Eu sugeriria o uso de uma cláusa Select Case na função Processar. Vi quais são as regras, que são chatas, mas fáceis de implementar.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 1 de agosto de 2012 00:59
  • Olá Alexandre,

    A Mondial Tecnologia está disponibilizando um aplicativo para fazer estas atualizações.

    O download pode ser feito gratuitamente atavés do link: www.mondial.com.br/digit9

    Abraços.

    quarta-feira, 22 de agosto de 2012 13:33
  • Alexandre,

    aqui tem o código para isso: http://carlosfprocha.com/blogs/paleo/archive/2012/08/01/adicionando-o-d-237-gito-9-para-quem-usa-o-c-243-digo-da-operadora.aspx


    Abraço, Carlos F. P. Rocha - Conheça http://www.carlosfprocha.com

    quinta-feira, 13 de setembro de 2012 13:36