Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

VBA Tips - Funções - Functions

Inline image 1

Será que você conhece algumas funções do VBA?

Funções

O que fazem

Abs

Retorna o valor absoluto de um número

Array

Returns a variant containing an array

Asc

Converts the first character of a string to its ASCII value

Atn

Returns the arctangent of a number

Choose

Returns a value from a list of items

Chr

Converts an ANSI value to a string

Cos

Returns a number's cosine

CurDir

Returns the current path

Date

Returns the current system date

DateAdd

Returns a date to which a specified time interval has been

 

added — for example, one month from a particular date

DateDiff

Returns an integer showing the number of specified time intervals between two dates, for example the number of months between now and your birthday

DatePart

Returns an integer containing the specified part of a given

 

date — for example, a date's day of the year

DateSerial

Converts a date to a serial number

DateValue

Converts a string to a date

Day

Returns the day of the month from a date value

Dir

Returns the name of a file or directory that matches a pattern

Erl

Returns the line number that caused an error

Err

Returns the error number of an error condition

Error

Returns the error message that corresponds to an error number

Exp

Returns the base of the natural logarithm (e) raised to a power

FileLen

Returns the number of bytes in a file

Fix

Returns a number's integer portion

Format

Displays an expression in a particular format

GetSetting

Returns a value from the Windows registry

Hex

Converts from decimal to hexadecimal

Hour

Returns the hours portion of a time

InputBox

Displays a box to prompt a user for input

InStr

Returns the position of a string within another string

Int

Returns the integer portion of a number

IPmt

Returns the interest payment for an annuity or loan

IsArray

Returns True if a variable is an array

IsDate

Returns True if an expression is a date

IsEmpty

Returns True if a variable has not been initialized

IsError

Returns True if an expression is an error value

IsMissing

Returns True if an optional argument was not passed to a procedure

IsNull

Returns True if an expression contains no valid data

IsNumeric

Returns True if an expression can be evaluated as a number

IsObject

Returns True if an expression references an OLE Automation object

LBound

Returns the smallest subscript for a dimension of an array

LCase

Returns a string converted to lowercase

Left

Returns a specified number of characters from the left of a string

Len

Returns the number of characters in a string

Log

Returns the natural logarithm of a number to base e

LTrim

Returns a copy of a string, with any leading spaces removed

Mid

Returns a specified number of characters from a string

Minute

Returns the minutes portion of a time value

Month

Returns the month from a date value

MsgBox

Displays a message box and (optionally) returns a value

Now

Returns the current system date and time

RGB

Returns a numeric RGB value representing a color

Right

Returns a specified number of characters from the right of a string

Rnd

Returns a random number between 0 and 1

RTrim

Returns a copy of a string, with any trailing spaces removed

Second

Returns the seconds portion of a time value

Sgn

Returns an integer that indicates a number's sign

Shell

Runs an executable program

Sin

Returns a number's sine

Space

Returns a string with a specified number of spaces

Sqr

Returns a number's square root

Str

Returns a string representation of a number

StrComp

Returns a value indicating the result of a string comparison

String

Returns a repeating character or string

Tan

Returns a number's tangent

Time

Returns the current system time

Timer

Returns the number of seconds since midnight

TimeSerial

Returns the time for a specified hour, minute, and second

TimeValue

Converts a string to a time serial number

Trim

Returns a string without leading or trailing spaces

TypeName

Returns a string that describes a variable's data type

UBound

Returns the largest available subscript for an array's dimension

UCase

Converts a string to uppercase

Val

Returns the numbers contained in a string

VarType

Returns a value indicating a variable's subtype

Weekday

Returns a number representing a day of the week

Year

Returns the year from a date value


Tags: Office, functions


André Luiz Bernardes

VBA Tip - Acessando arquivo Texto - Text File access - Scripting Runtime object library - Scrrun.dll

Inline image 1

É possível usar o Scripting Runtime object library para manipular arquivos texto. O exemplo abaixo assume que seu projeto VBA acrescentou uma referência à biblioteca Microsoft Scripting Runtime. 

Sub WriteToTextFile()
Dim fs As Scripting.FileSystemObject, f As Scripting.TextStream
Dim l As Long
    Set fs = New FileSystemObject
    Set f = fs.OpenTextFile("C:\FolderName\TextFileName.txt", _
        ForWriting, True)
    With f
        For l = 1 To 100
            .WriteLine "This is line number " & l
        Next l
        .Close
    End With
    Set f = Nothing
    Set fs = Nothing
