Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador User. Mostrar todas as postagens
Mostrando postagens com marcador User. Mostrar todas as postagens

VBA Tips - GetUserName - API - Obtendo o nome do Usuário com API

Retorne o nome do usuário usando uma API.


Private Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long






Deixe os seus comentários! Envie este artigo, divulgue este link na sua rede social...


Tags: VBA, Tips, GetUserName, API, nome, usuário, user, name, username, advapi32.dll, 



VBA Basic - Verifica se o arquivo ou o caminho existem



Esta função VBA (UDF - User Defined Function) testa se um arquivo (file) ou um caminho (path) existem ou se são válidos. 

Se desejar utilizar esta função para testar um caminho, precisará obrigatoriamente colocar "\" como último caracter do Path.


Function Check()
    Dim nFrase As String
    

    Let nFrase = "c:\Bernardes\Dashboard.xlsb"

    If DeepCheck (nFrase) Then

        MsgBox "O caminho e/ou arquivo '" & nFrase & "' existe é válido." _
          , vbInformation _
          , "Informação"

    Else

        MsgBox "O caminho e/ou arquivo '" & nFrase & "' é inválido ou não existe." _
          , vbCritical _
          , "Erro"

    End If
End Sub

Function DeepCheck (nPath As String) As Boolean    
    If Dir (nPath) = vbNullString Then
        Let DeepCheck = False
    Else
        Let DeepCheck = True
    End If    
End Function


Abaixo observamos um código simples que lista todos os arquivos de um determinado diretório.


Está configurado para usar a função Dir para obter as informações sobre onde arquivos estão armazenados na pasta / diretório. Em seguida, simplesmente grava os dados da planilha. É possível utilizar os dados em uma matriz se desejar modificar e usá-lo em outro aplicativo da suíte MS Office. Esta é uma função boa quando precisa gravar um arquivo ou realizar uma operação em todos os arquivos armazenados numa determinada pasta, mas não sabe exatamente como os arquivos são chamados ou quantos são. 


Divirta-se!



Sub ListFilesInDirectory()



Range("A5:A2000").ClearContents



Dim ListFilesInDirectory (10000, 1)

Dim One_File_List   As String

Dim Number_Of_Files_In_Directory As Long



Let One_File_List = Dir$ ("C:" + "\*.*")



Do While One_File_List <> ""

    Let ListFilesInDirectory (Number_Of_Files_In_Directory, 0) = One_File_List

    Let One_File_List = Dir$

    Let Number_Of_Files_In_Directory = Number_Of_Files_In_Directory + 1

Loop



Let Number_Of_Files_In_Directory = 0



While List_Files_In_Directory(Number_Of_Files_In_Directory, 0) <> tom


    Let Range("A5").Offset(Number_Of_Files_In_Directory, 0).Value = ListFilesInDirectory (Number_Of_Files_In_Directory, 0)


    Let Number_Of_Files_In_Directory = Number_Of_Files_In_Directory + 1

Wend



End Sub

Tags: VBA, UDF, user, defined, function, path, file, exist, Dir, directory, files


VBA Tips - Usando InputBox como caixa de entrada - Use the InputBox Function to Work with User Input

A função InputBox é ideal quando precisamos ter uma única entrada de dados para o usuário em tempo de execução, sem a necessidade de se construir um Formulário (UserForm). 

A função InputBox tem este formato:

InputBox (Prompt, Title, Default, XPos, YPos, HelpFile, Context)

Onde:

Prompt é o texto que o usuário verá.

Title é um argumento opcional que representa o texto da barra de título da caixa de entrada.

Default é um argumento opcional que representa qualquer texto existente na caixa de entrada de texto.

XPos e YPos são argumentos opcionais que representam a posição horizontal e vertical da caixa de entrada no monitor.

HelpFileContext são argumentos opcionais mostrando o arquivo de ajuda, além da identificação de contexto usado para propiciar a ligação da ajuda sensível ao contexto (F1) com a caixa de entrada.

Aqui está um exemplo de como usar a função InputBox:

Public Sub TestInputBoxFunction()
    
    Dim strFirstName As String
    Dim strLastName As String
    
    ' Obtém o primeiro e o último nome.
    Let strFirstName = InputBox(Prompt:="Digite o 1º Nome.", _
        Title:="Demo: Nome Completo")

    Let strLastName = InputBox(Prompt:="Digite o seu Sobrenome.", _
        Title:="Demo: Nome Completo") 
    
    If strFirstName = "" Or strLastName = "" Then
        MsgBox Prompt:="Hei, você não digitou a informação requerida."
    Else
        MsgBox Prompt:="Você digitou " & strFirstName & " " & _
            strLastName & ".", Title:="Demo: Nome Completo"
    End If

End Sub

Tags: VBA, Tips,  inputbox, function, input, user, userform, form, formulário, 

VBA Access Basic - Conectando um Banco de Dados com Nome e Usuário - Connect to database with user name and password

Conectando um Banco de Dados com Segurança em Nível de Usuário.

Segue:


Sub addUser() 
   Dim myConnection As ADOX.Catalog
   Dim newUser As ADOX.User
   Dim userName As String
   Dim newPassword As String
   
   Set myConnection = New ADOX.Catalog

   myConnection.ActiveConnection = _
        "Provider = Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\r.mdb;" & _
        "Jet OLEDB:System database=C:\Bernardess\r.mdw;" & _
        "User id=john;Password=;"

   Set newUser = New ADOX.User

   newUser.Name = userName

   myConnection.Users.Append newUser
   myConnection.Users(newUser.Name).changePassword "", newPassword
End Sub

