Você está na página 1de 400

28/7/2014

MACROS PARA EXCEL - VBA-

232

INDICE

VBA Excel - Função área VBA Excel - Arredondas casas decimais para cima VBA Excel - Verifica o formato personalizado da célula VBA Excel verifica se a formatação personalizada é em Euro VBA Excel - Ver se existe ou não Formatação Condicional Excel VBA - Extração de número de loto

10

10

10

11

11

11

*Excel VBA - Loto - extrai seis números aleatórios VBA Excel - Envia para lixeira determinado arquivo

12

12

13

13

13

14

14

15

15

16

16

17

18

19

19

19

20

21

22

23

24

25

26

26

26

26

27

27

28

28/7/2014

MACROS PARA EXCEL - VBA-

28

30

30

44

44

28/7/2014

MACROS PARA EXCEL - VBA-

50

62

62

28/7/2014

MACROS PARA EXCEL - VBA-

62

78

78

79

80

28/7/2014

MACROS PARA EXCEL - VBA-

83

83

87

88

88

89

89

90

90

90

91

91

91

92

92

92

93

93

93

94

94

95

96

96

96

97

97

98

98

99

Macro para contagem de abertura de um programa quantas vezes abriu

103

Ocultar Plan com ChekBox

103

Ocultar coluna com ChekBox

104

Faz em A1 um cronômetro decressivo

104

Faz uma contagem até 10000

104

Mensagem por botão e form

105

28/7/2014

MACROS PARA EXCEL - VBA-

Célula piscante 1

106

Célula piscante 2

107

Célula que fica piscando

108

Sub pioscar tela()

108

Código para piscar célula

109

Contador de vezes em que se abre uma plan’ programa ‘

109

Abrir combo com teclado “F4”

110

Abrir combo ao receber foco evento ENTER

110

Senha para Expirar tempo de uso

110

Esta macro seleciona em coluna especificada, está sendo repetido

111

Inverter tabela horizontal vertical

112

Salvamento altomático 1

112

Salvamento altomático 2

114

Salvamento altomático 3

114

Código para form de fechar em 5 segundos

115

Colocar o código abaixo no referido workbook

119

Macro para VER e OCULTAR Shapes de mensagem

119

Duplicados 2 Formata célula em vermelho

Macro para dizer bom dia com o nome da pessoa

A macro abaixo lista os nomes das planilhas existente no seu projeto

Ver SHAPES ocultar SHAPES

Calendário mensal esta macro insere um calendário mensal atualizado basta formatar os dias e colocar em A7

Macro para inspirar tempo de programa

Função ano Bissexto

Macro para calcular a soma de 2 TextBox

'TextBox total

119

120

121

121

122

122

122

123

121

28/7/2014

MACROS PARA EXCEL - VBA-

Formato de moeda em TextBox

123

Formatação condicional

123

Desproteger planilha com senha

126

Adiciona planilha com mensagem

128

'Função último dia do mês

128

Esta macro desabilita o XIS

128

Mensagem em label

129

Função de extenso

129

'Macro que impede de deletar planilha principal

132

'Macro que dá um aviso se quer ou não deletar

133

'Macro que reabilita a planilha

133

Macro para rodapé personalizado

133

Backup válido

134

Backup perfeito

134

Backup

135

Criando Backup com senha

135

Resolução de tela

136

‘ProgressBar percentual

136

Copia arquivo Excel para arquivo de texto

137

Esta macro apaga dados de todas as planilhas

137

Excel XP: Propriedade FullName

138

Excel XP + VBA: Quantidade de planilhas

Excel XP + VBA: Acessando várias planilhas ao mesmo tempo

139

140

Excel XP: Método Select

140

Nome na barra de títulos

141

Controlador do tempo

141

28/7/2014

MACROS PARA EXCEL - VBA-

Deixa maiúscula as células

142

Listar LISTVIEW Esta acro lista dados de uma plan p/ListView

143

Macro que não deixa sair sem preencher os dados

143

Código que encerra o Excel em 1 minuto

143

Esta macro ou função marca a letra da coluna digitando o n, da linha

144

Não fechar programa sem fazer tal coisa

144

Utilizando artificios de segurança(auto destruição)

145

Substituindo Erros por Caracteres

145

'Esta macro faz uma formatação especialnas células

145

Abrindo a página da Internet

146

Abrindo o Módulo do VBA direto do Excel

146

Abrir planilha pelo nome pelo InputBox

146

Agrupando Colunas

147

Criando atalhos na área de trabalho

147

Criando Menus Personalizados

147

Copiando dados da Planilha no Bloco de notas

148

Criando pasta no diretório no Excel

148

Criando teclas de Atalho para Abrir Formulários

148

Criando uma nova Planilha do os Meses do Ano

148

Dividindo a Planilha

149

Duplicar Imagem

149

Enviando E-mail da planilha atual

149

Evento duplo click na planilha

150

Executando macro com tempo

150

'Executando uma macro ao selecionar célula

150

Exemplo de Loop

150

Exibir usuário

151

Extrair apenas Numeros

151

Extrair valores Unicos de Uma lista

151

Formatando textBox

151

Esta macro cancela e envia digitação entre A1:C10

153

Proteger todas as celulas menos as Específicas

154

Protegendo e Desprotegendo todas as Planilhas

154

Removendo Duplicados

154

Ocultando os Valores Zero

155

Limitar Digitação

155

Ocultando Menu principal

155

28/7/2014

MACROS PARA EXCEL - VBA-

Função personalizada que conta valores únicos

155

Ordenar Dados

156

Função que retorna Nome e Caminho

156

Função para Extrair só textos

156

Sobre Escrever em Celulas

156

Msgbox com 3 Opções

157

Função personalizada que extrai números de células

157

Excel Fórmulas e Funções

157

158

158

158

158

158

Protege fórmula na plan

158

Esta macro oculta plan designada colocar no módulo da plan …………………………………………………159