End Sub

Sub AppendToTextFile()
Dim fs As Scripting.FileSystemObject, f As Scripting.TextStream
Dim l As Long
    Set fs = New FileSystemObject
    Set f = fs.OpenTextFile("C:\FolderName\TextFileName.txt", _
        ForAppending, True)
    With f
        For l = 1 To 100
            .WriteLine "Added line number " & l
        Next l
        .Close
    End With
    Set f = Nothing
    Set fs = Nothing
End Sub

Sub ReadFromTextFile()
Dim fs As Scripting.FileSystemObject, f As Scripting.TextStream
Dim l As Long
    Set fs = New FileSystemObject
    Set f = fs.OpenTextFile("C:\FolderName\TextFileName.txt", _
        ForReading, False)
    With f
        l = 0
        While Not .AtEndOfStream
            l = l + 1
            Cells(l, 5).Formula = .ReadLine
        Wend
        .Close
    End With
    Set f = Nothing
    Set fs = Nothing
End Sub


Tags: VBA, Tips, files, directory, folder, Scripting Runtime object library, Scrrun.dll, FileSystemObject, GetFiles, ChangeFileAttributes, 



André Luiz Bernardes

VBA Excel - Criando Teclas de Atalho.

Inline image 1

Quando criamos códigos VBA necessitamos executá-los e isso pode ser feito de muitos modos: 

  • Através de Eventos,
  • Através de funções personalizadas (UDF),
  • Através de um objecto que irá chamar o nosso código (quer esteja na worksheet ou na ribbon), e
  • Através de teclas de atalho (shortcuts)

A possibilidade de utilizar determinadas teclas para chamar o código que criamos é muito prática e útil. Neste artigo veremos algumas formas e exemplos de como associar teclas de atalho a procedimentos, compreendendo as principais diferenças entre os dois métodos disponíveis.

A maneira mais simples e usada pela maioria dos utilizadores, é selecionando o separador Developer, escolhendo a opção Macros (ou pressionando as teclas Alt+F8)

New Picture

Na janela com as macros disponíveis, selecionamos a macro pretendida e escolhemos a opção Options.

New Picture (2)

Abrirá uma nova janela onde podemos indicar que tecla de atalho iremos associar à macro seleccionada.

New Picture (1)

Neste exemplo, visível na imagem anterior, para chamar a Macro1, a combinação definida é Ctrl+a. Podemos indicar diversas letras (apenas letras) e se indicarmos uma letra em minúscula a combinação associada, por exemplo, será Ctrl+a e se indicarmos a letra em maiúscula a combinação associada será Ctrl+Shift+a.

Alguns exemplos:

a = Ctrl + a 

u = Ctrl + u 

A = Ctrl + Shift + a 

U = Ctrl + Shift + u

Simples e prático.

No entanto isto limita-nos à utilização de determinadas combinações de teclas , e isso em alguns casos, poderá ser um problema. Além disso não permite a atribuição dinâmica e a utilização de teclas especiais. Mas isto pode ser resolvido utilizando VBA.

Para atribuir uma tecla de atalho a uma macro, utilizamos o método Application.OnKey()

Application.OnKey "combinação", "procedimento a associar"

Exemplo:

Application.OnKey "^a", "Macro1"

Neste caso é associada a combinação Ctrl+a à Macro1.

Mas vejamos a tabela de códigos de teclas especiais, que além das letras e números podem ser utilizados:

Tecla Código
BACKSPACE{BACKSPACE} ou {BS}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
CLEAR{CLEAR}
DELETE ou DEL{DELETE} ou {DEL}
DOWN ARROW{DOWN}
END{END}

ENTER (teclado numérico)

{ENTER}
ENTER~ (tilde)
ESC {ESCAPE} ou {ESC}
HELP{HELP}
HOME {HOME}
INS{INSERT}
LEFT ARROW {LEFT}

NUM LOCK

{NUMLOCK}
PAGE DOWN{PGDN}

PAGE UP

{PGUP}
RETURN{RETURN}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1 a F15{F1} até {F15}

E as teclas que são usadas para combinar:

TeclaCódigo
SHIFT+ (adicção)
CTRL ^ (acento circunflexo)
ALT% (percentagem)

