Académique Documents
Professionnel Documents
Culture Documents
12/09/2016
Introduo
Objetivo do minicurso
Introduzir a programao em VBA como uma ferramenta simples
permitindo utilizar as normais planilhas Excel com mais eficincia e
versatilidade.
Facilitar o manuseio de grande quantidade de dados e execuo de
tarefas repetitivas.
Fornecer bases para o estudo autnomo.
Foco na prtica e exerccios.
Durao
6 horas.
Trs sesses de 2 horas: 12/09, 13/09 e 14/09.
3
Visual Basic for Applications (VBA)
O Visual Basic uma linguagem de programao produzida pela
empresa Microsoft, e parte integrante do pacote Microsoft Visual Studio.
4
https://pt.wikipedia.org/wiki/Visual_Basic_for_Applications
Configurar a Guia Desenvolvedor
Microsoft Office 2007 Microsoft Office 2010
5
Gravando a primeira macro (1)
Inicie a gravao da macro:
6
Gravando a primeira macro (2)
1. Crie a seguinte tabela:
= B2 - B1
= B2/B1
2. Formate a tabela:
7
Gravando a primeira macro (2)
4. Insira uma nova Planilha.
6. Elimine a Planilha C.
8
Gravando uma planilha habilitada para
macros
Pasta de Trabalho com Permisso para Macros do Excel (*.xlsm)
9
Acessando o Editor VBA
10
Editor do Visual Basic for Applications
Listagem de todas as macros
Alt+F11 armazenadas no Mdulo1
Projeto VBA
13
Exerccio 2
5. Copie a macro criada no Exerccio 1 e cole-a no Mdulo criado.
6. Feche o Exerccio 1 antes de prosseguir
7. Divida o seu ecr de modo a conseguir visualizar a pasta Excel e o
Editor VBA.
8. Execute a Macro em modo Debug Step Into F8
14
Anlise da primeira macro (1)
Sub Exercicio1() Incio do cdigo
'
' Exercicio1 Macro
' Gravando uma macro usando a interface excel.
Linhas de comentrio
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "A"
Range("B1").Select
ActiveCell.FormulaR1C1 = "5"
Range("A2").Select
ActiveCell.FormulaR1C1 = "B"
Range("B2").Select
ActiveCell.FormulaR1C1 = "10"
Range("A3").Select
ActiveCell.FormulaR1C1 = "A+B"
Range("B3").Select
ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C"
Range("A4").Select
ActiveCell.FormulaR1C1 = "A/B"
Range("B4").Select
ActiveCell.FormulaR1C1 = "=R[-3]C/R[-2]C"
15
Anlise da primeira macro (2)
Range("A1:A4").Select
Selection.Font.Bold = True
Range("B1:B4").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
16
Anlise da primeira macro (3)
Sheets.Add After:=Sheets(Sheets.Count)
Sheets("Plan1").Select
Sheets("Plan1").Name = "A"
Sheets("Plan2").Select
Sheets("Plan2").Name = "B"
Sheets("Plan3").Select
Sheets("Plan3").Name = "C"
Sheets("Plan4").Select
Sheets("Plan4").Name = "D"
Sheets("C").Select
ActiveWindow.SelectedSheets.Delete
Sheets("A").Select
Range("A1:C5").Select
Selection.Copy
Sheets("B").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
17
FormulaR1C1
In 1980, Multiplan the previous Work spread of Microsoft was addressing the cells following
the RiCj notation.
RiCj represents the cell located on the ith row and on the jth column. If the formula
referencing RiCj was copied, the reference was considered as the absolute reference.
R[+i]C[-j] represents the cell located i rows down and j columns on the left of the initial cell.
If the formula referencing R[+i]C[-j] was copied, the reference was considered as relative.
The main interest of this notation is that the difference between relative and absolute is more
natural. R1C1 references, in an absolute way, the top left cell of the sheet while R[-3]C[+2]
represents a relative cell located 3 rows up and 2 columns right.
The drawback is the level of readability of the relative notation. Another well known work
spread called Lotus1.2.3 was referencing the cells using the American notation (as for
instance A1).
The FormulaR1C1 property is based on the R1C1 notation because it is easier to manipulate
row number than row characters in VBA programs. Thus, using the macro recorder to type
the formula in E11 (the active cell) will result in the following statement:
ActiveCell.FormulaR1C1==R11C4*R[-1]C
18
Comunicao Excel e VBA
Principais formas de manipular clulas do Excel a partir de VBA
Range
Objeto mais importante do VBA representa uma clula ou conjunto de clulas
Range(A1) clula A1
Range(B2:D5) conjunto de clulas entre B2 e D5
Cells(rowIndex, colIndex)
Cells(1,1) clula A1
Cells(7,4) clula D7
Range(Cells(2,2), Cells(5,4)) conjunto de clulas entre B2 e D5
ActiveCell
Refere-se clula atualmente ativa.
Se um conjunto de clulas estiver selecionado (ex. Range(B2:D5)), este objeto refere-se
clula localizada no canto superior esquerdo da atual seleo (clula B2).
19
Comunicao Excel e VBA
Principais formas de manipular clulas do Excel a partir de VBA
Offset(rowOffset, columnOffset)
Offset um mtodo aplicvel ao objeto ActiveCell
Exemplo:
Range(C5).Select
ActiveCell.Offset(0,1) refere-se clula localizada uma coluna direita da
atual seleo Clula D5
ActiveCell.Offset(-1,2) refere-se clula localizada uma linha acima e duas
colunas direita da atual seleo Clula E4
20
Objeto Range
Principais Mtodos do Objeto Range
Range("B1:D10").ClearContents
Cells(1, 1).Value = 24
Range("C1:C5").Copy
Range("D1:D5").PasteSpecial xlPasteValues
24
Exerccio 3 nova macro (1)
Sub Exercicio3()
Range("A1").Value = "A"
Range("B1").Value = 5
Range("A2").Value = "B"
Range("B2").Value = 10
Range("A3").Value = "A+B"
Range("B3").FormulaR1C1 = "=R[-2]C+R[-1]C"
'Range("B3").Value = Range("B1").Value + Range("B2").Value
Range("A4").Value = "A/B"
Range("B4").FormulaR1C1 = "=R[-3]C+R[-2]C"
'Range("B4").Value = Range("B1").Value / Range("B2").Value
Range("A1:A4").Font.Bold = True
Range("B1:B4").Font.Color = -16776961
'Range("B1:B4").Font.Color = vbRed
'Range("B1:B4").Font.Color = RGB(255, 0, 0)
25
Exerccio 3 nova macro (2)
Range("A1").EntireRow.Insert
Range("A1").EntireColumn.Insert
Sheets.Add After:=Sheets(Sheets.Count)
'Sheets.Add After:=Sheets("Plan3")
Sheets("Plan1").Name = "A"
Sheets("Plan2").Name = "B"
Sheets("Plan3").Name = "C"
Sheets("Plan4").Name = "D"
Sheets("C").Delete
Sheets("A").Range("A1:C5").Copy
Sheets("B").Range("A1").PasteSpecial xlPasteAll
End Sub
26
Procedimentos VBA
Procedimentos
Um procedimento uma unidade de cdigo que realiza uma tarefa e se encontra localizada
entre instrues Sub e End Sub ou entre instrues Function e End Function.
SubProcedure
uma rotina que desempenha uma tarefa especfica.
Instrues Sub e End Sub.
Function
As funes so como sub-rotinas, mas com a diferena que devolvem um valor como
resultado da operao.
Instrues Function e End Function.
Mdulos
O cdigo dentro de um mdulo organizado em procedimentos.
Um mdulo deve armazenar um conjunto de procedimentos que realizem tarefas especficas
ou identicas.
27
Funes VBA
Uma funo computa um resultado a partir de argumentos que so
fornecidos como dados de entrada (clulas, valores, variveis, ).
End Funtion
Notas importantes:
O separador de argumentos a virgula;
Todos as palavras-chave so em Ingls;
O separador decimal o ponto (Ingls);
Recomenda-se que todas as funes sejam armazenadas no mesmo Mdulo
facilita a exportao para outra Planilha.
28
Funes VBA Exemplo
End Function
29
Declarao de Variveis
Uma varivel uma rea na memria, referenciada por um identificador,
onde pode ser armazenado um valor e alterado a qualquer momento.
30
Declarao de Variveis
Dim
Declara e aloca espao de armazenamento para uma ou mais variveis.
O valor da varivel retido apenas enquanto o procedimento no qual ela foi
declarada estiver em execuo.
Sintaxe simplificada:
Dim nomeVariavel As tipoVariavel
31 https://msdn.microsoft.com/pt-br/library/7ee5a7s1.aspx
Tipos de dados
O tipo de uma varivel determina a quantidade de memria que ela ocupar, em
bytes, e o modo de armazenamento.
VBA Tamanho Intervalo
Boolean 2 bytes Verdadeiro ou Falso
Byte 1 byte Nmeros sem sinal entre 0 e 255
Date 8 bytes 01/01/100 a 31/12/9999
Double 8 bytes -1.79769313486231570E+308 a
-4.94065645841246544E-324 para valores negativos;
4.94065645841246544E-324 a
1.79769313486231570E+308 para valores positivos.
Integer 2 bytes Nmeros inteiros entre -32768 e 32767
Long 4 bytes nmeros inteiros entre -2 147 483 648 e 2 147 483 648
Object 4 bytes utilizado para fazer referncia a um objeto do Excel
Single 4 bytes -3.4028235E+38 a -1.401298E-45 para valores negativos;
1.401298E-45 a 3.4028235E+38 para valores positivos.
String 1 byte por caractere 0 a aproximadamente 2 bilies de caracteres Unicode
Variante 16 bytes permite armazenar qualquer tipo de dados
32 https://msdn.microsoft.com/pt-br/library/47zceaw7.aspx
Declarao de Variveis
Dim
Sintaxe completa:
Static
Especifica que uma ou mais variveis locais declaradas devem continuar a existir e manter seus valores mais
recentes aps o trmino do procedimento no qual elas so declaradas.
33 https://msdn.microsoft.com/pt-br/library/76453kax.aspx
Principais Operadores
34 http://bianchi.pro.br/vba/vba_p1.php
Principais Operadores
35 http://bianchi.pro.br/vba/vba_p1.php
Exerccio 4 - Criando uma Funo
1. Crie uma funo para calcular a hipotenusa de um
tringulo retngulo a partir das dimenses dos catetos.
1. Use o arquivo fornecido Exerccio4.xlsx
2. Crie um novo mdulo denominado Funes
3. Denomine a sua funo de hipotenusa
36
Exerccio 4 - Resoluo
Function hipotenusa(x As Double, y As Double) As Double
hipotenusa = (x * x + y * y) ^ (1 / 2)
End Function
37
Interao com o Usurio
Em uma rotina, pode ser necessrio recolher informaes do usurio
atravs de questes abertas (InputBox) ou fechadas (MsgBox)
InputBox
MsgBox
Declarao: pop-up que mostra uma informao ao usurio.
38
InputBox
39
MsgBox
40
MsgBox
41
MsgBox
A funo MsgBox produz um valor em funo do boto
acionado, assim produzir como output um dos valores
constantes da tabela seguinte:
42
Interao com o Usurio - Exemplos
preco = InputBox("Informe o preo")
43
Exerccio 4 parte 2
Procedimento para calcular a hipotenusa de um triangulo retngulo, usando as
funcionalidades de interface com o usurio para informar os valores dos
catetos.
44
Exerccio 4 Botes de macros
45
Exerccio 4 Resoluo
Sub hipotenusa_usuario()
'calculo da hipotenusa
resultado = hipotenusa(ladoX, ladoY)
'resultado
MsgBox "A hipotenusa : " & Format(resultado, "###.##"), vbInformation,
"Resultado"
'MsgBox "A hipotenusa : " & resultado
End Sub
46
Outras utilidades
Comentrios no cdigo:
Para inserir comentrios basta preced-lo de um apstrofo ()
O comentrio pode ser inserido no princpio ou a meio de uma linha de cdigo.
Tudo o que est escrito esquerda do apstrofo considerado como comentrio.
O comentrio aparece no editor de cdigo com a cor verde.
a = b + c*b / sqr(b) + _
c*b*0.5
Call Macro1
47
Resumo do Dia 1
O que o Visual Basic for Applications (VBA).
Criao de macros VBA usando a interface Excel: Guia Desenvolvedor; Gravar,
Editar e Correr uma macro.
Editor do Visual Basic.
Comunicao entre Excel e VBA: objetos, propriedades e mtodos.
Principais formas de manipular clulas do Excel a partir de VBA: Range, Cells,
ActiveCell.
Declarao e tipos de variveis.
Subprocedimentos versus Funes em VBA.
Interao com usurio: botes e caixas de dilogo (InputBox, MsgBox).
Outras utilidades: comentrios no cdigo, continuao de linha de cdigo, chamar
outras rotinas.
48
Dicas e Esclarecimentos adicionais
http://ic.unicamp.br/~everton/aulas/excel/Aula%2023%20-
%20macros%20com%20VB.pdf
http://bianchi.pro.br/vba/vba_p1.php
https://msdn.microsoft.com/en-us/library/office/gg264358.aspx
http://www.excel-easy.com/vba/range-object.html
https://msdn.microsoft.com/PT-BR/library/office/ff838238.aspx
https://msdn.microsoft.com/pt-br/library/office/ff823188.aspx
https://msdn.microsoft.com/pt-br/library/47zceaw7.aspx
https://msdn.microsoft.com/pt-br/library/b6ex274z.aspx
https://msdn.microsoft.com/pt-br/library/215yacb6.aspx
https://msdn.microsoft.com/pt-br/library/ft3z50dy.aspx
https://msdn.microsoft.com/en-us/library/bb209950
https://msdn.microsoft.com/pt-br/library/139z2azd(v=vs.90).aspx
https://msdn.microsoft.com/pt-br/library/76453kax.aspx
49
Dia 2
13/09/2016
Recordando.
Object (objeto) representa um elemento do Excel.
ex: planilha (sheet), clula (cell), grfico, etc.
52
Objeto Application
Representa todo o aplicativo Microsoft Excel.
O objeto Application contm:
Configuraes e opes para o aplicativo como um todo.
Mtodos que retornam objetos de nvel superior.
Muitas das propriedades e mtodos que retornam os objetos mais comuns da interface do usurio,
podem ser usadas sem o qualificador de objeto Application.
Application.Sheets(1).Activate
Pode ser escrito como:
Sheets(1).Activate
Application.WorksheetFunction.CountA(Range("A:A"))
Pode ser escrito como:
WorksheetFunction.CountA(Range("A:A"))
54
Objetos Workbooks, Workbook e
ThisWorkbook
Workbooks
Uma coleo de todos os objetos Workbook que esto abertos no momento no aplicativo Microsoft Excel.
Workbook
Cada objeto Workbook representa uma pasta de trabalho Microsoft Excel.
ThisWorkbook
A propriedade ThisWorkbook retorna a pasta de trabalho onde o cdigo do Visual Basic est sendo
executado, no a pasta de trabalho ativa.
Workbooks(1).Close
fecha todas as pastas de trabalho um.
Workbooks.Add
adiciona uma nova pasta de trabalho vazia ao Microsoft Excel.
Workbooks(1).Activate
ativa a pasta de trabalho um.
ThisWorkbook.Close SaveChanges:=False
fecha pasta de trabalho onde o cdigo do Visual Basic est sendo executado, sem salvar as alteraes.
56
Objeto Sheets
Uma coleo de todas as planilhas na pasta de trabalho ativa ou especificada.
A coleo Sheets pode conter objetos Chart ou Worksheet .
A coleo Sheets til quando voc deseja retornar planilhas de qualquer tipo. Se voc
precisar trabalhar com planilhas de apenas um tipo, consulte o tpico do objeto para esse
tipo de planilha: Charts ou Worksheet.
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Caso1"
Adiciona uma nova planilha denominada Caso1 no final de todas as planilhas da pasta de trabalho.
Sheets(Plan1").Activate
Use Sheets(index), onde ndice o nome da planilha ou o nmero de ndice, para retornar um nico
objeto Chart ou Worksheet . O exemplo ativa a planilha chamada Plan1".
58
Objetos Worksheets, Worksheet e
ActiveSheet
Worksheets
Uma coleo de todos os objetos Worksheet em uma pasta de trabalho.
Worksheet
Cada objeto Worksheet representa uma planilha.
ActiveSheet
Propriedade que retorna um objeto que representa a planilha ativa.
Columns
Rows
Range
Worksheets(1).Visible = False
Use as Worksheets(index), onde ndice o nome ou nmero de ndice da planilha, para
retornar um nico objeto Worksheet . O exemplo oculta a planilha um na pasta de
trabalho ativa.
Workbooks(Logs.xls").Worksheets("Sheet1").Activate
Ativa Sheet1 na pasta de trabalho chamada Logs.xls (a pasta de trabalho precisa estar aberta no
Microsoft Excel).
61
Objeto Worksheet Exemplos (2)
Worksheets("Plan1").Activate
Worksheets("Plan1").Copy After:=Worksheets("Plan3")
Worksheets("Plan1").Move After:=Worksheets("Plan3")
Worksheets("Plan1").Range("C1:C5").Copy
ActiveSheet.Paste Destination:=Worksheets("Plan1").Range("D1:D5")
Worksheets("Plan1").Cells(1).ClearContents
Worksheets("Plan1").Columns(1).Font.Bold = True
Worksheets("Plan1").Rows(3).Delete
Worksheets("Plan1").Range("A1").Value = 3.14159
Worksheets("Plan1").Range("C1:C5").Copy
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("D1:D5")
62
Objeto WorksheetFunction
Usado como continer para funes de planilha do Microsoft Excel que podem ser
chamadas no Visual Basic.
Exemplos
WorksheetFunction.Min(Range("A1:I1"))
WorksheetFunction.Average(Range(Cells(1,1), Cells(7,5)))
WorksheetFunction.CountA(Range("A:A"))
Planilha: DadosPROD026
Crie um novo procedimento que registre em uma nova planilha (denominada Ex5.1)
os modelos e respectivos dados em que o poo PROD026 apresenta produo nula
(Np=0). Aps identificados, calcule o nmero de modelos e o percentual do total de
modelos.
64 Arquivo Exercicio5.xlsx
Estruturas loop
For Next
Repete um grupo de instrues em um nmero de vezes especificado.
Sintaxe simplificada
65
Estruturas loop
For Each Next
Repete um grupo de instrues para cada elemento em uma coleo.
Sintaxe simplificada
For Each item_in_group In group_of_items
seu cdigo
Next
66
Estruturas loop
Do Loop
Repete um bloco de declaraes enquanto uma condio Boolean for True ou
at a condio tornar-se True.
Sintaxe simplificada
Do { While | Until } condition
seu cdigo
Loop
-ou-
Do
seu cdigo
Loop { While | Until } condition
67
Estruturas loop
While End While
Executa uma srie de instrues enquanto uma condio determinada True.
Sintaxe simplificada
While condition
seu cdigo
End While
68
Estruturas de deciso
If...Then...Else...End If
Executa um grupo de instrues condicionalmente, dependendo do valor de uma
expresso.
Sintaxe simplificada
If a > 0 Then
MsgBox O valor maior do que zero
ElseIf a = 0 Then
MsgBox O valor igual a zero
Else
MsgBox O valor menor do que zero
End If
69
Outras estruturas
With End With
Executa uma srie de instrues que referenciam repetidamente um nico
objeto ou estrutura
Sintaxe simplificada
With Objeto
intrues
End With
70
Exerccio 5.1
Considere um caso de estudo de previso de produo usando simulao numrica de
reservatrios.
Queremos analisar a chance de o poo produtor PROD026 apresentar produo nula
(planilha: DadosPROD026).
Crie um novo procedimento que registre em uma nova planilha (denominada Ex5.1)
os modelos e respectivos dados em que o poo PROD026 apresenta produo nula
(Np=0). Aps identificados, calcule o nmero de modelos e o percentual do total de
modelos.
71 Arquivo Exercicio5.xlsx
Algumas dicas...
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Ex5.1
Sheets.Add After:=Worksheets(Worksheets.Count))
Sheets(Worksheets.Count).Name = "Ex5.1"
72 Arquivo Exercicio5.xlsx
Exerccio 5.2
Considere o mesmo caso de estudo do Ex. 5.1.
fornecido um banco de dados (planilha Modelos) organizada por modelo
que inclui:
- poos perfurados no perodo de explorao (NA1A, NA2, NA3D, RJS19)
que no sero usados no desenvolvimento do campo.
- novos poos da estratgia de produo, ainda no perfurados.
73 Arquivo Exercicio5.xlsm
Aceleradores de macros
Algumas propriedades do objeto Application (o aplicativo Microsoft Excel)
podem ser modificadas de modo a acelerar o tempo de execuo de uma
macro.
Application.Calculation
Retorna ou define um valor xlCalculation que representa o modo de clculo.
Application.DisplayAlerts
True se o Microsoft Excel exibe certos alertas e mensagens enquanto uma
macro est sendo executado.
Application.EnableEvents
True se os eventos so ativados para o objeto especificado.
Application.ScreenUpdating
True se a atualizao de tela estiver ativada.
74
Aceleradores de macros
'Optimize Macro Speed
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
75
Exerccio 5.3
Considere um caso de estudo de previso de produo usando simulao
numrica de reservatrios.
Observe que o banco de dados criado no exerccio anterior (planilha Ex5.2)
encontra-se organizado por modelo e inclui:
- dados do campo (linha *FIELD).
- todos os poos da estratgia de produo.
Crie um novo procedimento que crie uma nova planilha (denominada Ex5.3)
que contenha apenas os dados de campo.
76 Arquivo Exercicio4.xlsm
Resumo do Dia 2
Objetos: Application, Workbooks, Sheets, Worksheets, WorksheetFunction.
Hierarquia de Objetos em VBA.
Estruturas de deciso: If...Then...Else...End If.
Estruturas Loop: For...Next; For Each Next; Do...Loop; While End
While;
Outras estruturas: With End With.
Aceleradores de macros.
77
Dicas e Esclarecimentos adicionais
https://msdn.microsoft.com/pt-br/library/office/ff834434.aspx
https://msdn.microsoft.com/pt-br/library/office/ff193217.aspx
http://www.excel-easy.com/vba/workbook-worksheet-object.html
http://webserver.mohid.com/MTDP/downloads/Introdu%C3%A7%C3%A3o_%C
3%A0_programa%C3%A7%C3%A3o_em_VBA.pdf
https://msdn.microsoft.com/pt-br/library/wc500chb.aspx
https://msdn.microsoft.com/pt-br/library/752y8abs.aspx
https://msdn.microsoft.com/pt-br/library/5z06z1kb.aspx
https://msdn.microsoft.com/pt-br/library/eked04a7.aspx
https://msdn.microsoft.com/pt-br/library/zh1f56zs.aspx
https://msdn.microsoft.com/PT-BR/library/office/ff839409.aspx
http://software-solutions-online.com/2014/03/13/vba-folder-dialog/
78
Dia 3
14/09/2016
Exerccio 5.4
Considere um caso de estudo de previso de produo usando simulao
numrica de reservatrios.
fornecido um arquivo (Ex5.2) organizada por modelo que inclui:
- dados do campo (linha *FIELD).
- todos os poos da estratgia de produo.
Crie um novo procedimento que crie uma nova planilha (denominada Ex5.4)
que contenha apenas os dados do poo produtor PROD005, incluindo o
nome do modelo correspondente.
80 Arquivo Exercicio5.xlsm
Exerccio 5.5
Considere um caso de estudo de previso de produo usando simulao
numrica de reservatrios.
So fornecidos dois bancos de dados (planilhas Produtores e Injetores)
que incluem o desempenho dos poos produtores e injetores nos 147
modelos do reservatrio.
Crie um novo procedimento que crie uma nova planilha (denominada Ex5.5)
com a seguinte tabela, mostrando o nmero de modelos em que cada poo
apresenta produo ou injeo nula (Np=0 e Winj=0, respectivamente):
81 Arquivo Exercicio5.xlsm
Exerccio 5.6
Considere um caso de estudo de previso de produo usando simulao
numrica de reservatrios.
fornecido um arquivo (Ex5.2) que inclui o desempenho dos poos
produtores nos 147 modelos do reservatrio.
82 Arquivo Exercicio5.xlsm
Exerccio 6
So fornecidos 20 arquivos com dados de previso de 20 modelos de
simulao.
83 Diretrio Exercicio6
Abrir e editar arquivos externos
Sub LoopAllExcelFilesInFolder()
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
84 Diretrio Exercicio6
Abrir e editar arquivos externos
'Retrieve Target Folder Path From User
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Select A Target Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
85 Diretrio Exercicio6
Abrir e editar arquivos externos
'Target Path with Ending Extention
myFile = Dir(myPath & myExtension)
86 Diretrio Exercicio6
Abrir e editar arquivos externos
'Message Box when tasks are completed
MsgBox "Task Complete!"
ResetSettings:
'Reset Macro Optimization Settings
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
End With
End Sub
87 Diretrio Exercicio6
Resumo do Dia 3
Estruturas de deciso: If...Then...Else...End If.
Estruturas Loop: For...Next; For Each Next; Do...Loop; While End
While;
Outras estruturas: With End With.
Aceleradores de macros.
Abrir e manipular arquivos externos usando rotinas VBA.
88
Dicas e Esclarecimentos adicionais
https://msdn.microsoft.com/pt-br/library/office/ff834434.aspx
https://msdn.microsoft.com/pt-br/library/office/ff193217.aspx
http://www.excel-easy.com/vba/workbook-worksheet-object.html
http://webserver.mohid.com/MTDP/downloads/Introdu%C3%A7%C3%A3o_%C
3%A0_programa%C3%A7%C3%A3o_em_VBA.pdf
https://msdn.microsoft.com/pt-br/library/wc500chb.aspx
https://msdn.microsoft.com/pt-br/library/752y8abs.aspx
https://msdn.microsoft.com/pt-br/library/5z06z1kb.aspx
https://msdn.microsoft.com/pt-br/library/eked04a7.aspx
https://msdn.microsoft.com/pt-br/library/zh1f56zs.aspx
https://msdn.microsoft.com/PT-BR/library/office/ff839409.aspx
http://software-solutions-online.com/2014/03/13/vba-folder-dialog/
89