Cria planilha indicada

159

Programar ListView 1

159

Função criada para arredondar casas decimais

160

'Esta função captura todo o conteúdo de sua tela atual e coloca em PictureBox

160

Sub LimparDados()

Esta macro controlada pela data, fecha o arquivo desaparecendo

161

161

Senha 1

162

Senha 2

163

Senha 3

163

Acesso registrado …………………………………………………………………………………………

164

Planilha e ordem alfabética

164

Tempo expirado por vezes de abertura …………………………………………………………………….165

Deixar células em maiúsculas e minúsculas

Rodapé personalisado

166

169

28/7/2014

MACROS PARA EXCEL - VBA-

Função personalizada inverter texto

169

Separa endereço em colunas

170

 

'Botão salvar

171

Botão de inclusão de contatos

171

Ordenar por linha

178

Abrir sites direto do Excel

178

Abrir planilha pelo nome pelo InputBox

178

Abrir a pasta onde a planilha esta Alojada

179

Abrindo a página da Internet

179

Formatação de números

180

Ativar Cx Dialogo Abrir

181

Exibe um UserForm

181

Para atualizar campeonato

181

Caixa de Dialogo Auto correção

181

Caixa

182

Ativa Calculadora

182

Chama UserForm com duplo clic

182

Deletar linha especificada

183

Dados duplicados

183

Cx

diálogo proteger

183

Cx

diálogo desproteger planilha

183

Cx

diálogo bordas

183

Sub Copiar_Figura() ………………………………………………………………………….……………

184

Sub ConverterMinuscula()

184

Sub ConverterPriMaiuscula()

184

Converter em dólar

184

Função nome contrário

185

Cx

diálogo conf pg

185

28/7/2014

MACROS PARA EXCEL - VBA-

Sub Fechar()

186

Sub Formulário()

186

Extenso

186

Inserir

190

Abre cx dialogo inserir figura

190

Sub Inserir_Objeto()

190

Sub Limpar()

191

Sub Nomes_Barras()

191

Sub Ola()

191

‘Exibe cx dialogo opções de cálculo

191

Function Raiz()

191

Sub Termina()

191

Sub Sair()

192

Sub Salvar()

192

Sub Salvar_Como()

192

Function Saudação()

192

Sub Saudação()

192

Sub separatexto()

192

Sub Sequencia_numerica()

193

Sub Soma()

193

Sub Travar_Cel()

193

Sub Troco()

193

Sub Voltar()

194

Sub Zerar_Dados()

194

Sub Zoon()

194

Cor na linha

194

28/7/2014

MACROS PARA EXCEL - VBA-

CÓDIGOS

Sub ExibirForm()

195

Sub Abrir_Plan()

195

Function Apelido(tot)

195

Copiar para linha

196

Sub ConverterMaiuscula()

196

Sub ConverterMinuscula()

196

Sub ConverterPriMaiuscula()

196

Sub Entrada_Estoque()

196

Sub Filtra_Cliente_Click()

198

Sub Lançamento_Caixa()

198

‘Valor zero em célula

200

Sub Macro1()

200

Funções feriados e dias úteis

Comentários

Function Msg(ParamArray parm())

200

202

202

Sub Testar_Msg()

203

Sub Limpar()

203

Sub Procura()

203

Sub Transfer()

203

‘Estenso para Euro

203

Imagem

204

MÓDULOS

Function ProcessaParcela(num) As String

205

28/7/2014

MACROS PARA EXCEL - VBA-

‘Deixar letras maiúsculas em células

‘Código para formatar txtbox maiúsculo

206

207

Soma valores de uma coluna

208

Formato moeda de um TexBox

208

Botões de próximo, anterior e alterar

208

Sub OrdenarPlanilhas()

209

‘Esta macro soma automaticamente uma coluna apresentada

210

Macro para puxar mensagem de célula em label

210

Macro para inserir linhas

211

Macro para inserir colunas

211

Insere um "ok" nas celulas "B2:B10" com um duplo click VBA Excel - inseri uma marca d’agua

211

212

Inserir um gráfico no comentário, será que é possível???

Inserir estes códigos no módulo da planilha

219

220

Ordenar crescente

220

Ordenar Planilhas

221

Sub Classificar(List() As String) 'Classifica as planilhas em ordem crescente

221

28/7/2014

MACROS PARA EXCEL - VBA-

‘Desproteger plan

222

Desproteger várias planilhas

223

Proteger várias planilhas

223

‘Reenzibindo várias planinhas

223

Sub InserirPlanilhaComNome()

224

Sub Ocultar_Coluna()

225

Sub Exibindo_coluna2()

225

Sub Selecionando_Planilha()

225

Sub Selecinar_Célula()

225

Sub Preencher_Célula()

225

Sub Ocultar_Linha()

225

Sub RenomearPlanilha()

225

Sub Copiar_e_colar()

226

Sub MaximizarTela()

226

Sub Calcula2()

226

Sub Macro_otimizada()

226

‘Selecionando planilhas com valores determinados

227

Criando uma planilha

227

Excluindo planilha

227

‘Macro para fazer alteração 1 ListBox -1 Form com TextBox- 1 commandButtom

228

*VBA - Formatações e macros para TextBox's

229

‘Texbox só para numéricos

229

‘Seleccionar o conteúdo de uma TextBox

230

Gráfico

‘Inserir gráfico em form

‘MACRO para pesquisa 1 UserForm 1 TextBox 1 Botão Comando

230

230

230

28/7/2014

MACROS PARA EXCEL - VBA-

MACROS PARA EXCEL - VBA-

VBA EXCEL - FUNÇÃO ÁREA

VBA Excl - Função Área

=MPG(A18,A19,B19)

Function MPG(StartMiles As Integer, FinishMiles As Integer, Litres As Single)

MPG = (FinishMiles - StartMiles) / Litres * 4.546

End Function

função área

Function Area(Length As Double, Optional Width As Variant)