Assim, com a lista de códigos, podemos combinar e associar conjuntos de teclas a macros que tenhamos criado/gravado. Podemos utilizar o evento Workbook_Open(), que é executado quando o Excel é aberto, e definindo ao abrir as associações que queremos, por exemplo:

 

Private Sub Workbook_Open()
Application.OnKey "+^{UP}", "MostraResultado"
Application.OnKey "%{INSERT}", "CopiaDados"
End Sub


Neste caso, a combinação Shift+Ctrl+Seta Cima chama o procedimento MostraResultado e a combinação Alt+Insert chama o procedimento CopiaDados.

No entanto estas atribuições funcionam se os procedimentos estiverem definidos num módulo, pois se estiverem definidos no Workbook ou em determinado Worksheet não irá funcionar. Nestes casos é necessário definir o caminho para eles, como é possível ver no exemplo seguinte:

 Private Sub Workbook_Open()
Application.OnKey "+^{UP}", "ThisWorkbook.MostraResultado"
Application.OnKey "%{INSERT}", "Sheet1.CopiaDados"
End Sub

Aqui estamos a indicar que o procedimento MostraResultado está criado em ThisWorkbook e o procedimento CopiaDados está criado no código da Sheet1.

Mas atente que determinadas combinações, especialmente usando a tecla Alt mais uma letra ou número, não funcionam, pois são usadas como teclas de atalho do próprio MS Excel. É importante testar sempre!

É importante verificar se não estamos a utilizar uma combinação do próprio sistema operacional. Por exemplo, a combinação Ctrl+C ("^c") serve para copiar informação (copy), assim como o Ctrl+V ("^v") serve para colar informação (paste). Se atribuirmos estas combinações a diferentes procedimentos, é sobreposto o funcionamento normal (neste caso o copy/paste) e passará a chamar os procedimentos que definimos. Isto pode ser desagradável para muitos utilizadores.

Um exemplo muito simples para que testem rapidamente e entendam o problema de algumas associações. Coloquem o seguinte código num módulo e executem o procedimento AssociaTeclas.

 

Sub AssociaTeclas()
Application.OnKey "~", "Opps"
End Sub

Sub Opps()
MsgBox "Opps !!!"
End Sub


Agora, sempre que pressionarem a tecla Enter aparecerá uma mensagem com a informação "Opps !!!". 

Mas podemos também desabilitar as associações definidas. Para isso não definir o segundo argumento do método OnKey() que é opcional.

 

Sub DesabilitaTeclas()
Application.OnKey "~"
Application.OnKey "^v"
Application.OnKey "^v"
Application.OnKey "%{INSERT}"
Application.OnKey "+^{UP}"
End Sub


Após executar o procedimento DesabilitaTeclas as associações definidas deixariam de funcionar e, neste caso, o Enter voltaria a funcionar como antes, assim como o Ctrl+c e o Ctrl+v.

Neste pequeno artigo vimos como é simples atribuir teclas de atalho para chamar procedimentos, utilizando as opções já disponíveis e através de código, e alguns problemas que as associações podem causar.

As associações são, sem dúvida, uma forma muito efetiva de se evocar certas funcionalidades.

Reference: Jorge Paulino

Tags: VBA,
keys, teclas, atalho, Excel,


André Luiz Bernardes

VBA Tips - Guardando mensagens de Erro num arquivo Texto - Logging Errors to a Text File - Scripting Runtime object library - Scrrun.dll

Inline image 1

A biblioteca de objetos Scripting Runtime simplifica o código necessário para ler e gravar em um arquivo de texto. Para utilizar os novos objetos para gravar um arquivo de texto, você retorna um objeto que se refere a um arquivo novo ou existente, e então usa o método OpenAsTextStream para abrí-lo como entrada ou saída. O método tem um argumento OpenAsTextStream IOMode, que pode ser definido para indicar se você quer ler o arquivo, escrever nele, ou anexá-lo.