Tags: VBA, Access, connect, SQL, database, Connecting, Server, Data Source, ADOX, Opening, Secured, User Level, Conectando, Banco de Dados, Nome, Usuário, user, name, password


VBA Excel Basics - Bloqueando o usuário


O objeto Application do MS Excel fornece algumas formas que limitam a interação do usuário com a planilha que está usando. Isso será bem útil quando desejar impedir que os usuários interrompam alguma processo da sua aplicação MS Excel enquanto este executa algum processo demorado.

Explicando:

Defina a propriedade DisplayAlerts como False, escondendo as caixas de diálogo padrão do MS Excel enquanto o código for executado.

Configure a propriedade Interactive como False para bloquear completamente os usuários do MS Excel.

Otimize a propriedade ScreenUpdating como False, ocultando as alterações executadas via código. Um dos benefícios da definição de ScreenUpdating como False é que o código anterior é executado mais rapidamente, pois o MS Excel não precisa atualizar a tela ou rolar a planilha quando células estiverem selecionadas. 

Cada abordagem acima requer que se inclua um código no final do procedimento para retornar a configuração ao seus padrão original, caso contrário poderá bloquear um usuário permanentemente.

Segue:


Sub UserBlock()
    Dim cel As Range
    
    Let Application.Cursor = xlWait
    Let Application.Interactive = False
    Let Application.ScreenUpdating = False
    
    ' Simulando uma ação.
    For Each cel In [a1:iv999]
        cel.Select
    Next
    
    ' Restaura as configurações padrão
    Let Application.Interactive = True
    Let Application.ScreenUpdating = True
    Let Application.Cursor = xlDefault
    
    [a1].Select
End Sub


Tags: VBA, Excel, Basics, workbook, user, block, interactive, ScreenUpdating, DisplayAlerts, application

VBA Tips - Código de exemplo para recuperar o nome de usuário atual

Inline image 1

Este exemplo de código, aplicado ao Microsoft Visual Basic for Applications usa a função WNetGetUser (Função API do Windows no arquivo MPR.dll) para recuperar o nome de usuário usado para estabelecer uma conexão de rede.
' Declare for call to mpr.dll.
   Declare Function WNetGetUser Lib "mpr.dll" _
      Alias "WNetGetUserA" (ByVal lpName As String, _
      ByVal lpUserName As String, lpnLength As Long) As Long
   Const NoError = 0       'The Function call was successful
   Sub GetUserName()
      ' Buffer size for the return string.
      Const lpnLength As Integer = 255
      ' Get return buffer space.
      Dim status As Integer
      ' For getting user information.
      Dim lpName, lpUserName As String

      ' Assign the buffer size constant to lpUserName.
      lpUserName = Space$(lpnLength + 1)
      ' Get the log-on name of the person using product.
      status = WNetGetUser(lpName, lpUserName, lpnLength)
      ' See whether error occurred.
      If status = NoError Then
         ' This line removes the null character. Strings in C are null-
         ' terminated. Strings in Visual Basic are not null-terminated.
         ' The null character must be removed from the C strings to be used
         ' cleanly in Visual Basic.
         lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
      Else
         ' An error occurred.
         MsgBox "Unable to get the name."
         End
      End If
      ' Display the name of the person logged on to the machine.
      MsgBox "The person logged on this machine is: " & lpUserName
   End Sub

Reference
Tags: VBA, Excel, API, MPR.dll, WNetGetUser, user, name, nome, usuário,


Inline image 1

VBA Access - Nome do usuário na rede (Network User Name) - How to Get the Network User Name

Em alguns casos pode ser necessário que registremos os nomes dos usuários que estão acessando as nossas aplicações. Ou talvez desejemos desenvolver um modo de Login que utilize esses nomes de usuários na rede. 


  15.01.2025 
Function NetUName() As String
    ' Tratamento de erros: Se ocorrer erro, o código irá para o rótulo "Err_Handler"
    On Error GoTo Err_Handler

    ' Declaração de variáveis
    Dim lngLen As Long
    Dim strUserName As String

    ' Constantes
    Const lngcMaxFieldSize As Long = 64 ' Define o tamanho máximo do nome de usuário

    ' Inicialização das variáveis
    strUserName = String$(254, vbNullChar) ' Cria uma string de 254 caracteres nulos
    lngLen = 255 ' Inicializa o tamanho máximo de caracteres a serem lidos

    ' Chama a API para obter o nome de usuário
    ' Se o retorno da API for diferente de zero, significa que a operação foi bem-sucedida
    If apiGetUserName(strUserName, lngLen) <> 0 Then

        ' Ajusta o comprimento do nome de usuário retornado
        lngLen = lngLen - 1 ' Ajusta para remover o caractere nulo extra no final da string

        ' Verifica se o comprimento excede o tamanho máximo definido
        If lngLen > lngcMaxFieldSize Then
            lngLen = lngcMaxFieldSize ' Limita o comprimento do nome de usuário ao tamanho máximo
        End If

        ' Atribui o nome de usuário à variável de retorno, com o comprimento ajustado
        NetUName = Left$(strUserName, lngLen)
    End If

    ' Rótulo de saída, usado para finalizar a função
Exit_Handler:
    Exit Function

    ' Rótulo de erro: Caso ocorra algum erro, a função será direcionada aqui
Err_Handler:
    ' Chama a função de log de erros passando informações sobre o erro ocorrido
    Call LogError(Err.Number, Err.Description, conMod & ".NetworkUserName", , False)

    ' Retorna ao ponto de saída da função
    Resume Exit_Handler
End Function


 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

diHITT - Notícias