If IsMissing(Width) Then

Area = Length * Length

Else

Area = Length * Width

End If

End Function

=Area(B1;B1)

Function Area(Length As Double, Width As Double)

Area = Length * Width

End Function

VBA EXCEL - ARREDONDAS CASAS DECIMAIS PARA CIMA

Excel VBA - Esta macro arredonda casas para cima mas somente no formato,

28/7/2014

MACROS PARA EXCEL - VBA-

formato personalizado ex: 13,95 = 14, mas o valor real é 13,95

Sub Arred_para_cima_formato()

Worksheets(”Plan1″).Range(”b1″).NumberFormat = “0;-0;;@”

End Sub

Formatos especiais

6154848484 (16) 84 84 84 84

184848484 (1) 84 84 84 84

74848484 84 84 84 84 Formato para as células B5:B7:

[>=200000000](##\ #) ##\ ##\ ##\ ##;[>=100000000](##) ##\ ##\ ##\ ##:00\ 00\ 00\ 00 este da um erro >> substitui pela formatação abaixo

[>=2000000000](## #) ## ## ## ##;[>=100000000](##) ## ## ## ##;00 00 00 00

KILOFRANCS (KF):

Valores Simples Valores em KF

10.000,00 F 10 KF Formatos para as células B13:B15:

1.250.000,00 F .250 KF

15.000,00 F 15 KF # ##0 ” KF”

VBA EXCEL - VERIFICA O FORMATO PERSONALIZADO DA CÉLULA

VBA Excel - Esta macro verifica formato personalizado da célula

SubVerificar_Formato()

Dim Frt As String

Range(”A1″).Select

Frt = Selection.NumberFormat

28/7/2014

MACROS PARA EXCEL - VBA-

MsgBox “O formato desta célula é :” & Frt

EndSub

VBA EXCEL VERIFICA SE A FORMATAÇÃO PERSONALIZADA É EM EURO

VBA Excel - Esta macro verifica se é formato em Euro

Sub Formatação_perssonalizada()

ActiveCell.Select

If Selection.NumberFormat = “#,##0.00 [$€-1]” Then ‘verifica se o formato é Euro

ActiveCell.Value = ActiveCell.Value * 6.55957

Selection.Style = “Currency”

Else

If ActiveCell.Value = “” Then Exit Sub

verifica dentro da célula se existe ou não formato euro ou se está vazia

If IsNumeric(ActiveCell) = False Then Exit Sub

verifica a célula ativa se existe ou não euro se é tabem número

ActiveCell.Value = ActiveCell.Value / 6.55957

Selection.NumberFormat = “#,##0.00 [$€-1]”

End If

End Sub

VBA EXCEL - VER SE EXISTE OU NÃO FORMATAÇÃO CONDICIONAL

Excel VBA - Este procedimento e para ver ser existe ou não formação condicional

inserir no módulo Worksheet

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If HasCondFormat(ActiveCell) Then

MsgBox ActiveCell.Address & ” existe formato condicional nesta planilha.”

28/7/2014

MACROS PARA EXCEL - VBA-

End If

End Sub

EXCEL VBA - EXTRAÇÃO DE NÚMERO DE LOTO

Excel VBA - Extração de número de loto , loteria

=AleatórioLoto(1;49;6)

Function AleatorioLoto(Botao As Integer, Top As Integer, Amount As Integer)

Dim iNum As String

Dim strNum As String

Dim i As Integer

Application.Volatile

iNum = Int((Top - Botao + 1) * Rnd + Botao)

For i = 1 To Amount

strNum = Trim(strNum & ” ” & iNum)

Do Until InStr(1, strNum, iNum) = 0

iNum = Int((Top - Botao + 1) * Rnd + Botao)

Loop

Next i

AleatorioLoto = strNum

End Function

*EXCEL VBA - LOTO - EXTRAI SEIS NÚMEROS ALEATÓRIOS

Esta macro extrai 6 números aleatórios

Sub Loto()

Dim i, choice, balls(60)

28/7/2014

MACROS PARA EXCEL - VBA-

balls(i) = i

Next

Randomize Timer

For i = 1 To 6

choice = 1 + Int((Rnd * (60 - i)))

ActiveCell.Offset(0, i - 1).Value = balls(choice)

balls(choice) = balls(60 - i)

Next

End Sub

VBA Excel - esta macro envia para lixeira o arquivo apg.xls

tem que copiar todo código para lixeira - somente copiar e colar no módulo normal

para lixeira - somente copiar e colar no módulo normal Declare Function SHFileOperation Lib “shell32.dll” Alias

Declare Function SHFileOperation Lib “shell32.dll” Alias _

SHFileOperationA” (lpFileOp As SHFILEOPSTRUCT) As Long

Type SHFILEOPSTRUCT

hwnd As Long

wFunc As Long

pFrom As String

pTo As String

fFlags As Integer

fAnyOperationsAborted As Boolean

hNameMappings As Long

lpszProgressTitle As String

End Type

28/7/2014

MACROS PARA EXCEL - VBA-

Sub Enviar_Arquivo_Lixeira()

RecycleFile “c:\Meus documentos\apg.xls”

End Sub

Sub RecycleFile(sFile As String)

Const FO_DELETE = &H3

Const FOF_ALLOWUNDO = &H40

Dim FileOperation As SHFILEOPSTRUCT

Dim lReturn As Long

Dim sFileName As String

With FileOperation

.wFunc = FO_DELETE

.pFrom = sFile

.fFlags = FOF_ALLOWUNDO

End With

lReturn = SHFileOperation(FileOperation)

End Sub

VBA Excel - macro copia linhas da primeira até a ultima

Sub Copia_linha_ate_a_ultima()

Dim i As Integer

ligne1:

If ActiveCell.Value <> “” Then ActiveCell.Offset(1, 0).Select: GoTo ligne1

ActiveCell.Value = ActiveCell.Offset(-1, 0).Value

ActiveCell.Offset(1, 0).Select

GoTo ligne1:

ligne99:

28/7/2014

MACROS PARA EXCEL - VBA-

Range(”A1″).Select

End Sub

VBA Excel - macro conta linhas selecionadas e mostra msgbox

Sub conta_linhas()

minha_linha = Selection.Rows.Count

MsgBox minha_linha

End Sub

VBA Excel - deleta linhas/colunas em branco

Sub Deleta_Linhas_Branco()

Sheets(”SuaPlanilha”).Select

Dim r, c, x As Integer

r is your first row

For r = 1 To 150

c is your first column loop until c reaches 184 (unlikely)

For c = 1 To 184

if active cell in loop is blank then…

If Cells(r, c) = “” Then

find next non blank cell in this row - the column number will become x

x = Cells(r, c).End(xlToRight).Column

if x > 184 (your last column) then you can skip the rest of this row as it’s blank

If x > 184 Then GoTo 10

find out what the column before the next non-blank cell is

28/7/2014

MACROS PARA EXCEL - VBA-

Y = x - 1

test difference between column being processed and y

Select Case Y - c

if more than one blank cell in between current cell and next non blank then delete ‘range of blanks

Case Is > 0

Range(Cells(r, c), Cells(r, Y)).Delete Shift:=xlToLeft

Case 0

if difference between y & c is 0 then only one cell to delete

Cells(r, c).Delete Shift:=xlToLeft

Case Else

if it’s negative you have an error!!

MsgBox “Error: Macro Will Stop”, vbCritical, “Error”

Exit Sub

End Select

End If

move to next column

Next c

10 is a shortcut to cut out the above loop… so if all blank goto 10 - ie just go to the next row

10

Next r

End Sub

VBA Excel - Atribui altura de linhas a uma determinada seleção

Sub Atribui_altura_linhas()

Set ASelectionner = Application.InputBox _

(Prompt:=”selecionar a regiao da celulas “, _

Title:=” Regiao de celulas à serem selecionadas”, Type:=8)

AHauteur = Application.InputBox _

(Prompt:=”Entre com altura (pontos) (exemplo 12)”, Type:=1)

ASelectionner.Select ‘Seleciona a região desejada

28/7/2014

MACROS PARA EXCEL - VBA-

ASelectionner.RowHeight = AHauteur

End Sub

VBA Excel exemplo de ajuda, mostra o tipo de ajuda solicitado pelo ID

Sub Example_Show_Help()

Dim IDNum As Long

Fill in the Help ID number

IDNum = 5199659

If the Excel version is 2000, 2002 or 2003

If Val(Application.Version) > 8 And Val(Application.Version) < 12 Then

Application.Help “XLMAIN” & Val(Application.Version) & “.CHM”, IDNum

End If

If the excel version is 12 (Excel 2007)

We use the new Application.Assistance.ShowHelp now but the old

Application.Help is also working in Excel 2007

If Val(Application.Version) = 12 Then

Application.Assistance.ShowHelp “XLMAIN11.CHM” & IDNum, “”

End If

End Sub

28/7/2014

MACROS PARA EXCEL - VBA-

Esta macro retorna informações do computador

Sub PCInformation()

Dim msg

msg = “UserName” & vbTab & Environ$(”username”) & vbNewLine _

& “UserProfile” & vbTab & Environ(”UserProfile”) & vbNewLine _

& “Computer #” & vbTab & Environ$(”ComputerName”) & vbNewLine _

& “Logon Server” & vbTab & Environ$(”Logonserver”) & vbNewLine _

& “UserDomain ” & vbTab & Environ$(”UserDomain”)

MsgBox msg, , “Environment Variables

End Sub

Sub Retorna_Logon_Nome()

Dim wshNetwork As Object

Dim LogonName As Variant

Set wshNetwork = CreateObject(”WScript.Network”)

LogonName = “Logon Name = ” & wshNetwork.UserName

MsgBox LogonName

End Sub

28/7/2014

MACROS PARA EXCEL - VBA-

Estas macros com as declarações e funções retorna o nome do usuario e o nome do máquina

Option Explicit

Public Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _

(ByVal lpBuffer As String, nSize As Long) As Long

Public Declare Function GetComputerName Lib “kernel32″ _

Alias “GetComputerNameA” _

(ByVal lpBuffer As String, nSize As Long) As Long

Function OSUserName() As String

Dim Buffer As String * 256

Dim BuffLen As Long

BuffLen = 256

If GetUserName(Buffer, BuffLen) Then _

OSUserName = Left(Buffer, BuffLen - 1)

End Function

Function OSMachineName() As String

Dim Buffer As String * 256

Dim BuffLen As Long

Dim lngX As Long

Dim strCompName As String

BuffLen = 255

If GetComputerName(Buffer, BuffLen) Then _

OSMachineName = Left(Buffer, BuffLen)

End Function

28/7/2014

MACROS PARA EXCEL - VBA-

Sub Teste_Usuário_host()

MsgBox OSUserName & ” ” & OSMachineName

End Sub

Esta macro com as funções e declarações retorna uma mensagem com o número do HD do seu computador mostro aqui duas funções.

Private Declare Function GetVolumeInformation& Lib “Kernel32″ Alias “GetVolumeInformationA” _

(ByVal lpRootPathName As String, _

ByVal pVolumeNameBuffer As String, _

ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, _

lpMaximumComponentLength As Long, lpFileSystemFlags As Long, _

ByVal lpFileSystemNameBuffer As String, _

ByVal nFileSystemName As Long)

Private Const MAX_FILENAME_LEN = 256

Public Function GetSerialNumber(sDrive As String) As Long

Dim ser As Long

Dim s As String * MAX_FILENAME_LEN

Dim s2 As String * MAX_FILENAME_LEN

Dim j As Long

Dim i As Long

Call GetVolumeInformation _

(sDrive + “:\”, s, MAX_FILENAME_LEN, ser, i, j, s2, MAX_FILENAME_LEN)

GetSerialNumber = ser

End Function

28/7/2014

MACROS PARA EXCEL - VBA-

Sub Teste_Numero_HD()

MsgBox (”Número do HD “) & GetSerialNumber(”C”)

MsgBox (”Número do HD “) & DriveSerialNumber(”C”)

End Sub

Function DriveSerialNumber(Lecteur)

Dim sab, d

Set sab = CreateObject(”Scripting.FileSystemObject”)

Set d = sab.GetDrive(sab.GetDriveName _

(sab.GetAbsolutePathName(Lecteur & “:\”)))

DriveSerialNumber = d.SerialNumber

End Function

Esta macro retorna o nível de segurança atual no seu aplicativo Excel

conforme abaixo

Sub Teste_Nivel_Segurança()

MsgBox Nivel_Seguranca

End Sub

Function Nivel_Seguranca()

para Excel 2000 et 2002,2003 a função retorna

1 -> nivel de segurança Baixo

28/7/2014

MACROS PARA EXCEL - VBA-

2 -> nivel de segurança Médio

3 -> nivel de segurança Alto

Dim Cle2000$, Cle2002$, WSH

Cle2000 = “HKCU\Software\Microsoft\Office\9.0\Excel\Security\Level”

Cle2002 = “HKCU\Software\Microsoft\Office\10.0\Excel\Security\Level”

Cle2003 = “HKCU\Software\Microsoft\Office\11.0\Excel\Security\Level”

Set WSH = CreateObject(”WScript.Shell”)

Select Case Val(Application.Version)

Case 9

Nivel_Seguranca = WSH.RegRead(Cle2000)

Case 10

Nivel_Seguranca = WSH.RegRead(Cle2002)

Case 11

Nivel_Seguranca = WSH.RegRead(Cle2003)

Case Else

Nivel_Seguranca = “Versão d’Excel não conhecida “

End Select

End Function

Arquivos ativos na memória

Estas declarações com a macro mostra todos os arquivos que estão

na memória RAM do seu computador, cria uma planilha com a relação

****************** Début de code *******

Private Declare Function GetWindow Lib “user32″ _

(ByVal hwnd As Long, ByVal wCmd As Long) As Long

Private Declare Function FindWindow Lib “user32″ Alias “FindWindowA” _

(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

28/7/2014

MACROS PARA EXCEL - VBA-

Private Declare Function GetParent Lib “user32″ (ByVal hwnd As Long) As Long

Private Declare Function GetWindowTextLength Lib “user32″ _

Alias “GetWindowTextLengthA” (ByVal hwnd As Long) As Long

Private Declare Function GetWindowText Lib “user32″ _

Alias “GetWindowTextA” (ByVal hwnd As Long, ByVal lpString As String, _

ByVal cch As Long) As Long

Const GW_HWNDFIRST = 0

Const GW_HWNDNEXT = 2

Sub Load_Lista_Memória()

Dim CurrWnd As Long

Dim Length As Long

Dim TaskName As String

Dim Parent As Long

i = 1

Sheets.Add ‘renvoie la liste dans une nouvelle feuille de calcul

twnd& = FindWindow(”Shell_traywnd”, vbNullString)

CurrWnd = GetWindow(twnd, GW_HWNDFIRST)

While CurrWnd <> 0

Length = GetWindowTextLength(CurrWnd)

TaskName = Space$(Length + 1)

Length = GetWindowText(CurrWnd, TaskName, Length + 1)

TaskName = Left$(TaskName, Len(TaskName) - 1)

If Length > 0 Then

Cells(i, 1).Value = TaskName

i =

i +

1

End If

CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)

DoEvents

Wend

28/7/2014

MACROS PARA EXCEL - VBA-

End Sub

Option Explicit

Declare Function GetCommandLine Lib “kernel32″ _

Alias “GetCommandLineA” () As Long

Declare Sub CopyMemory Lib “kernel32″ Alias “RtlMoveMemory” _

(lpvDest As Any, lpvSource As Any, ByVal NumBytes As Long)

Sub TestCommand()

MsgBox VBACommand

MsgBox VBACommand2

End Sub

Function VBACommand() As String

Dim Buffer() As Byte

Dim Addr As Long

Dim sTemp As String

Dim i As Long

Const BufferLen = 256

ReDim Buffer(0 To BufferLen - 1)

Addr = GetCommandLine()

CopyMemory Buffer(0), ByVal Addr, BufferLen

convert the characters of the ANSI string to Unicode

sTemp = StrConv(Buffer(), vbUnicode)

28/7/2014

MACROS PARA EXCEL - VBA-

then truncate at the null byte

i = InStr(sTemp, Chr$(0))

If i > 0 Then

VBACommand = Left$(sTemp, i - 1)

Else

VBACommand = sTemp & “…

End If

End Function

Function VBACommand2() As String

Dim Buffer As String

Dim Addr As Long

Const BufferLen = 256

Buffer = String$(BufferLen, 0)

Addr = GetCommandLine()

CopyMemory ByVal Buffer, ByVal Addr, BufferLen

no need to convert from ANSI to Unicode, don’t know why…

VBACommand2 = Left$(Buffer, InStr(1, Buffer, Chr$(0)) - 1)

End Function

Esta macro desabilita o Alerta para Excel, por ex: quando for fechar algum workbook, aparece uma msg perguntando se quer salvar ou não aquele arquivo, tornar false este este item impede que seja perguntado, fecha sem a mensagem.

Sub NoAlerts()

Application.DisplayAlerts=False

Insira aqui seu código

Application.DisplayAlerts=True

End Sub

28/7/2014

MACROS PARA EXCEL - VBA-

Esta macro salva e encerra o aplicativo Excel

Sub Encerrar()

ActiveWorkbook.Save

Application.Quit

End Sub

Mostra o dicionário de correção de uma planilha copiando as palavras para

uma determianda planilha

Function GetFiles(strPath As String, _

dctDict As Scripting.Dictionary, _

Optional blnRecursive As Boolean) As Boolean

David Shank, Microsoft Corporation

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office09072000.asp

DimfsoSysObj As Scripting.FileSystemObject

DimfdrFolder As Scripting.Folder

DimfdrSubFolder As Scripting.Folder

DimfilFile As Scripting.File

Return new FileSystemObject.

Set fsoSysObj = New Scripting.FileSystemObject

On Error Resume Next

Get folder.

Set fdrFolder = fsoSysObj.GetFolder(strPath)

If Err <> 0 Then

Incorrect path.

GetFiles = False

28/7/2014

MACROS PARA EXCEL - VBA-

GoTo GetFiles_End

End If

On Error GoTo 0

Loop through Files collection, adding to dictionary.

For Each filFile In fdrFolder.Files

récupère nomet chemin complet

dctDict.Add filFile.Path, filFile.Path

Next filFile

If Recursive flag is true, call recursively.

If blnRecursive Then

For Each fdrSubFolder In fdrFolder.SubFolders

GetFiles fdrSubFolder.Path, dctDict, True

Next fdrSubFolder

End If

Return True if no error occurred.

GetFiles = True

GetFiles_End:

Exit Function

End Function

Sub TestGetFiles()

Call to test GetFiles function.

DimdctDict As Scripting.Dictionary

DimvarItemAs Variant

DimstrDirPath As String

strDirPath = “D:\06OfficeVBA\04Modules\”

Create new dictionary.

28/7/2014

MACROS PARA EXCEL - VBA-

Set dctDict = New Scripting.Dictionary

Call recursively, return files into Dictionary object.

If GetFiles(strDirPath, dctDict, True) Then

Sheets.Add

récupère directement le tableau des items du dictionaire

dans la colonne A de la nouvelle feuille

Range(”A1:A” & dctDict.Count).Value = _

Application.Transpose(dctDict.Items)

End If

EndSub

Esta macro lista todos os arquivos emc:\

SubLista_todos_arquivos_C()

Lister 1, “c:\”

EndSub

* nRow = Ligne de départ

* FolderName = Chemin du répertoire à lister

* Suffix= Filtre optionnel des types de fichiers

* SubDir = True pour étendre la liste auxsous-répertoires

SubLister(nRow&, FolderName$, Optional Suffix$ = “*.*”, _

Optional SubDir As Boolean = True)

Dimi As Long, xAs Long, File As String, Folder As String, nbFolders() As String

Cells(nRow, 1) = FolderName

Cells(nRow, 1).Font.Bold = True

28/7/2014

MACROS PARA EXCEL - VBA-

If Not Right(FolderName, 1) = “\” Then FolderName = FolderName & “\”

File = Dir(FolderName & Suffix)

Do While Len(File) > 0

Cells(nRow, 1) = FolderName & File

Cells(nRow, 2) = FileLen(FolderName & File)

Cells(nRow, 3) = FileDateTime(FolderName & File)

nRow = nRow + 1: File = Dir

Loop

If Not SubDir Then Exit Sub

x= 0: Folder = Dir(FolderName, vbDirectory)

Do While Folder > “”

If Folder <> “.” And Folder <> “

” Then

If (GetAttr(FolderName & Folder) And vbDirectory) = vbDirectory Then x= x+ 1

End If

Folder = Dir

Loop

ReDimnbFolders(x+ 1): i = 1

nbFolders(i) = Dir(FolderName, vbDirectory)

Do While nbFolders(i) > “”

If nbFolders(i) <> “.” And nbFolders(i) <> “

” Then

If (GetAttr(FolderName & nbFolders(i)) And vbDirectory) = vbDirectory Then i = i + 1

End If

nbFolders(i) = Dir

Loop

For i = 1 To UBound(nbFolders()) - 1

Call Lister(nRow, FolderName & nbFolders(i), Suffix)

Next

EndSub

28/7/2014

MACROS PARA EXCEL - VBA-

Estas macro mostra todos os arquivos de programa instalado no computador

SubTousLesDossiers(LeDossier$, IdxAs Long)

Dimfso As Object, Dossier As Object

DimsousRep As Object, Flder As Object

Set fso = CreateObject(”Scripting.FileSystemObject”)

Set Dossier = fso.GetFolder(LeDossier)

examima o corrente diretorio

For Each Flder In Dossier.subfolders

Idx= Idx+ 1

Cells(Idx, 1).Value = Flder.Path

Next

Trata os recursos dos arquivos

For Each sousRep In Dossier.subfolders

TousLesDossiers sousRep.Path, Idx

Next sousRep

Set fso = Nothing

EndSub

SubMostra_todos_Arquivos_de_programas()

TousLesDossiers “c:\Arquivos de Programas”, 0

EndSub

Esta macro lista os arquivos em um determinado Diretório

Sub Testar_Lista_Arquivos_InFolder()

28/7/2014

MACROS PARA EXCEL - VBA-

Dim RootFolder$

Diretório à scanear

RootFolder = ChoisirDossier

If RootFolder = “” Then Exit Sub

create a new workbook for the file list

Workbooks.Add

add headers

With Range(”A1″)

.Formula = ” Contendo os Diretórios : ” & RootFolder

.Font.Bold = True

.Font.Size = 12

End With

Range(”A3″).Formula = “Caminho: “

Range(”B3″).Formula = “Nome : “

Range(”C3″).Formula = “Data Criação : “

Range(”D3″).Formula = “Data último Accesso : “

Range(”E3″).Formula = “Data última Modificação : “

With Range(”A3:E3″)

.Font.Bold = True

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = True

End With

list all files included subfolders

ListFilesInFolder RootFolder, True

Columns(”A:H”).AutoFit

End Sub

28/7/2014

MACROS PARA EXCEL - VBA-

Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean)

lists information about the files in SourceFolder

example: ListFilesInFolder “C:\FolderName\”, True

Dim FSO ‘As Scripting.FileSystemObject

Dim SourceFolder ‘As Scripting.Folder

Dim SubFolder ‘As Scripting.Folder

Dim FileItem ‘As Scripting.File

Dim r As Long

Set FSO = CreateObject(”Scripting.FileSystemObject”)

Set SourceFolder = FSO.GetFolder(SourceFolderName)

r = Range(”A65536″).End(xlUp).Row + 1

For Each FileItem In SourceFolder.Files

display file properties

Cells(r, 1).Formula = FileItem.ParentFolder

Cells(r, 2).Formula = FileItem.Name

Cells(r, 3).Formula = FileItem.DateCreated

Cells(r, 3).NumberFormatLocal = “dd/mm/aaa”

Cells(r, 4).Formula = FileItem.DateLastAccessed

Cells(r, 5).Formula = FileItem.DateLastModified

Cells(r, 5).NumberFormatLocal = “dd/mm/aaaa”

next row number

r

= r + 1

Next FileItem

If IncludeSubfolders Then

For Each SubFolder In SourceFolder.SubFolders

28/7/2014

MACROS PARA EXCEL - VBA-

ListFilesInFolder SubFolder.Path, True

Next SubFolder

End If

Set FileItem = Nothing

Set SourceFolder = Nothing

Set FSO = Nothing

ActiveWorkbook.Saved = True

End Sub

Private Function ChoisirDossier()

Dim objShell, objFolder, chemin, SecuriteSlash

Set objShell = CreateObject(”Shell.Application”)

Set objFolder = _

objShell.BrowseForFolder(&H0&, “Procurar por um Diretório”, &H1&)

On Error Resume Next

chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & “”

If objFolder.Title = “Bureau” Then

chemin = “C:\Windows\Bureau”

End If

If objFolder.Title = “” Then

chemin = “”

End If

SecuriteSlash = InStr(objFolder.Title, “:”)

If SecuriteSlash > 0 Then

chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & “”

End If

28/7/2014

MACROS PARA EXCEL - VBA-

ChoisirDossier = chemin

End Function

Esta macro mostra o caminho de determinado arquivo

Sub Teste()

Dim Fich$

Fich = Application.GetOpenFilename

MsgBox GetInfo(Fich)(0) & vbLf & _

GetInfo(Fich)(1) & vbLf & GetInfo(Fich)(2)

MsgBox SplitInfo(Fich)(0) & vbLf & _

SplitInfo(Fich)(1) & vbLf & SplitInfo(Fich)(2)

MsgBox FSOInfo(Fich)(0) & vbLf & _

FSOInfo(Fich)(1) & vbLf & FSOInfo(Fich)(2)

End Sub

Function GetInfo(ByVal s As String) As Variant

Utilisation:

GetInfo(”c:\rep\test.xls”)(0) => “C:”

GetInfo(”c:\rep\test.xls”)(1) => “rep\”

GetInfo(”c:\rep\test.xls”)(2) => “test.xls”

Dim Dr As String, Rep As String, Fic As String

Dr = Left(s, InStr(1, s, “\”) - 1)

Fic = s

Do

Fic = Right(Fic, Len(Fic) - InStr(1, Fic, “\”))

Loop Until InStr(1, Fic, “\”) = 0

Rep = Mid(s, Len(Dr) + 1, Len(s) - Len(Dr) - Len(Fic))

GetInfo = Array(Dr, Rep, Fic)

28/7/2014

MACROS PARA EXCEL - VBA-

End Function

Function SplitInfo(NomFich$)

Dim Chemin$, NomBase$, Ext$

NomBase = Split(NomFich, “\”)(UBound(Split(NomFich, “\”)))

Ext = Split(NomBase, “.”)(1)

Chemin = Left(NomFich, Len(NomFich) - Len(NomBase))

NomBase = Split(NomBase, “.”)(0)

SplitInfo = Array(Chemin, NomBase, Ext)

End Function

Function FSOInfo(NomFich$)

Dim fso, Fich, Chemin, NomBase, Ext

Set fso = CreateObject(”Scripting.FileSystemObject”)

Set Fich = fso.getfile(NomFich)

Chemin = Fich.ParentFolder

NomBase = fso.GetBaseName(NomFich)

Ext = fso.GetExtensionName(NomFich)

FSOInfo = Array(Chemin, NomBase, Ext)

End Function

‘Esta macro cria um arquivo texto em C:\ chamado MeuArquivoAscii.txt

onde traz os dados Fechamento de Hoje data e hora e o nome do Usuário

Sub Criar_Escrever_ArquivoAscii()

Dim strNombreArchivo, strRuta, strArchivoTexto As String

28/7/2014

MACROS PARA EXCEL - VBA-

Dim f As Integer

nombre y ruta del archivo de texto

strNombreArchivo = “MeuArquivoAscii.txt”

strRuta = “C:\”

strArchivoTexto = strRuta & strNombreArchivo

abrimos el archivo para escribir

f = FreeFile

Open strArchivoTexto For Append As #f

escrevermos no arquivo

Print #f, “Fechamento de Hoje: ” & Now()

Print #f, “Usuário: ” & Application.UserName

fechamos o arquivo de texto

Close f

End Sub

Esta macro lê o arquivo acima e importa os dados para o Excel

Ler arquivo Ascii - INPUT

Sub Ler_Arquivo()

Dim strNombreArchivo, strRuta, strArchivoTexto As String

Dim f, i As Integer

Dim strTexto As String

nome do caminho do arquivo texto

strNombreArchivo = “MeuArquivoAscii.txt”

28/7/2014

MACROS PARA EXCEL - VBA-

strRuta = “C:\”

strArchivoTexto = strRuta & strNombreArchivo

abrimos o arquivo para leitura

f = FreeFile

Open strArchivoTexto For Input As #f

lemos o arquivo texto a coluna do Excel (importar)

i = 1

While Not EOF(f)

Line Input #f, strTexto

Cells(i, 1) = strTexto

i =

i +

1

Wend

fechamos o arquivo de texto

Close f

End Sub

Terça-feira, 22 de Abril, 2008

Esta macro abre arquivo txt notepad - e verifica a existência de arquivo e abre sim ou não.xls

Sub abrir_arquivo_txt_96()

If MsgBox(”Deseja Abrir o documento ? “, vbYesNo, “Excel VBA Estudos®”) = vbYes Then

abrir_arquivo_txt_96_1

Else

28/7/2014

MACROS PARA EXCEL - VBA-

MsgBox (”Não quis abrir o documento”) ‘Workbook.Close

ou ThisWorkbook.Saved = True

End If

End Sub

Sub abrir_arquivo_txt_96_1()

Dim f As String

f = “C:\Documents and Settings\E_Marcondes\Excel Word e Textos\Readme.txt”

Shell “Notepad ” & f, vbNormalFocus

End Sub

‘Esta macro Copia ColA da Plan2, no arquivo log.txt

‘–’

Sub Imprime_logTxt_ColA_Plan2()

Open ThisWorkbook.Path & “\log.TXT” For Output As #1 ‘Cria um arquivo]

For i = 1 To Range(”Plan2!A65000″).End(xlUp).Row

Write #1, Range(”Plan2!A” & CStr(i)).Value

Next i

Close #1

End Sub

Open ThisWorkbook.Path & “\loloessai.TXT” For Output As #1

par exemple :

Open ThisWorkbook.Path & “\lolo-” & format(now,”yyyy-mm-dd”) & “.TXT” For Output As #1

Esta macro abre o aplicativo NotePad

28/7/2014

MACROS PARA EXCEL - VBA-

Sub Abrir_NotePad()

Shell “C:\WINDOWS\NOTEPAD.EXE”, 4

End Sub

Esta macro abre importa para o Excel um arquivo txt chamado Texto.TXT

(texto.txt) abrir importar texto

Sub Abrir_Arquivo_TXT()

Workbooks.OpenText Filename:=”C:\Meus documentos\Texto.TXT”, _

Origin:=xlWindows, StartRow:=1, _

DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, _

ConsecutiveDelimiter:=False, Tab:=False, _

Semicolon:=True, Comma:=False, Space:=False, _

Other:=False, FieldInfo:=Array(Array(1, 1), _

Array(2, 1), Array(3, 1))

End Sub

Estas macros (procedimentos) abre um arquivo ativo.log no diretório

C:\Meus documentos\ e inseri a ‘data e horário da abertura e fechamento de

determinada ‘planilha. Arquivo log txt

WorkBook_Open e Workbook_BeforeClose quando fechar

Private Sub Workbook_Open()

28/7/2014

MACROS PARA EXCEL - VBA-

Dim LogFile As String

LogFile = “C:\Meus documentos\Ativo.log”

ChDir “C:\Meus documentos”

Celula = Now()

Open LogFile For Append Shared As #1

Print #1, “Abertura do Excel” & Celula

Close #1

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim LogFile As String

LogFile = “C:\Meus documentos\Ativo.log”

ChDir “C:\Meus documentos”

Celula = Now()

Open LogFile For Append Shared As #1

Print #1, “Fechamento do Excel a ” & Celula

Print #1, “———————————-”

Close #1

End Sub

Esta macro abre determinado arquivo no Excel

com os endereços de dados

Sub Abre_arquivo_txt_no_excel()

AdresseFichier = Application.GetOpenFilename(”Text Files (*.txt),*.txt”, _

, “Abrir dados de um determinado arquivo txt”)

If F = “False” Then End

28/7/2014

MACROS PARA EXCEL - VBA-

Workbooks.OpenText Filename:=AdresseFichier, Origin:=932, _

StartRow:=1, DataType:=xlDelimited, TextQualifier:= _

xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _

Semicolon:=False, _

Comma:=False, Space:=False, Other:=False, _

FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _

TrailingMinusNumbers:=True

End Sub

Esta macro abre arquivo txt e inseri texto

Sub Read_text_File()

Open “c:\Meus documentos\Textfile.txt” For Input Access Read As 1

Do While Not EOF(1)

Line Input #1, TextLine

Loop

Close #1

End Sub

Usando o objeto Assistant

28/7/2014

MACROS PARA EXCEL - VBA-

Use a propriedade Assistant para retornar o objeto Assistant. Não há uma coleção de ‘objetos Assistant; somente um objeto Assistant pode estar ativo de cada vez. Use a ‘propriedade Visible para exibir o assistente, e use a propriedade On para ativar o ‘assistente.

Comentários

O assistente padrão é o Rex. Para selecionar um assistente diferente através de ‘programação, use a propriedade FileName.

O exemplo a seguir exibe e anima o assistente.

Sub Tornar_visivel_assistente()

With Assistant

.Visible = True

.Animation = msoAnimationGreeting

End With

End Sub

O conteúdo deste tópico pode não ser aplicável a alguns idiomas.

Exibe o Assistente do Office e o balão interno “O que você deseja fazer?” para Ajuda ‘on-line padrão do Office.

Sub Assistente_Office()

Set b = Assistant.NewBalloon

With b

.Heading = “User Information”

.Text = “Select your skill level”

.CheckBoxes(1).Text = “Beginner.”

.CheckBoxes(2).Text = “Advanced.”

.CheckBoxes(3).Text = “Eu preciso de mais informações.”

.Show

End With

28/7/2014

MACROS PARA EXCEL - VBA-

If b.CheckBoxes(3).Checked = True Then

Assistant.Help

End If

End Sub

Esta macro chama o assistente (observar se o assistente esta instalado )

A relação de animação do assistente esta logo abaixo.

Sub Assistente_usar_animacao()

Dim ball As Balloon

Application.Assistant.Visible = True

Set ball = Application.Assistant.NewBalloon

With ball

.Heading = “Demonstração de como usar o assistente”