Sub LogError (errX As ErrObject, Optional strProcName As String)
            
   ' This procedure logs errors to a text file. It is used in
   ' this chapter to log synchronization errors.
   '
   ' Arguments:
   ' errX: A variable that refers to the VBA Err object.

   Dim fsoSysObj    As FileSystemObject
   Dim filFile      As File
   Dim txsStream    As TextStream
   Dim lngErrNum    As Long
   Dim strPath      As String
   Dim strErrText   As String
   
   Set fsoSysObj = New FileSystemObject
   
   ' Store error information.
   lngErrNum = errX.Number
   strErrText = errX.Description
   ' Clear error.
   errX.Clear
   ' Return Windows Temp folder.
   strPath = GetTempDir
   If Len(strPath) = 0 Then
      GoTo LogError_End
   End If
   
   On Error Resume Next
   ' See if file already exists.
   Set filFile = fsoSysObj.GetFile(strPath & APP_ERROR_LOG)
   ' If not, then create it.
   If Err <> 0 Then
      Set filFile = fsoSysObj.CreateTextFile(strPath & APP_ERROR_LOG)
   End If
   On Error GoTo 0

   ' Open file as text stream for reading.
   Set txsStream = filFile.OpenAsTextStream(ForAppending)
   ' Write error information and close.
   With txsStream
      .WriteLine lngErrNum
      .WriteLine strErrText
      If Len(strProcName) > 0 Then .WriteLine strProcName
      .WriteLine Now
      .WriteBlankLines 1
      .Close
   End With

LogError_End:
   Exit Sub
End Sub

O método OpenAsTextStream retorna um objeto TextStream, que é o objeto que usa para trabalhar com o texto no arquivo. Para ler uma linha, por exemplo, escolha o método ReadLine do objeto TextStream; para escrever uma linha, opte usar o método WriteLine. Quando terminar de trabalhar com o arquivo, use o método Close para fechá-lo.

O procedimento acima registra um erro em um arquivo texto. Recebe dois argumentos: um argumento ErrObject, que é uma referência ao objeto Err o qual contém o erro atual, e um argumento opcional strProcName, que especifica o nome do procedimento onde ocorreu o erro.

O procedimento LogError grava em um arquivo de texto na pasta C:\Windows\Temp. Para determinar onde a pasta Temp do Windows é, ele chama um outro procedimento, o procedimento GetTempDir. Este procedimento faz uma chamada a API do Windows para determinar a pasta Temp. O Windows não consegue inicializar sem uma pasta Temp designada.

O procedimento LogError é usado para registrar vários erros. A primeira vez que o procedimento é chamado, nenhum arquivo de log existe, por isso deve criar um. Em cada chamada subseqüente, o procedimento deve abrir o arquivo de log existente. A maneira mais simples de fazer isso é olhar para o nome do arquivo que está esperando, se ele não estiver lá, lide com o erro e crie o arquivo.

Infelizmente, quando o procedimento é chamado pela primeira vez e o erro ocorre, a informação existente no objeto Err é limpo e as informações para o novo erro tomam seu lugar. Uma vez que há apenas um objeto Err disponível em VBA, as informações de erro que você passou para o procedimento é perdida quando um novo erro ocorre. Portanto, a primeira coisa que o procedimento faz é armazenar o número do erro e a descrição do erro nas variáveis.

Uma vez que o procedimento tem uma referência para o arquivo texto, abre-o para acrescentar, e em seguida, grava as informações de erro para o arquivo, linha por linha.

O procedimento LogError chama o procedimento GetTempDir, que retorna o caminho para o C:\Windows\Temp chamando a função GetTempPath na API do Windows.  

Tags: VBA, Tips, files, directory, folder, Scripting Runtime object library, Scrrun.dll, Script, OpenAsTextStream, API

André Luiz Bernardes

VBA Tips - Alterando as propriedades dos arquivos e pastas - Setting File & Folder Attributes - Scripting Runtime object library - Scrrun.dll



O objeto File e o objeto Folder posseum propriedades de atributo que podem ser usadas para ler ou definir seus respectivos atributos.

Function ChangeFileAttributes(strPath As String, _
                            Optional lngSetAttr As FileAttribute, _
                            Optional lngRemoveAttr As FileAttribute, _
                            Optional blnRecursive As Boolean) As Boolean
   
   ' This function takes a directory path, a value specifying file
   ' attributes to be set, a value specifying file attributes to be
   ' removed, and a flag that indicates whether it should be called
   ' recursively. It returns True unless an error occurs.
   
   Dim fsoSysObj      As FileSystemObject
   Dim fdrFolder      As Folder
   Dim fdrSubFolder   As Folder
   Dim filFile        As File
   
   ' Return new FileSystemObject.
   Set fsoSysObj = New FileSystemObject
   
   On Error Resume Next
   ' Get folder.
   Set fdrFolder = fsoSysObj.GetFolder(strPath)

   If Err <> 0 Then
      ' Incorrect path.
      
