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 Excel - Como selecionar um range de tamanho variável para cópia.

Ocorre incontáveis vezes, a necessidade de copiarmos um determinado Range (Sendo este em alguma ocasiões, o resultado da atualização de uma Pivot Table (Tabela Dinâmica)) para outro local, como fazê-lo?

    ' Marcar e copia o range de Dados atualizado.
    Range ("B6:E" & LastLine()).Select          ' Seleciona a área com dados.

    Selection.Copy                                       ' Copia a área com dados.

    Range ("G6").Select                                ' Seleciona o local para onde os dados serão copiados.

    ' Cola os dados selecionados.
    Selection.PasteSpecial _
    Paste:=xlPasteValues, _
    Operation:=xlNone, _
    SkipBlanks:=False, _
    Transpose:=False

Para determinarmos qual a última linha com dados, usamos aqui uma antiga e familiar funcionalidade deste Blog. Replico-a abaixo:

Function LastLine() As Variant

    ' Demonstra a última linha com conteúdo.
    Let LastLine = Worksheets ("[NOME DA TAB]").Cells(Worksheets("[NOME DA TAB]").Rows.Count, 5).End(xlUp).Row - 1
    
End Function


Tags: Bernardes, VBA, Office, Excel, Range, select, copy, Pivot Table, PT, Tabela Dinâmica


André Luiz Bernardes

A&A® - Work smart, not hard.


VBA Excel - Selecionar dados numa Tabela Dinâmica - Select Data in Pivot Table

Partindo do ponto que a Pivot Table (Tabela Dinâmica) já existe e tem o nome de 'PT_DDD01'*, o código necessário para selecioná-la inteira será:

' Seleciona toda a Pivot Table.
ActiveSheet.PivotTables("PT_DDD01").PivotSelect "", xlDataAndLabel, True

* Ahh, você não sabe como atribuir um nome a PT (Pivot Table)?
 
É simples: 
- Clique em qualquer parte da PT
- Selecione o Menu Opções do MS Excel
- No cantos superior esquerdo você enxerga o nome da PT, podendo alterá-lo se desejar.




Tags: Bernardes, VBA, Office, Excel, Pivot Table, PT, Tabela Dinâmica, Select


André Luiz Bernardes

A&A® - Work smart, not hard.


VBA Tips - Evocando chamada ao Painel de Controle


Sei que há alguns posts atrás falei sobre como é rápido usarmos as funcionalidades das APIs dentro do VBA.

Controlling Windows Regional Settings From Vba
VBA controlling IE confirmation popup box
VBA to open control panel's "Internet Date & Time" applet
VBA: How To: Floating VBA Control Panel for Initialization
Panel Class
Controlling Windows Regional Settings from VBA
controlling IE using vba from within a worksheet additional info
Controlling external programs using vba
VBA controlling Acrobat Distiller


Agora, quero fazer uma abordagem distinta,  por usar o comendo SHELL.

Para chamar qualquer tela do Painel de Controle não precisamos necessariamente evocar uma API

'Para chamar a tela principal do Painel de Controle:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus)

'Para chamar a tela Adicionar ou Remover Programas:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1", vbNormalFocus)

'Para chamar a tela Adicionar ou Remover Programas, na aba
'Instalao do Windows:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2", vbNormalFocus)

'Para chamar a tela Adicionar ou Remover Programas, na aba
'Disco de Inicializao:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3", vbNormalFocus)

'Para chamar a tela Vdeo, na aba Segundo Plano:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0", vbNormalFocus)

'Para chamar a tela Vdeo, na aba Proteo de Tela:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1", vbNormalFocus)

'Para chamar a tela Vdeo, na aba Aparncia:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2", vbNormalFocus)

'Para chamar a tela Vdeo, na aba Configurao:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3", vbNormalFocus)

'Para chamar a tela Configuraes Regionais, na aba
'Configuraes Regionais:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0", vbNormalFocus)

'Para chamar a tela Configuraes Regionais, na aba
'Nmero:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1", vbNormalFocus)

'Para chamar a tela Configuraes Regionais, na aba 
'Moeda:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2", vbNormalFocus)

'Para chamar a tela Configuraes Regionais, na aba'Hora:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3", vbNormalFocus)

'Para chamar a tela Configuraes Regionais, na aba'Data:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4", vbNormalFocus)

'Para chamar a tela Joystick:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL joy.cpl", vbNormalFocus)

'Para chamar a tela Mouse:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @0", vbNormalFocus)

'Para chamar a tela Teclado:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @1", vbNormalFocus)

'Para chamar a tela Impressoras:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @2", vbNormalFocus)

'Para chamar a tela Fontes:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @3", vbNormalFocus)

'Para chamar a tela Mail e Fax:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl", vbNormalFocus)

'Para chamar a tela Multimdia, na aba Audio:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0", vbNormalFocus)

'Para chamar a tela Multimdia, na aba Vdeo:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1", vbNormalFocus)

'Para chamar a tela Multimdia, na aba MIDI:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2", vbNormalFocus)

'Para chamar a tela Multimdia, na aba Msica de CD:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3", vbNormalFocus)

'Para chamar a tela Multimdia, na aba Dispositivos:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4", vbNormalFocus)

'Para chamar a tela Som:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1", vbNormalFocus)

'Para chamar a tela Modem:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL modem.cpl", vbNormalFocus)

'Para chamar a tela Rede:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl", vbNormalFocus)

'Para chamar a tela Senhas:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL password.cpl", vbNormalFocus)

'Para chamar a tela Sistema, na aba Geral:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0", vbNormalFocus)

'Para chamar a tela Sistema, na aba Gerenciador'de Dispositivos:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1", vbNormalFocus)

'Para chamar a tela Sistema, na aba Perfis deHardware:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2", vbNormalFocus)

'Para chamar a tela Sistema, na aba Performance:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3", vbNormalFocus)

'Para chamar a tela Opes de Acessibilidade, na aba'Teclado:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1", vbNormalFocus)

'Para chamar a tela Opes de Acessibilidade, na aba'Som:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2", vbNormalFocus)

'Para chamar a tela Opes de Acessibilidade, na aba'Vdeo:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3", vbNormalFocus)

'Para chamar a tela Opções de Acessibilidade, na aba'Mouse:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4", vbNormalFocus)

'Para chamar a tela Opes de Acessibilidade, na aba'Geral:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5", vbNormalFocus)

'Para chamar a tela do Assistente (Adicionar novo'Hardware):
Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1", vbNormalFocus)

'Para chamar a tela Data e Hora:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", vbNormalFocus)

'Para chamar a tela DiskCopy:
Call Shell("rundll32 diskcopy.dll,DiskCopyRunDll", vbNormalFocus)



Reference: 
Tags: Bernardes, VBA, Office, SHELL, API, rundll32.exe, Painel de Controle, Control Painel,



VBA Excel - Abrindo e fechando o CD-ROM - Open and close the CD-ROM tray using VBA in Microsoft Excel

Já sei, já sei. Muitos perguntarão: "Prá que aprender a abrir a gaveta do CD-ROM?"

Perceba que não estará
apenas
aprendendo  'a abrir a gaveta do CD-ROM'', antes estará aprendendo a manipular periféricos em uma máquina, utilizando uma API do Windows.

Declare Sub mciSendStringA Lib "winmm.dll" (ByVal lpstrCommand As String, _ ByVal lpstrReturnString As Any, ByVal uReturnLength As Long, _ ByVal hwndCallback As Long)

Sub OpenCDTray()


    mciSendStringA "Set CDAudio Door Open", 0&, 0, 0


End Sub

Sub CloseCDTray()

    mciSendStringA "Set CDAudio Door Closed", 0&, 0, 0

End Sub



Tags: Bernardes, MS, Microsoft, Windows, Office, VBA, Excel, CD, CD-ROM, CDROM, 

mciSendStringA, API, DLL,

winmm.dll, Lib


André Luiz Bernardes
A&A® - Work smart, not hard.
Skype: inanyplace 


VBA Tip - Como utilizar a memória RAM - Using Clipboard, RAM Memory

Pois é, 
Todos usamos muito a famosa funcionalidade CTRL + C e CTRL + V. Sim o copy/paste é muito útil e porque não dizer, indispensável. Mas como podemos implementar essa funcionalidade dentro das nossas aplicações MS Office?

How to Use the Office Clipboard in VBA
How to Copy From the Clipboard in Excel Using VBA
How to Cut & Paste From the Clipboard in Excel VBA

0338_pix_gemeos_copy_paste.jpg

Em que momento desejarei utilizar essa funcionalidade nas minhas aplicações? Através do VBA, é possível, por exemplo,  recuperarmos quaisquer informações que estiverem na Área de Transferência, utilizando-as em nossas aplicações, ou podemos fazer o caminho inverso e disponibilizar o resultado de certo processamento para a área de transferência.

Sub PutInRAM ()     Dim nOBJ As MSForms.DataObject     Set dtOBJ = New MSForms.DataObject          Dim n As String
Let n = "Bernardes"
    dtOBJ.SetText s
dtOBJ.PutInClipboard End Sub
Sub GetInRam ()     Dim dtOBJ As MSForms.DataObject     Dim n As String          Set dtOBJ = New MSForms.DataObject          dtOBJ.GetFromClipboard          Let n = dtOBJ.GetText          MsgBox n End Sub
 
' Compatibilizando as versões do MS Office
#If VBA7 Then
    Public Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hwnd As LongPtr) As Long
    Public Declare PtrSafe Function EmptyClipboard Lib "user32" () As Long
    Public Declare PtrSafe Function CloseClipboard Lib "user32" () As Long
#Else
    Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function EmptyClipboard Lib "user32" () As Long
    Public Declare Function CloseClipboard Lib "user32" () As Long
#End If

Sub EmptyInRAM()
    OpenClipboard (0&)

    EmptyClipboard

    CloseClipboard
End Sub


Referência: Ambiente Office
                    CPerson


Tags: Bernardes, MS, Microsoft, Office, VBA, TIP, Clipboard, RAM, memory, memória, RAM, copy/paste

André Luiz Bernardes
A&A® - Work smart, not hard.
Skype: inanyplace 


DICA VBA: Livros 2011

Acredito que sempre é importante olhar para os lados, percebendo as técnicas e dimensão que estas têm alcançado sob a perita batuta de outros mestres do VBA. Seguem alguns títulos de livros que acho muito proveitoso para ampliar a nossa compreensão do ambiente VBA e sua arquitetura.

Comprem e leiam o máximo de títulos possível, além de buscar tais autores como referência no desenvolvimento e implementação.

Título: Microsoft Office Home and Student 2007
Produto da: Microsoft

Título: Excel 2007 Power Programming with VBA
Autor: John Walkenbach
Nº de Páginas: 1104

Título: Excel 2007 Formulas
Autor: John Walkenbach
Nº de Páginas: 840

Título: Access 2007 VBA Programmer's Reference
Autores: Teresa Hennig, Rob Cooper, Geoffrey L. Griffith, Armen Stein
Nº de Páginas: 1152

Título: Microsoft Visual Basic 2005 Step by Step
Autor: Michael Halvorson
Nº de Páginas: 608

Título: VBA and Macros for Microsoft Office Excel 2007
Autores: Bill Jelen e Tracy Syrstad
Nº de Páginas: 624

Título: Programming Excel with VBA and .NET 
Autores: Jeff Webb e Steve Saunders
Nº de Páginas: 1114

Título: Integrating Excel and Access
Autor: Michael Schmalz
Nº de Páginas: 232

Título: VBA for Modelers: Developing Decision Support Systems Using Microsoft® Excel 
Autor: S. Christian Albright
Nº de Páginas: 204

Título: Visual Studio Tools for Office 2007: VSTO for Excel, Word, and Outlook
Autores: Eric Carter e Eric Lippert
Nº de Páginas: 1120

Título: Pro Office 2007 Development with VSTO
Autor: Ty Anderson
Nº de Páginas: 320

Título: VSTO for Mere Mortals(TM): A VBA Developer's Guide to MS Office Development Using VSTO
Autores: Paul Stubbs e Kathleen McGrath
Nº de Páginas: 736

Título: Beginning Office 2007 Development with VSTO 
Autor: Vivek Thangaswamy
Nº de Páginas: 300

Título: Word 2007 Document Automation with VBA and VSTO 
Autor: Scott Driza
Nº de Páginas: 500

Título: Excel 2007 Bible
Autor: John Walkenbach
Nº de Páginas: 912

Título: Office 2007 All-in-One Desk Reference For Dummies
Autor: Peter Weverka
Nº de Páginas: 816

Título: Excel 2007 VBA Programming For Dummies
Autor: John Walkenbach
Nº de Páginas: 368

Título: iWork '09: The Missing Manual
Autor: Josh Clark
Nº de Páginas: 850

Tags: Bernardes, MS, Microsoft, Office, VBA, Armen Stein, Bill Jelen, Eric Carter, Eric Lippert, Geoffrey L. Griffith, Jeff Webb, John Walkenbach, Josh Clark, Kathleen McGrath, Michael Halvorson, Michael Schmalz, Paul Stubbs, Peter Weverka, Rob Cooper, S. Christian Albright, Scott Driza, Steve Saunders, Teresa Hennig, Tracy Syrstad, Ty Anderson, Vivek Thangaswamy

André Luiz Bernardes
A&A® - Work smart, not hard.
Skype: inanyplace 


eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine