Lio 16: O Objeto Workbook - Propriedades e Mtodos - Parte III
Nesse lio veremos alguns dos principais mtodos do objeto Workbook.
Mtodo Add (coleo Workbooks): Cria uma nova pasta de trabalho. A nova pasta de trabalho se torna a pasta de trabalho ativa. Retorna um objeto Workbook. Sintaxe: expresso.Add(Template) expresso: Obrigatria. Uma expresso que retorne um objeto Workbooks. Template: Variant opcional. Determina como a nova pasta de trabalho criada. Se esse argumento for uma cadeia de caracteres especificando o nome de um arquivo do Microsoft Excel existente, a nova pasta de trabalho ser criada com o arquivo especificado como um modelo. Se esse argumento for uma constante, a nova pasta de trabalho conter uma nica planilha do tipo especificado. Pode ser uma das seguintes constantes XlWBATemplate: xlWBATChart, xlWBATExcel4IntlMacroSheet, xlWBATExcel4MacroSheet ou xlWBATWorksheet. Se esse argumento for omitido, o Microsoft Excel criar uma nova pasta de trabalho com algumas planilhas em branco (o nmero de planilhas definido pela propriedade SheetsInNewWorkbook). Comentrios: Quando o argumento Template especifica um arquivo, o nome do arquivo pode incluir um caminho. Exemplo do mtodo Add (coleo Workbooks): Este exemplo cria uma nova pasta de trabalho. Workbooks.Add Mtodo Close: Fecha o objeto. A coleo Workbooks usa a Sintaxe 1. Os objetos Window e Workbook usam a Sintaxe 2. Sintaxe 1: expresso.Close Sintaxe 2: expresso.Close(SaveChanges, FileName, RouteWorkbook) expresso: Obrigatria. Uma expresso que retorne um objeto da lista Relativo a. SaveChanges: Variant opcional. Se no houver alteraes na pasta de trabalho, esse argumento ser ignorado. Se houver alteraes na pasta de trabalho e ela aparecer em outras janelas abertas, esse argumento ser ignorado. Se houver alteraes na pasta de trabalho, mas ela no aparecer em qualquer outra janela aberta, esse argumento especificar se as alteraes devem ser salvas, como mostrado na tabela seguinte. Valores True: Salva as alteraes na pasta de trabalho. Se ainda no houver um nome de arquivo associado pasta de trabalho, FileName ser usado. Se FileName for omitido, o usurio ser solicitado a fornecer um nome de arquivo. False: No salva as alteraes nesse arquivo. Omitido: Exibe uma caixa de dilogo perguntando ao usurio se as alteraes devem ser salvas. FileName: Variant opcional. As alteraes so salvas sob este nome de arquivo. RouteWorkbook: Variant opcional. Se a pasta de trabalho no precisar ser encaminhada para o prximo destinatrio (se no tiver lista de circulao ou se j tiver sido encaminhada), este argumento ser ignorado. Caso contrrio, o Microsoft Excel encaminhar a pasta de trabalho como mostrado na tabela seguinte. Valores: True: Envia a pasta de trabalho para o prximo destinatrio. False: No envia a pasta de trabalho. Omitido: Exibe uma caixa de dilogo perguntando ao usurio se a pasta de trabalho deve ser enviada. Comentrios: O fechamento de uma pasta de trabalho a partir do VBA no causa a execuo de macros Auto_Fechar da pasta de trabalho. Use o mtodo RunAutoMacros para executar as macros de fechamento automtico. Mtodo Open: Abre uma pasta de trabalho. Sintaxe: expresso.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU) expresso: Obrigatria. Uma expresso que retorne um objeto Workbooks ou RecentFile. FileName: String obrigatria. O nome de arquivo da pasta de trabalho a ser aberta. UpdateLinks: Variant opcional. Especifica o modo pelo qual so atualizados os vnculos do arquivo. Se este argumento for omitido, o usurio ser solicitado a especificar como os vnculos sero atualizados. Caso contrrio, este argumento ser um dos valores listados na tabela seguinte. Valor Significado 0 No atualiza nenhuma referncia 1 Atualiza as referncias externas, mas no as remotas 2 Atualiza as referncias remotas, mas no as externas 3 Atualiza tanto as referncias externas quanto as remotas Se o Microsoft Excel estiver abrindo um arquivo em formato WKS, WK1 ou WK3 e o argumento UpdateLinks for 2, o Microsoft Excel ir gerar grficos a partir dos grficos anexados ao arquivo. Se o argumento for 0, nenhum grfico ser criado. ReadOnly: Variant opcional. True para abrir a pasta de trabalho em modo somente leitura. Format: Variant opcional. Se o Microsoft Excel estiver abrindo um arquivo de texto, este argumento especificar o caractere delimitador, conforme mostrado na tabela seguinte. Se este argumento for omitido, o delimitador atual ser usado. Valor Delimitador 1 Tabulaes 2 Vrgulas 3 Espaos 4 Ponto-e-vrgulas 5 Nada 6 Caractere personalizado (consulte o argumento Delimiter) Password: Variant opcional. Uma seqncia de caracteres que contenha a senha obrigatria para se abrir uma pasta de trabalho protegida. Se esse argumento for omitido e a pasta de trabalho exigir uma senha, o usurio ser solicitado a fornec-la. WriteResPassword: Variant opcional. Uma seqncia de caracteres que contenha a senha necessria para gravar em uma pasta de trabalho de gravao reservada. Se este argumento for omitido e a pasta de trabalho requerer uma senha, o usurio ser solicitado a fornec-la. IgnoreReadOnlyRecommended: Variant opcional. True para que o Microsoft Excel no exiba a mensagem de recomendao somente leitura (se a pasta de trabalho foi salva com a opo Recomendvel somente leitura). Origin: Variant opcional. Se o arquivo for um arquivo de texto, este argumento indicar qual a sua origem (para que as pginas de cdigo e o retorno de carro/alimentao de linha (CR/LF) possam ser mapeados corretamente). Pode ser uma das seguintes constantes XlPlatform: xlWindows ou xlMSDOS. Se este argumento for omitido, o sistema operacional atual ser usado. Delimiter: Variant opcional. Se o arquivo for um arquivo de texto e o argumento Format for 6, este argumento ser uma seqncia de caracteres que especificar o caractere a ser usado como delimitador. Por exemplo, use Chr(9) para tabulaes, use "," para vrgulas, use ";" para ponto-e-vrgulas ou use um caractere personalizado. Somente o primeiro caractere da seqncia usado. Editable: Variant opcional. Se o arquivo for um suplemento do Microsoft Excel 4.0, este argumento ser True para abrir o suplemento como uma janela visvel. Se este argumento for False ou omitido, o suplemento ser aberto como oculto e no poder deixar de ser oculto. Esta opo no se aplica a suplementos criados no Microsoft Excel 5.0 ou posterior. Se o arquivo for um modelo do Excel, True abrir o modelo especificado para edio. False abrir uma nova pasta de trabalho baseada no modelo especificado. O valor padro False. Notify: Variant opcional. Se o arquivo no puder ser aberto em modo de leitura e gravao, este argumento ser True para adicionar o arquivo lista de notificao de arquivos. O Microsoft Excel abrir o arquivo como somente leitura, pesquisar a lista de notificao de arquivos e, em seguida, notificar o usurio quando o arquivo tornar-se disponvel. Se este argumento for False ou omitido, nenhuma notificao ser solicitada, e qualquer tentativa de abrir um arquivo no disponvel ir falhar. Converter: Variant opcional. O ndice do primeiro conversor de arquivo a experimentar ao abrir o arquivo. O conversor de arquivo especificado experimentado primeiro; se esse conversor no reconhecer o arquivo, todos os outros conversores sero usados. O ndice de conversor compreende os nmeros de linha dos conversores, retornados pela propriedade FileConverters. AddToMru: Variant opcional. True para adicionar esta pasta de trabalho lista de arquivos usados recentemente. O valor padro False. Comentrios: Se a pasta de trabalho sendo aberta tiver quaisquer macros Auto_Open, estas no sero executadas quando voc abrir o arquivo a partir do Visual Basic. Se voc desejar executar a macro Auto_Open, voc dever usar o mtodo RunAutoMacros. Exemplo do mtodo Open: Este exemplo abre a pasta de trabalho Analysis.xls e, em seguida, executa sua macro Auto_Open. Workbooks.Open "ANALYSIS.XLS" ActiveWorkbook.RunAutoMacros xlAutoOpen
Lio 17: Worksheet e Range - Propriedades e Mtodos - Parte I
Nessa lio e nas prximas duas, veremos alguns exemplos de usos prticos do objeto Worksheet e de Range. Tambm sero apresentados detalhes sobre alguns dos principais mtodos e propriedades desses objetos. Como fazer referncia a clulas e intervalos: Uma tarefa comum ao usar o VBA especificar uma clula ou intervalo de clulas e, em seguida, fazer algo com elas, como inserir uma frmula ou alterar o formato. Geralmente, voc pode fazer isso em uma instruo que identifique o intervalo e tambm altere uma propriedade ou aplique um mtodo. Um objeto Range no VBA pode ser uma nica clula ou um intervalo de clulas. Os tpicos seguintes mostram as maneiras mais comuns de identificar e trabalhar com objetos Range. Referir-se a clulas e intervalos usando a notao A1: Voc pode referir-se a uma clula ou intervalo de clulas no estilo de referncia A1 usando o mtodo Range. O exemplo seguinte altera o formato das clulas A1:D5 para negrito. Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True A tabela seguinte ilustra algumas referncias em estilo A1 usando o mtodo Range. Referncia Significado Range("A1") Clula A1 Range("A1:B5") Clulas de A1 at B5 Range("C5:D9,G9:H16") Uma seleo de vrias reas Range("A:A") Coluna A Range("1:1") Linha 1 Range("A:C") Colunas de A at C Range("1:5") Linhas 1 at 5 Range("1:1,3:3,8:8") Linhas 1, 3 e 8 Range("A:A,C:C,F:F") Colunas A, C e F Referir-se a clulas usando nmeros de ndice: Voc pode usar a propriedade Cells para referir-se a uma nica clula usando nmeros de ndice de linha e coluna. Essa propriedade retorna um objeto Range representando uma nica clula. No exemplo seguinte, Cells(6,1) retorna a clula A6 da planilha Sheet1. Em seguida, a propriedade Value definida como 10. Worksheets("Sheet1").Cells(6, 1).Value = 10 A propriedade Cells funciona bem para loop atravs de um intervalo de clulas porque voc pode substituir os nmeros de ndice por variveis, conforme mostrado no exemplo seguinte. Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter Next counter Observao: Se voc desejar alterar as propriedades ou aplicar um mtodo a todo um intervalo de clulas de uma s vez, use a propriedade Range. Para obter mais informaes, consulte Referir-se a clulas usando notao A1. Referir-se a linhas e colunas: Use a propriedade Rows ou a propriedade Columns para trabalhar com linhas ou colunas inteiras. Essas propriedades retornam um objeto Range representando um intervalo de clulas. No exemplo seguinte, Rows(1) retorna a linha um na planilha Sheet1. Em seguida, a propriedade Bold do objeto Font do intervalo definida como True. Worksheets("Sheet1").Rows(1).Font.Bold = True A tabela seguinte ilustra algumas referncias de linha e coluna usando as propriedades Rows e Columns. Referncia Significado Rows(1) Linha um Rows Todas as linhas da planilha Columns(1) Coluna um Columns("A") Coluna um Columns Todas as colunas da planilha Para trabalhar com vrias linhas ou colunas ao mesmo tempo, crie uma varivel de objeto e use o mtodo Union, combinando vrias chamadas propriedade Rows ou Columns. O exemplo seguinte altera para negrito o formato das linhas um, trs e cinco na planilha um da pasta de trabalho ativa. Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5)) myUnion.Font.Bold = True Referir-se a intervalos nomeados: Os intervalos so mais fceis de identificar por nome do que por notao A1. Para nomear um intervalo selecionado, clique na caixa de nome na extremidade esquerda da barra de frmulas, digite um nome e, em seguida, pressione ENTER. Referir-se a um intervalo nomeado: O exemplo seguinte refere-se ao intervalo chamado "MyRange" na pasta de trabalho chamada "MyBook.xls". Range("MyBook.xls!MyRange").Font.Italic = True O exemplo seguinte se refere ao intervalo especfico de planilha chamado "Sheet1!Sales" na pasta de trabalho chamada "Report.xls". Range("[Report.xls]Sheet1!Sales").BorderAround weight:=xlthin Para selecionar um intervalo nomeado, use o mtodo GoTo, o qual ativa a pasta de trabalho e a planilha e, em seguida, seleciona o intervalo. Application.Goto Reference:="MyBook.xls!MyRange" Selection.ClearContents O exemplo seguinte mostra como o mesmo procedimento seria escrito para a pasta de trabalho ativa. Application.Goto Reference:="MyRange" Selection.ClearContents Realizar loop em clulas de um intervalo nomeado O exemplo seguinte faz um loop atravs de cada clula de um intervalo nomeado usando um loop For Each...Next. Se o valor de qualquer clula do intervalo exceder o valor de limit, a cor da clula ser alterada para amarelo. Const limit As Integer = 25 For Each c In Range("MyRange") If c.Value > limit Then c.Interior.ColorIndex = 27 End If Next c Na prxima lio continuaremos a ver exemplos de referncia a clulas e faixa de clulas.
Lio 18: Worksheet e Range - Propriedades e Mtodos - Parte II
Referir-se a clulas relativas a outras clulas: Uma maneira comum de trabalhar com uma clula em relao a uma outra clula usar a propriedade Offset. No exemplo seguinte, o contedo da clula que se encontra uma linha abaixo e a trs colunas da clula ativa na planilha ativa formatado com sublinhado duplo. ActiveCell.Offset(1, 3).Font.Underline = xlDouble Observao: Voc pode gravar macros que usem a propriedade Offset em vez de referncias absolutas. No menu Ferramentas, aponte para Gravar macro e, em seguida, clique em Usar referncias relativas. Para fazer um loop atravs de um intervalo de clulas, use uma varivel com a propriedade Cells em um loop. O exemplo seguinte preenche as 20 primeiras clulas da terceira coluna com valores entre 5 e 100, incrementados por 5. A varivel counter usada como ndice de linha para a propriedade Cells. Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter * 5 Next counter Referir-se a clulas usando um objeto Range: Quando voc define uma varivel de objeto para um objeto Range, voc pode facilmente manipular o intervalo usando o nome da varivel. O exemplo seguinte cria a varivel de objeto myRange e, em seguida, atribui a varivel ao intervalo A1:D5 de Sheet1 na pasta de trabalho ativa. Instrues subseqentes modificam propriedades do intervalo substituindo o objeto de intervalo pelo nome da varivel. Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = True Referir-se a todas as clulas da planilha: Quando voc aplica a propriedade Cells a uma planilha sem especificar um nmero de ndice, o mtodo retorna um objeto Range representando todas as clulas da planilha. O exemplo seguinte limpa o contedo de todas as clulas de Sheet1 na planilha ativa. Worksheets("Sheet1").Cells.ClearContents Referir-se a vrios intervalos: Usando o mtodo apropriado, voc pode facilmente referir-se a vrios intervalos. Use os mtodos Range e Union para referir-se a qualquer grupo de intervalos; use a propriedade Areas para referir-se ao grupo de intervalos selecionado em uma planilha. Usar a propriedade Range: Voc pode referir-se a vrios intervalos com a propriedade Range colocando vrgulas entre duas ou mais referncias. O exemplo seguinte limpa o contedo dos trs intervalos de Sheet1. Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18").ClearContents Os intervalos nomeados tornam o uso da propriedade Range mais fcil ao trabalhar com vrios intervalos. O exemplo seguinte funciona quando todos os trs intervalos nomeados se encontram na mesma planilha. Range("MyRange, YourRange, HisRange").ClearContents Usar o mtodo Union: Voc pode combinar vrios intervalos em um objeto Range usando o mtodo Union. O exemplo seguinte cria um objeto Range chamado myMultipleRange, define-o com os intervalos A1:B2 e C3:D4 e, em seguida, formata com negrito os intervalos combinados. Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = True Usar a propriedade reas: Voc pode usar a propriedade Areas para referir-se ao intervalo selecionado ou coleo de intervalos em uma seleo de vrias reas. O exemplo seguinte conta as reas da seleo. Se houver mais de uma rea, uma mensagem de aviso ser exibida. If Selection.Areas.Count > 1 Then MsgBox "A operao no permitida em uma selao mltipla." End If
Lio 19: Worksheet e Range - Propriedades e Mtodos Parte III
Vamos ver mais alguns exemplos de trabalho com clulas e faixas de clulas. Loop atravs de um intervalo de clulas: Ao usar o VBA, voc freqentemente precisa executar o mesmo bloco de instrues em cada clula de um intervalo de clulas. Para fazer isso, voc combina uma instruo de loop com um ou mais mtodos para identificar cada clula, uma de cada vez, e executa a operao. Uma maneira de fazer loop atravs de um intervalo usar o loop For...Next (descrito no Mdulo 5) com a propriedade Cells. Usando a propriedade Cells, voc pode substituir o contador do loop (ou outras variveis ou expresses) pelos nmeros de ndice das clulas. No exemplo seguinte, a varivel counter substituda pelo ndice de linha. O seguinte exemplo faz um loop atravs de um intervalo C1:C20, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01. For counter = 1 To 20 Set curCell = Worksheets("Sheet1").Cells(counter, 3) If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 Next counter Uma outra maneira mais fcil de se fazer um loop atravs de um intervalo usar um loop For Each...Next (descrito no Mdulo 5) com a coleo de clulas retornada pelo mtodo Range. O VBA define automaticamente uma varivel de objeto para a prxima clula cada vez que o loop executado. O seguinte exemplo faz um loop atravs do intervalo A1:D10, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01. For Each c In Worksheets("Sheet1").Range("A1:D10").Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next Se voc no souber os limites do intervalo pelo qual deseja fazer o loop, voc pode usar a propriedade CurrentRegion para retornar o intervalo que envolve a clula ativa. Por exemplo, o exemplo seguinte, quando executado de uma planilha, faz um loop atravs do intervalo que envolve a clula ativa, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01. For Each c In ActiveCell.CurrentRegion.Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next Selecionar e ativar clulas: Quando voc trabalha com o Microsoft Excel, voc geralmente seleciona uma clula ou clulas e, em seguida, efetua uma ao, como formatar as clulas ou inserir valores nelas. No VBA, normalmente no necessrio selecionar clulas antes de modific-las. Por exemplo, se voc desejar inserir uma frmula na clula D6 usando o Visual Basic, voc no ter que selecionar o intervalo D6. Voc precisa apenas retornar o objeto Range e, em seguida, definir a propriedade Formula com a frmula desejada, conforme mostrado no exemplo seguinte. Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)" Usar o mtodo Select e a propriedade Selection: O mtodo Select ativa planilhas e objetos em planilhas; a propriedade Selection retorna um objeto representando a seleo atual na planilha ativa da pasta de trabalho ativa. Antes de voc poder usar com xito a propriedade Selection, voc precisa ativar uma pasta de trabalho, ativar ou selecionar uma planilha e, em seguida, selecionar um intervalo (ou outro objeto) usando o mtodo Select. O gravador de macro costuma criar macros que usam o mtodo Select e a propriedade Selection. O exemplo seguinte foi criado pelo uso do gravador de macro, e ilustra como Select e Selection funcionam juntas. Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True O exemplo seguinte realiza a mesma tarefa sem ativar nem selecionar a planilha ou as clulas. Worksheets("Sheet1").Range("A1") = "Name" Worksheets("Sheet1").Range("B1") = "Address" Worksheets("Sheet1").Range("A1:B1").Font.Bold = True Selecionar clulas na planilha ativa: Se voc usa o mtodo Select para selecionar clulas, esteja ciente de que Select s funciona na planilha ativa. Se voc executar o seu procedimento Sub a partir do mdulo, o mtodo Select falhar a menos que o seu procedimento ative a planilha antes de usar o mtodo Select em um intervalo de clulas. Por exemplo, o exemplo seguinte copia uma linha de Sheet1 para Sheet2 na pasta de trabalho ativa. Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste Ativar uma clula dentro de uma seleo: Voc pode usar o mtodo Activate para ativar uma clula dentro de uma seleo. S pode haver uma clula ativa, mesmo quando um intervalo de clulas selecionado. O exemplo seguinte seleciona um intervalo e, em seguida, ativa uma clula dentro do intervalo sem alterar a seleo. Worksheets("Sheet1").Activate Range("A1:D4").Select Range("B2").Activate Trabalhar com a clula ativa: A propriedade ActiveCell retorna um objeto Range representando a clula que est ativa. Voc pode aplicar qualquer das propriedades ou mtodos de um objeto Range clula ativa, como no exemplo seguinte. Worksheets("Sheet1").Activate ActiveCell.Value = 35 Observao: Voc s pode trabalhar com a clula ativa quando a planilha na qual ela se encontra a planilha ativa. Mover a clula ativa: Voc pode usar o mtodo Activate para designar qual clula a clula ativa. Por exemplo, o exemplo seguinte torna B5 a clula ativa e, em seguida, a formata com negrito. Worksheets("Sheet1").Activate Worksheets("Sheet1").Range("B5").Activate ActiveCell.Font.Bold = True Observao: Para selecionar um intervalo de clulas, use o mtodo Select. Para tornar uma nica clula a clula ativa, use o mtodo Activate. Voc pode usar a propriedade Offset para mover a clula ativa. O exemplo seguinte insere texto na clula ativa do intervalo selecionado e, em seguida, move a clula ativa uma clula para a direita sem alterar a seleo. Worksheets("Sheet1").Activate Range("A1:D10").Select ActiveCell.Value = "Monthly Totals" ActiveCell.Offset(0, 1).Activate Selecionar as clulas ao redor da clula ativa: A propriedade CurrentRegion retorna um intervalo de clulas delimitado por linhas e colunas em branco. No exemplo seguinte, a seleo expandida para incluir as clulas adjacentes clula ativa, que contenham dados. Em seguida, esse intervalo formatado com o formato Currency. Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.Select Selection.Style = "Currency"
Lio 20: Resumo do Mdulo 6
Concluso: Nesse aprendemos mais sobre os principais mtodos e propriedades dos principais objetos do VBA. Com os exemplos de cdigo dessa lio voc ter condio de criar pequenos aplicativos e automatizar tarefas com o Excel. Bibliografia recomendada: Confira as dicas de livros de Excel no seguinte endereo: http://www.juliobattisti.com.br/livrosdeexcel.asp Desejo a todos um excelente estudo e espero, sinceramente, com o contedo desse curso, que eu possa ajuda-los no domnio e utilizao das ferramentas avanadas do Microsoft Excel.