Let ChangeFileAttributes = False
      GoTo ChangeFileAttributes_End
   End If

   On Error GoTo 0
   
   ' If caller passed in attribute to set, set for all.
   If lngSetAttr Then
      For Each filFile In fdrFolder.Files
         If Not (filFile.Attributes And lngSetAttr) Then
            
Let filFile.Attributes = filFile.Attributes Or lngSetAttr
         End If
      Next
   End If
   
   ' If caller passed in attribute to remove, remove for all.
   If lngRemoveAttr Then
      For Each filFile In fdrFolder.Files
         If (filFile.Attributes And lngRemoveAttr) Then
            Let filFile.Attributes = filFile.Attributes - lngRemoveAttr
         End If
      Next
   End If
   
   ' If caller has set blnRecursive argument to True, then call
   ' function recursively.
   If blnRecursive Then
      ' Loop through subfolders.
      For Each fdrSubFolder In fdrFolder.SubFolders
         ' Call function with subfolder path.
         ChangeFileAttributes fdrSubFolder.Path, lngSetAttr, lngRemoveAttr, True
      Next
   End If
   
   Let ChangeFileAttributes = True

ChangeFileAttributes_End:
   Exit Function
End Function

A função ChangeFileAttributes leva quatro argumentos: o caminho para uma pasta, uma constante opcional que especifica os atributos para definir, uma constante opcional que especifica os atributos de remover, e um argumento opcional que especifica se a função deve ser chamado recursivamente.

Se o caminho da pasta passado for válido, o procedimento retorna um objeto Folder. Em seguida, ele verifica se o argumento lngSetAttr foi fornecido. Se assim for, ele percorre todos os arquivos na pasta, acrescentando-lhes o novo atributo a todos os arquivos existentes. Utiliza o argumento lngRemoveAttr, removendo os atributos especificados se eles existirem para os arquivos da coleção.

Finalmente, o procedimento verifica se o argumento blnRecursive foi definido como True. Se assim for, chama o procedimento para cada arquivo em cada subpasta do argumento strPath.


Tags: VBA, Tips, files, directory, folder, Scripting Runtime object library, Scrrun.dll, FileSystemObject, GetFiles, ChangeFileAttributes, 

André Luiz Bernardes

VBA Tips - Retornando arquivos dentro de um diretório - Returning Files from the File System - Scripting Runtime object library - Scrrun.dll



Como fazemos para saber quantos arquivos tem no ambiente em que estamos trabalhando?

Depois de criar uma nova instância do FileSystemObject, pode usá-lo para trabalhar com unidades, pastas e arquivos no sistema de arquivos.

O procedimento a seguir retorna os arquivos em uma pasta específica em um objeto Dictionary. O procedimento GetFiles recebe três argumentos: 

O caminho para o diretório, 

Um objeto Dictionary, e

Um argumento booleano opcional que especifica se o procedimento deve ser chamado recursivamente. 

Retornando um valor booleano que indica se o procedimento foi bem sucedido.

O primeiro procedimento usa o método GetFolder para retornar uma referência a um objeto Folder. Em seguida, percorre a coleção de arquivos da pasta e adiciona o caminho e o nome do arquivo para cada arquivo no objeto Dictionary. Se o argumento blnRecursive estiver definido como True, o procedimento é chamado recursivamente, GetFiles para retornar os arquivos em cada subpasta.

Adicione uma referência a Scripting Runtime object library no seu projeto VBA.

Ao instalar as aplicações do MS Office, uma das bibliotecas de objetos instalados no seu sistema é o Scripting Runtime object library. Esta biblioteca contém objetos úteis a partir de qualquer VBA ou script, e por isso é fornecido como uma biblioteca separada.

Os objetos na Scripting Runtime object library facilitam o acesso ao sistema de arquivos, e torna a leitura e gravação num arquivo texto muito mais simples.

Por padrão, nenhuma referência é definido para esta biblioteca, então você deve definir uma referência para que você possa usá-lo. Se o Scripting Runtime object library não aparecer na caixa de diálogo de Referências (menu Ferramentas), você deve ser capaz de encontrá-la na subpasta C:\Windows\System\Scrrun.dll.

Utilize o código abaixo:

Function GetFiles (strPath As String, dctDict As Dictionary, Optional blnRecursive As Boolean) As Boolean            
   ' Esta função retorna todos os arquivos que estiverem dentro de um diretório
   ' como um objeto Dictionary. Se efetuarmos a chamada recursivamente, este retornará
   ' todos os arquivos nas subpastas.
   
   Dim fsoSysObj      As FileSystemObject
   Dim fdrFolder      As Folder
   Dim fdrSubFolder   As Folder
   Dim filFile        As File
   
   ' Retorna um novo FileSystemObject.
   Set fsoSysObj = New FileSystemObject
   
   On Error Resume Next

   ' Obtém a pasta.
   Set fdrFolder = fsoSysObj.GetFolder(strPath)
   If Err <> 0 Then
      ' Incorrect path.
      GetFiles = False
      GoTo GetFiles_End
   End If
   On Error GoTo 0
   
   ' Efetua o Loop através da coleção de arquivos, adicionando-os ao dictionary.
   For Each filFile In fdrFolder.Files
      dctDict.Add filFile.Path, filFile.Path
   Next filFile

   ' Se o flag Recursivo for true, executa recursivamente.
   If blnRecursive Then
      For Each fdrSubFolder In fdrFolder.SubFolders
         GetFiles fdrSubFolder.Path, dctDict, True
      Next fdrSubFolder
   End If

   ' Retorna True se não ocorrer nenhum erro.
   GetFiles = True
   
GetFiles_End:
   Exit Function
End Function

Você pode usar a seguinte função para testar o procedimento GetFiles. Esta cria um novo objeto Dictionary e passa para o procedimento GetFiles.

Sub TestGetFiles()
   ' Call to test GetFiles function.

   Dim dctDict As Dictionary
   Dim varItem As Variant
   
   ' Create new dictionary.
   Set dctDict = New Dictionary
   ' Call recursively, return files into Dictionary object.
   If GetFiles(GetTempDir, dctDict, True) Then
      ' Print items in dictionary.
      For Each varItem In dctDict
         Debug.Print varItem
      Next
   End If
End Sub

Você também pode usar o objeto FileSearch, para encontrar um arquivo ou grupo de arquivos. O objeto FileSearch tem certas vantagens em que você pode pesquisar subpastas, para um determinado tipo de arquivo, ou pesquisar o conteúdo de um arquivo, basta definir algumas propriedades.

Por outro lado, a Scripting Runtime object library permite que trabalhe com arquivos individuais ou pastas como objetos que têm seus próprios métodos e propriedades. Por exemplo, o procedimento ChangeFileAttributes, altera atributos de arquivo, definindo a propriedade de atributos para cada objeto de arquivo na coleção de arquivos de um objeto de pasta particular.

Tags: VBA, Tips, files, directory, folder, Scripting Runtime object library, Scrrun.dll, FileSystemObject, GetFiles

André Luiz Bernardes

VBA Tips - Reexibindo pastas ocultas com VBA - Scripting Runtime object library - Scrrun.dll

Inline image 1
Talvez precise ocultar pastas onde relatórios são gerados, tornando-os visíveis apenas em certas circunstâncias.

Adicione uma referência a Scripting Runtime object library no seu projeto VBA.

Ao instalar as aplicações do MS Office, uma das bibliotecas de objetos instalados no seu sistema é o Scripting Runtime object library. Esta biblioteca contém objetos úteis a partir de qualquer VBA ou script, e por isso é fornecido como uma biblioteca separada.

Os objetos na Scripting Runtime object library facilitam o acesso ao sistema de arquivos, e torna a leitura e gravação num arquivo texto muito mais simples.

Por padrão, nenhuma referência é definido para esta biblioteca, então você deve definir uma referência para que você possa usá-lo. Se o Scripting Runtime object library não aparecer na caixa de diálogo de Referências (menu Ferramentas), você deve ser capaz de encontrá-la na subpasta C:\Windows\System\Scrrun.dll.

Em seguida, digite o seguinte código:

Sub ShowHiddenFolders()
Dim objFSO As FileSystemObject

Set objFSO = New FileSystemObject

Dim objFld As Folder
Dim iFld As Folder

Set objFld = objFSO.GetFolder("c:\Root")
    
For Each iFld In objFld.SubFolders
iFld.Attributes = Directory
'iFld.Attributes = Hidden
     
'iFld.Attributes = ReadOnly
Next iFld
End Sub

Tags: VBA, hidden, folder, Scrrun.dll, Scripting Runtime object library, 

André Luiz Bernardes

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine