VBA Access: Deletando tabelas e querys programaticamente

Quando estamos criando múltiplas tabelas atualizáveis dinamicamente no MS Access e as disponibilizando para consultas externas como no próprio Access, Excel, Word ou Powerpoint, por vezes precisaremos checar se os seus respectivos nomes já não existem e em caso positivo deletá-las.

Uma funcionalidade para tal execução no próprio MS Access, através do nome da tabela, é a que descrevo abaixo:



    Function CheckTable(nTable As String)
        ' André Bernardes             06/06/2008 07:23    bernardess@gmail.com

        Dim db As Database
        Dim i As Integer

        Set db = DBEngine.Workspaces(0).Databases(0)

        db.TableDefs.Refresh

        For i = 0 To db.TableDefs.Count - 1
            If nTable = db.TableDefs(i).Name Then
                DoCmd.DeleteObject acTable, nTable      ' Table Exists.

                Exit For
            End If
        Next i

        Set db = Nothing
    End Function

Para deletarmos Querys, utilizaríamos:

Function CheckQuery(nQuery As String)
    ' Author:                     Date:               Contact:
    ' André Bernardes             30/04/2009 11:26    bernardess@gmail.com
    ' .

    Dim db As Database
    Dim i As Integer

    Set db = DBEngine.Workspaces(0).Databases(0)

    db.QueryDefs.Refresh

    For i = 0 To db.QueryDefs.Count - 1
        If nQuery = db.QueryDefs(i).Name Then
            DoCmd.DeleteObject acQuery, nQuery      ' Query Exists.

            Exit For
        End If
    Next i

    Set db = Nothing
End Function

VBA Access: Copiando query com outro nome programaticamente.

Hello Folks!

Não raro ocorre a necessidade de copiarmos o conteúdo de uma query existente para outra com um nome diferente. Quando esta necessidade surgir, não precisará perder tempo em saber como fazê-lo, abaixo está o caminho.

Dica: Uma forma similar pode ser utilizada para copiar quaisquer objeto do MS Access.


Function CpyNQry(nQryNm As String, nQryNm As String) As Boolean
' André Bernardes 04/2009 bernardess@gmail.com
' Copia uma query qualquer para outra com outro nome.

CurrentDb().CreateQueryDef nQryNm, CurrentDb().QueryDefs(QryNm).SQL

Let CpyNQry = (Len(CurrentDb().QueryDefs(nQryNm).Name) > 0)

Application.RefreshDatabaseWindow
End Function

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

VBA Excel: Definindo o tipo de Gráfico.

Qdo o gráfico estiver ativo, use a propriedade ActiveChart para fazer referência a ele. O gráfico fica ativo se o usuário o selecionou ou se foi ativado com o método Activate.

O exemplo abaixo ativa o 1º gráfico e, em seguida, define o título e o tipo dele.

Charts(1).Activate
With ActiveChart
    .Type = xlLine
    .HasTitle = True
    .ChartTitle.Text = "Vendas de Janeiro"
End With


André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

VBA Excel: Realizando loops no intervalo nomeado

Não raro nomeamos um intervalo, range, de dados para a manipulação mais precisa. Também podemos fazê-lo para cuidar de certos aspectos da formatação.

Abaixo temos um código que faz um loop através de cada célula de um intervalo nomeado usando um loop For Each...Next. Se o valor de qualquer célula do intervalo exceder o valor de limit, a cor da célula será alterada para amarelo.


Sub ApplyColor()
    Const Limit As Integer = 25
    For Each c In Range("MyRange")
        If c.Value > Limit Then
            c.Interior.ColorIndex = 27
        End If
    Next c
End Sub
Código funcional e prático para montar semáforos em uma planilha de dados que aponta resultados.

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

VBA Excel - Gráfico - Redefine tamanho de bolha

Este exemplo define o tamanho de bolha do grupo gráfico um como 96% do tamanho padrão se o gráfico for um gráfico de bolhas 2D.

With Worksheets(1).ChartObjects(1).Chart
    If .ChartType = xlBubble Then
        .ChartGroups(1).BubbleScale = 96
    End If
End With
André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

VBA Office: Controlando aplicativo Office a partir de outro.

Talvez deseje executar código em um aplicativo do MS Office que trabalhe com os objetos de um outro aplicativo.

É importantíssimo definir uma referência à biblioteca de tipos do outro aplicativo na caixa de diálogo Referências (menu Ferramentas). Logo após, os objetos, propriedades e métodos ficarão disponíveis no pesquisador de objetos e a sintaxe será verificada durante a compilação, além de pode obter ajuda contextual.

Declare as variáveis de objeto que se referirem aos objetos de outro aplicativo com tipos específicos.

Certifique-se de qualificar cada tipo com o nome do aplicativo que está fornecendo o objeto.


Por exemplo, abaixo a instrução declara uma variável que apontará para um documento do MS Word e uma outra que se referirá a uma pasta de trabalho do MS Excel:
Dim appWD As Word.Application, wbXL As Excel.Workbook
Obs: Precisa seguir os passos anteriores se desejar que seu código seja de acoplamento antecipado.

Use também a função CreateObject com Identificadores de programação OLE do objeto do outro aplicativo com o qual você deseja trabalhar. Caso deseje visualizar a sessão do outro aplicativo, defina a propriedade Visible como True.

Dim appWD As Word.Application

Set appWD = CreateObject("Word.Application")
appWd.Visible = True
Aplique propriedades e métodos ao objeto contido na variável.
[code]Dim appWD As Word.Application[/code]

Set appWD = CreateObject("Word.Application")
appWD.Documents.Add

Acima a instrução cria um novo documento do Word.

Ao terminar o trabalho com o outro aplicativo, use o método Quit para fechá-lo

appWd.Quit

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

MS Excel: Muito mais do que planilhas eletrônicas.

Caros "foristas",

A alguns anos conheci os produtos da Microsoft não no formato fechado que temos hoje como MS Office. Antes, eram um punhado de produtos desconexos e não alinhados, sem qualquer inteiração prática. Mesmo assim eram infinitamente melhores do que o Wordstar e Lotus 123, sem falar no Supercalc (Quem os conheceu, sabe do que estou falando). Com o amadurecimento do mercado a Microsoft teve o insight de que softwares de caixinha seriam o grande 'boom' das próximas décadas. Todos os produtos citados anteriormente e mais alguns que entraram e saíram do pacote Office, foram integrados e literalmente amarrados entre si, até chegarmos ao modelo expetacular (na minha humilde opinião, menos a interface do Access), a que temos acesso na versão 2007. Desenvolvo soluções com o MS Excel, MS Access, MS Word, MS Powerpoint e MS Outlook. Enfim, toda a suíte office e alguns outros produtos.

Muitos dos produtos do MS Office conheço a mais de 10 anos, então proponho ampliarmos o escopo sobre o quanto se conhece do MS Excel, a mais do que apenas os níveis Básico e Avançado; Experts e Iniciantes, ou algo similar. Antes, poderíamos estendê-lo a todos os âmbitos que ele permitir, como as aplicações em:

:. : Criação de Dashboards e Scorecards

:. : Desenvolvimento de MIS

:. : Aplicação do mesmo com BSC

:. : Utilização do mesmo no apontamento de KPIs

:. : E a sua integração com os diversos BIs do mercado

Muitos dos tópicos apontados acima necessitam de um relevante conhecimento sobre VBA, mas não somente este. Precisa-se conhecer também a respeito de Banco de Dados, conceitos de modelagem de dados, ERP, SCM, B2B, etc...

:. : A utilização de gráficos, bem como sua implementação, a além daqueles que estão como standards dariam um capítulo à parte nesta nossa discussão.

:. : E o que dizer da utilização do Solver. Certamente muitos sequer ouviram falar dele e como este pode ser útil diariamente.

:. : Outro capítulo à parte seria o modo flexível como o  MS Excel pode conectar-se a outras base de dados, e o poder de exportar informações até mesmo em XML. Conectar cubos OLAP, o modo como é utilizado no BI do SAP (BW - Business Warehouse) por exemplo.

E imagine, todas essas funcionalidades são expansíveis 'n' vezes quando associadas a imaginação e criatividades brasileiras.

Enfim, sugiro, ampliarmos o escopo a altura do que o  MS Excel representa na vida de todos os profissionais que o utilizam massiva e diariamente.

Para que possamos refletir melhor no quão amplo é o universo das aplicabilidades do  MS Excel, sugiro lerem esta lista com mais de 30 títulos, escritos por pessoas que vêem no MS Excel uma excelente ferramenta de manipulação do seu modelo de negócio.

Até mais e boa reflexão.

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

VBA Excel: Navegando entre as pastas existentes

Um recurso interessante quando queremos propiciar a navegação entre diversas pastas (Sheets) de uma mesma planilha é criarmos um formulário, colocando nele 2 botões para navegação. Um para a direita, que avançará e outro botão para a esquerda que retornará.

No caso abaixo, além de avançarmos as pastas o botão ainda posicionará na mesma célula em que estávamos na planilha corrente.

Essa facilidade de navegação é interessante. Experimente!


Sub DOSSC()
    ' Author:                             Date:                       Contact:
    ' André Bernardes             16/09/2008 14:33    bernardess@gmail.com
    ' Move-se para a esquerda, quando não houver mais pastas avisa automaticamente.
    ' DOSSC=down one sheet same cell

    On Error Resume Next
   
    Application.Goto Reference:=ActiveWorkbook.Sheets(ActiveSheet.Index - 1).Range(ActiveCell.Address)
    
    ' Caso ocorra um erro, aborta a Sub e envia mensagem.
    If Err.Number = 0 Then Exit Sub
   
    MsgBox ("Não é possível retornar mais, você está posicionado na primeira pasta, (" & Application.ActiveSheet.Name & ")")  'Caso o usuário esteja na primeira past (sheet).
End Sub

Sub UOSSC()
    ' Author:                             Date:                       Contact:
    ' André Bernardes             16/09/2008 14:39    bernardess@gmail.com
    ' Move-se para a direita, quando não houver mais pastas avisa automaticamente.
    ' UOSSC=up one sheet same cell

    On Error Resume Next
   
    Application.Goto Reference:=ActiveWorkbook.Sheets(ActiveSheet.Index + 1).Range(ActiveCell.Address)
    
    ' Caso ocorra um erro, aborta a Sub e envia mensagem.
    If Err.Number = 0 Then Exit Sub

    MsgBox ("Não é possível avançar mais, você está posicionado na última pasta, (" & Application.ActiveSheet.Name & ")")  'Caso o usuário esteja na primeira past (sheet).
End Sub

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

+55 (13) 9152-2565

MS Excel - Deletando múltiplas linhas em branco - 02.



Ampliando o tema:

A primeira executa o Loop decrescente o que é útil quando há muitas linhas vazias em sequência

Dim i As Integer

With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
For i = Cells(Rows.Count,3).End(xlUp).Row To 11 Step -1
If Isempty(Cells(i,3)) Then Rows(i).Delete
Next i

.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub

Esta 2ª versão não utiliza Loop sendo útil para arquivos que não sejam muito pesados.

