Cria-se uma variável global e uma função (que é o critério da consulta) recebe o valor.
Melhor visualizar o exemplo que fica mais fácil de entender.
;-)
Eventualmente dicas sobre outros programas, Windows e hardware.
Observação |
|---|
Por padrão, o Office 2010 instala a versão de 32 bits. Você deve escolher explicitamente instalar a versão de 64 bits durante a instalação.
|
Observação |
|---|
Você precisa modificar o código VBA somente se ele for executado na versão de 64 bits do Microsoft Office.
|
Observação |
|---|
As instruções Declare com a palavra-chave PtrSafe é a sintaxe recomendada. As instruções Declare que incluem PtrSafe funcionam corretamente no ambiente de desenvolvimento do VBA7 em ambas as plataformas, de 32 e 64 bits. Para garantir a compatibilidade com versões anteriores no VBA7, use o construto a seguir:
|
#If Vba7 Then Declare PtrSafe Sub... #Else Declare Sub... #EndIf
Declare Function GetActiveWindow Lib "user32" () As Long
Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
#if Vba7 then
' Code is running in the new VBA7 editor
#if Win64 then
' Code is running in 64-bit version of Microsoft Office
#else
' Code is running in 32-bit version of Microsoft Office
#end if
#else
' Code is running in VBA version 6 or earlier
#end if
#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf
Nome
|
Tipo
|
Descrição
|
|---|---|---|
Palavra-chave
|
Garante que a instrução Declare seja direcionada para sistemas de 64 bits. Necessário para versões de 64 bits.
| |
Tipo de dados
|
Alias de tipo que mapeia o Long em sistemas de 32 bits, ou o LongLong em sistemas de 64 bits.
| |
Tipo de dados
|
Tipo de dados de 8 bytes que está disponível somente em sistemas de 64 bits. Tipo numérico. Números inteiros no intervalo de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. O LongLong é um tipo declarado válido somente em plataformas de 64 bits. Além disso, o LongLong não pode ser convertido implicitamente em um tipo menor (por exemplo, não é possível atribuir um tipo de dados LongLong a um do tipo Long.). Isso é feito para evitar que haja truncamento de ponteiro inadvertidamente. Coerções explícitas são permitidas, portanto, no exemplo acima, é possível aplicar um CLng a um LongLong e atribuir o resultado a um Long. (Válido somente em plataformas de 64 bits.)
| |
^
|
Caractere de declaração de tipo LongLong
|
Declara um valor literal explicitamente como um LongLong. Necessário para declarar um literal de LongLong maior que o valor de Long máximo (do contrário, ele será convertido implicitamente em double).
|
função de conversão de tipo
|
Converte uma expressão simples em um LongPtr.
| |
função de conversão de tipo
|
Converte uma expressão simples em um tipo de dados LongLong. (Válido somente em plataformas de 64 bits.)
| |
constante VarType
|
constante VarType
| |
instrução DefType
|
Define o tipo de dados padrão para uma gama de variáveis como LongPtr.
| |
instrução DefType
|
Define o tipo de dados padrão para uma gama de variáveis como LongLong.
|
Sub ConsolidaNovo()
Dim i As Integer
Dim NomeArquivo As String
Dim Origem As Workbook
Dim Caminho As String
Caminho = InputBox("Informe o caminho da pasta que contém as planilhas" & vbCrLf & "Exemplo: C:\Pastas\")
If Caminho = "" Then Exit Sub
If Right(Caminho, 1) <> "\" Then Caminho = Caminho & "\"
NomeArquivo = Dir(Caminho)
i = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
Do Until NomeArquivo = ""
Set Origem = Workbooks.Open(Filename:=Caminho & NomeArquivo)
Origem.ActiveSheet.Copy After:=Workbooks("Consolidar.xls").Sheets(i)
Origem.Close SaveChanges:=False
ActiveSheet.Name = NomeArquivo
i = i + 1
NomeArquivo = Dir
Application.ScreenUpdating = True
Loop
Set Origem = Nothing
Sheets(1).Select
End Sub