Sub DeletLinhasVazias()
Range("C11:C" & Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


TagsExcel, Column, Coluna, Delete, Linha, Plan, Planilhas, Report, Row,  rows,worksheet, lines



André Luiz Bernardes
A&A® - In Any Place.

Excel VBA: 30 Livros como sugestão.

A leitura é indispensável, tudo o que sabemos, recebemos de alguém e é muito bom compararmos o modo como estamos solucionando os nossos problemas com o modo como outros têm solucionado os seus. É especialmente enriquecedor poder comparar soluções diferentes para o mesmo problema, o que acontece quando comparamos diferentes autores.

Os títulos que citei são em inglês somente por um motivo, geralmente compro os livros em inglês. Por quê? Por outro motivo também simples: Os títulos, o software, as dicas, os treinamentos, os vídeos todos saem primeiro em inglês e depois, em alguns casos bem depois, é que as versões traduzidas são disponibilizadas no mercado.

A leitura destes geralmente não requer nenhuma grande erudição no idioma inglês, muita coisa é simples e o restante intuitivo. Quem programa em uma ou mais linguagens sabe do que estou falando.

Minha sugestão? Aventure-se!

Seguem-se os primeiros 30 Livros:

: : A Fast Track To Structured Finance Modeling, Monitoring and Valuation: Jump Start VBA by William Preinitz
: : Advanced modelling in finance using Excel and VBA by Mary Jackson and Mike Staunton
: : Computing with Excel and VBA: A Problem Solving Approach, Second Edition by S. I. Krishan
: : Credit Risk Modeling using Excel and VBA (The Wiley Finance Series) by Gunter Loeffler and Peter N. Posch
: : Definitive Guide to Excel VBA, Second Edition by Michael Kofler
: : Excel 2007 Formulas (Mr. Spreadsheet's Bookshelf) by John Walkenbach
: : EXCEL 2007 MACROS MADE EASY by Gail Perry
: : Excel 2007 Power Programming with VBA (Mr. Spreadsheet's Bookshelf) by John Walkenbach
: : Excel 2007 VBA Programmer's Reference (Programmer to Programmer) by John Green, Stephen Bullen, Rob Bovey, and Michael Alexander
: : Excel Scientific and Engineering Cookbook (Cookbooks (O'Reilly)) by David Bourg
: : Excel VBA and Macros with MrExcel (Video Training) (LiveLessons) by Bill Jelen
: : Excel VBA in Easy Steps by Ed Robinson
: : Excel VBA Macro Programming by Richard Shepherd
: : Holy Macro! It's 2,500 Excel VBA Examples: Every Snippet of Excel VBA Code You'll Ever Need by Hans Herber, Bill Jelen, and Tom Urtis
: : Learn Excel from Mr. Excel: 277 Excel Mysteries Solved by Bill Jelen
: : Master Excel 2003 and 2007 VBA Programming Basics - Harmonial Staff
: : Mastering VBA by Guy Hart-Davis
: : Mastering VBA for Microsoft Office 2007 by Richard Mansfield
: : Microsoft Excel VBA Programming for the Absolute Beginner, 3E by Duane Birnbaum and Michael Vine
: : Microsoft® Office Excel® 2007 Visual Basic® for Applications Step by Step (BPG-step by Step) by Reed Jacobson
: : Option Pricing Models and Volatility Using Excel-VBA (Wiley Finance) by Fabrice Douglas Rouah and Gregory Vainberg
: : Power Programming with VBA/Excel (ESource Series) by Steven C. Chapra
: : Pro Excel 2007 VBA (Expert's Voice in Excel VBA) by Jim DeMarco
: : Pro Excel 2007 VBA by Jim DeMarco (Kindle Edition - Feb 28, 2008) - Kindle Book
: : Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft(R) Excel and VBA(R) (Addison-Wesley Microsoft Technology Series) by Stephen Bullen, Rob Bovey, and John Green
: : VB and VBA in a Nutshell: The Languages by Paul Lomax
: : VBA and Macros for Microsoft Office Excel 2007 (Business Solutions) by Bill Jelen and Tracy Syrstad
: : VBA for Modelers: Developing Decision Support Systems Using Microsoft® Excel - by S. Christian Albright
: : Writing Excel Macros with VBA, 2nd Edition by Steven Roman

Excel VBA: Abrindo caixa de diálogo

Segue código pronto para o COPIAR e COLAR.

Abra a caixa de diálogo e escolha o arquivo que desejar no propósito que preferir.

Dim strFilePath As String, strPath As String
Dim fdgO As FileDialog, varSel As Variant

MsgBox "A tabela não está correta, " &
_
"e o arquivo de dados não pôde ser achado na respectiva pasta: " & _
strPath & ". Por favor,localize a pasta que contenha dados de exemplo " & _
".: Dialog.", vbInformation, gstrAppTitle

Set fdgO = Application.FileDialog(msoFileDialogFilePicker)
With fdgO

.AllowMultiSelect = False

.Title = "Localize a pasta com dados de exemplo"

.ButtonName = "Escolha"

.Filters.Clear

.Filters.Add "All Files", "*.*", 1

.FilterIndex = 1

.InitialFileName = strPath

.InitialView = msoFileDialogViewDetails

If .Show = 0 Then
MsgBox "Houve falha para selecionar o arquivo correto. ATENÇÃO: " & _
"Você talvez não tenha aberto uma tabela conectada a aplicação. " & _
" Você pode re-abrir este formulário ou " & _
"inicie o formulário, tentando novamente.", vbCritical,
gstrAppTitle

Let CheckConnect = False

Exit Function
End If

Let strFilePath = .SelectedItems(1)
End With

Let strPath = Left(strFilePath, InStrRev(strFilePath, "\") - 1)
Let varSel = AttachAgain(strPath)



André Luiz Bernardes

VBA Excel - Conectando planilhas com tabelas do MS Access.

Inline image 1

Segue parte de um código que pode usar para conectar todas as planilhas do MS Excel que estiverem disponíveis no mesmo diretório, a uma base de dados MS Access.

Este código assume que os cabeçalhos estão na primeira linha da planilha. Divirta-se!

Sub LinkXls()
     ' Loop num diretório específico (nPath)
     ' linkando todos os arquivos MS Excel como tabelas no MS Access.
     
    Const nPath As String = "C:\tmp\XLs\" 'Diretório.
    Dim nArq As String           ' Nomes dos arquivos.
    Dim nFile() As String           ' Array com os arquivos.
    Dim intFile As Integer          ' Número de arquivos.
    Dim IniLine As String           ' Limita Range.
    Dim FinLine As String           '       "
    Dim IniColumn As String         '       "
    Dim FinColumn As String         '       "
    Dim nFrase As String            ' Frase de definição.

    'Loop na pasta e construção da lista de arquivos.
    Let nArq = Dir(nPath & "*.xls")
    
    While nArq <> ""
        'Adicionando arquivos à lista.
        Let intFile = intFile + 1
        
        ReDim Preserve nFile(1 To intFile)
        
        Let nFile(intFile) = nArq
        Let nArq = Dir()
    Wend
    
    ' Verifica se achou o arquivo.
    If intFile = 0 Then
        MsgBox "Nenhum arquivo encontrado!", vbCritical, ".: A&A"
        Exit Sub
    End If
    
    ' Define tamanho do range a ser conectado, considerando a primeira linha como título.
    ' IniLine    - Linha inicial.
    ' FinLine    - Linha final.
    ' IniColumn  - Coluna inicial.
    ' FinColumn  - Coluna final.
    
    'Linhas.
    Let IniLine = 1
    Let FinLine = 50
    
    ' Colunas
    Let IniColumn = "A"
    Let FinColumn = "J"
    
    Let nFrase = IniLine & IniColumn & FinLine & FinColumn

    ' Inicia o ciclo de conexções na base de dados MS Access.
    For intFile = 1 To UBound(nFile)
        DoCmd.TransferSpreadsheet acLink, , nFile(intFile), nPath & nFile (intFile), True, nFrase
    Next
    
    MsgBox UBound(nFile) & " Arquivos 'Linkados'", vbInformation, ".: A&A"
End Sub

Tags: Excel, Access, udf, import, data, conect, directory, TransferSpreadSheet

Inline image 2

André Luiz Bernardes
bernardess@gmail.com


VBA Access & Excel: Carregando dados em um FORM no Excel, a partir de dados disponíveis no Access.

Function ReadcbDisciplina()
    ' Author:                           Date:                     Contact:
    ' André Bernardes             22/07/2008 11:35    bernardess@gmail.com
    ' Carrega dados no Combo "cbDisciplina".


    On Error GoTo ErrorHandler              ' Ative a rotina de tratamento de erro.

    ' Define Vars.
    Dim cnt As ADODB.Connection
    Dim rst As ADODB.Recordset

    Dim k As Long
    Dim stDB As String
    Dim stSQL As String
    Dim vaData As Variant

    ' Efetua a conexão.
    Set cnt = New ADODB.Connection                                                  ' Inicia a conexão do objeto (Instantiate the Connection object).
    Let stDB = dbTarget                                                             ' Path to and the name of the database. Assumes the DB and worksheet are in same directory. If not, you need to specify DB path

    ' Limpa o Combo.
    Me.cbDisciplina.Clear

    ' Constrói a consulta SQL.
    Let stSQL = stSQL & "SELECT DISTINCT tbl_data_Disciplinass.Sigla, tbl_data_Disciplinass.Disciplina" & Space(1)
    Let stSQL = stSQL & "FROM tbl_data_Disciplinass" & Space(1)
    Let stSQL = stSQL & "WHERE (((tbl_data_Disciplinass.Active) = -1))" & Space(1)
    Let stSQL = stSQL & "ORDER BY tbl_data_Disciplinass.Disciplina"

    With cnt
        .CursorLocation = adUseClient       ' Necesary for creating disconnected recordset.
        .Open stConn                        ' Open connection.

        Set rst = .Execute(stSQL)           ' Instantiate the Recordsetobject and execute the SQL-statement.
    End With

    With rst
        Set .ActiveConnection = Nothing     ' Disconnect the recordset.
        Let k = .Fields.Count

        vaData = .GetRows                   ' Populate the array with the whole recordset.
    End With

    cnt.Close                               ' Close the connection.

    'Really manipulate the Combobox's properties and show the data.
    With Me
        With .cbDisciplina
            .Clear
            .BoundColumn = k
            .AddItem
            .Column = vaData                ' ? vaData(0,0),vaData(1,0),vaData(2,0) - (? vaData(coluna,linha),vaData(coluna,linha),vaData(coluna,linha))
            .ListIndex = -1
        End With
    End With

    Let FirstLoad = True
    Set rst = Nothing                       ' Tira os objetos da memória (Release objects from memory).
    Set cnt = Nothing

ErrorHandler:                           ' Rotina de tratamento de erro.
    Call ErrorShow(Err.Number, Err.Description, Err.Source)
End Function


André Luiz Bernardes

VBA Access: Lista de Livros

É muito bom quando temos acesso a um grande acervo de informações que poderão enriquecer o nosso conhecimento técnico, ampliando enormemente a nossa visão pessoal sobre determinada aplicação. Esse é o objetivo ao listar aqui alguns títulos interessantes sobre o universo do VBA para o Microsoft Office Access.

Espero que gostem dos títulos, bem como acrescentem outros para o aprendizado de todos.


Access 2000 VBA Handbook by Susann Novalis
Access 2003 Programming by Example with VBA, XML, and ASP by Julitta Korol
Access 2003 VBA Programmer's Reference (Programmer to Programmer) by Patricia Cardoza, Teresa Hennig, Graham Seach, and Armen Stein
Access 2007 VBA Bible: For Data-Centric Microsoft Office Applications by Helen Feddema
Access 2007 VBA Programmer's Reference (Programmer to Programmer) by Teresa Hennig, Rob Cooper, Geoffrey L. Griffith, and Armen Stein
Access 2007 VBA Programming For Dummies (For Dummies (Computer/Tech)) by Joseph C. Stockman and Alan Simpson
Access 2007: The Missing Manual by Matthew MacDonald
Access Cookbook - Paul Litwin, Ken Getz, Andy Baron
Access VBA Programming by Charles E. Brown and Ron Petrusha
Access VBA Programming For Dummies (For Dummies (Computer/Tech)) by Alan Simpson
Alison Balter's Mastering Microsoft Office Access 2007 Development (Sams) by Alison Balter
Automating Microsoft Access with VBA (Business Solutions) by Mike Gunderloy and Susan Sales Harkins
Beginning Access 2000 VBA by Robert Smith and Dave Sussman
Beginning Access 2003 VBA by Denise M. Gosnell
Building Microsoft Access Applications - John L. Viescas
Database Design for Mere Mortals, Second Edition - Michael J. Hernandez
F. Scott Barker's Microsoft Access 2002 Power Programming by F. Scott Barker
Handbook of Relational Database Design - Candace C. Fleming, Barbara Vonhalle
Inside Microsoft SQL Server 2005: T-SQL Programming - Itzik Ben-gan, Dejan Sarka, and Roger Wolter
Integrating Excel and Access by Michael Schmalz
Joe Celko's SQL for Smarties: Advanced SQL Programming - Joe Celko
Joe Celko's SQL Puzzles and Answers - Joe Celko
Learn Access 2003 VBA With The Smart Method by Mike Smart
Microsoft Access Visual Basic Step By Step - Evan Callahan
Microsoft Access Data Analysis: Unleashing the Analytical Power of Access by Michael Alexander
Microsoft Access Developer's Guide to SQL Server - Mary Chipman and Andy Baron
Microsoft Access VBA Programming for the Absolute Beginner, Third Edition by Michael Vine
Microsoft Office Access 2003 Inside Out - John L. Viescas
Microsoft Office Access 2007 Forms, Reports, and Queries (Business Solutions) by Paul McFedries
Microsoft Office Access 2007 Inside Out - John L. Viescas, Jeff Conrad
Microsoft Office Access 2007 VBA (Business Solutions) by Scott B. Diamond and Brent Spaulding
Microsoft® Office Access 2003 Inside Out (Microsoft Office Access Inside Out) by John L. Viescas
Microsoft® Office Access(TM) 2007 Inside Out (Microsoft Office Access Inside Out) by John Viescas and Jeff Conrad
Microsoft® Office Access(TM) 2007 Step by Step (Step By Step (Microsoft)) by Steve Lambert and M Dow Lambert
New Perspectives on Microsoft Office Access 2007, Comprehensive by Joseph J. Adamski and Kathy T. Finnegan
Office VBA Macros You Can Use Today: Over 100 Amazing Ways to Automate Word, Excel, PowerPoint, Outlook, and Access by Juan Pablo Gonzalez, Cindy Meister, Suat Ozgur, and Bill Dilworth
Pro Access 2007 by Martin WP Reid
Relational Database Design Clearly Explained - Jan L. Harrington
Sams Teach Yourself Microsoft Access 2002 Programming in 24 Hours by Paul Kimmel
SQL Queries for Mere Mortals, 2nd Edition - John L. Viescas, Michael J. Hernandez
The Rational Guide to Microsoft Office Access 2007 Templates (Rational Guides) by Zac Woodall
VBA Developers Handbook - Ken Getz, Michael Gilbert


André Luiz Bernardes

VBA: Boa definição ao pedir ajuda.

Constantemente nos deparamos com pedidos de ajuda em fóruns pela Internet a fora. Algo a que todos os que precisam de ajuda precisam considerar como um ponto importantíssimo é a definição. A descrição do que deseja, esta precisa ser lógica, coerente e descrita com o mínimo de detalhes pertinentes. Por quê: Bem, os que procuram ajuda precisam saber que perguntas e questões mal formuladas são ignoradas e passadas por alto por todos, pois são consideradas questões confusas, ineficientes e péssimamente redigidas. Então, caso deseje ser atendido e de forma rápida, seria apropriado considerar as sugestões que comento abaixo. Descrevendo: É verdade que a maioria dos que solicitam ajuda sequer têm noções de análise e programação, todavia, é bom informar a todos (e relembrar a alguns), que uma boa definição do que se deseja ajuda em muito o resultado esperado. Prenda-se as sugestões a seguir e então complete com a sua visão pessoal: (1) - Primeiramente, faça questão de descrever, com o máximo de detalhes possível, o que deseja; (2) - Em seguida descreva de modo direto e com sentido como deseja; (3) - Caso tenha parte da solução pronta, tome tempo para descrever o que já desenvolveu e até onde a sua solução atende a sua necessidade. Deixe claro quais são os pontos onde precisará de ajuda; (4) - Outro aspecto relevante é não misturar as soluções com recursos funcionais do próprio MS Excel, com soluções possíveis apenas com VBA. Tente discernir o que precisa e como precisa. Tomando alguns destes ou todos este cuidados, provavelmente contribuirá para tornar mais claro o seu problema e inspirará melhor aqueles que poderão ajudá-lo. André Luiz Bernardes http://al-bernardes.sites.uol.com.br/
diHITT - Notícias