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.

Views

VBA Access - Criando uma planilha (MS Excel com gráfico) a partir de uma aplicação MS Access.

Vez por outra recebo pedidos sobre como criar planilhas através do Access, ou seja, a partir de uma aplicação MS Access que alguém já tem desenvolvida.

Na verdade isso é muito simples, por isso estou ampliando alguns passos nesta criação. Além de demonstrar como criar a planilha, estou populando-a com dados e inserindo um gráfico, tudo programaticamente (ou de modo automatizado, como preferem alguns).

Espero que gostem, ampliem o exemplo e me retornem opiniões e acréscimos...Ahhh e o mais importante para toda a comunidade de desenvolvedores, compartilhe com o máximo de pessoas que conhecer!

Boa diversão!

 
Private Sub cmdMakeChart_Click()
    '  Author:                           Date:                     Contact:                           URL:
    '  André Bernardes             23/11/2009 10:40   
bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    '  Cria uma planilha, popula-a com uma periodicidade e dados, cria um gráfico.
 
    Dim AppMSExcel As Excel.Application
    Dim the_date As Date
    Dim stop_date As Date
    Dim r As Integer
    Dim new_chart As Chart
    Dim new_book As Workbook
    Dim active_sheet As Worksheet
 
    ' Abre a aplicação MS Excel.
    Set AppMSExcel = CreateObject("Excel.Application")
 
    ' Mantém aplicação escondida.
    Let AppMSExcel.Visible = True
 
    ' Cria uma nova planilha (spreadsheet).
    Set new_book = AppMSExcel.Workbooks.Add()
 
    ' Gera valores randômicos dentro de um período.
    Set active_sheet = new_book.Sheets(1)
   
    Let the_date = CDate("01/11/09")
    Let stop_date = CDate("23/11/09")
    Let r = 1
   
    Do While the_date < stop_date
        Let active_sheet.Cells(r, 1) = the_date
        Let active_sheet.Cells(r, 2) = Int(Rnd * 90) + 10
        Let the_date = DateAdd("d", 1, the_date)
        Let r = r + 1
    Loop
 
    ' Cria um gráfico (chart) conectado a estes dados.
    Set new_chart = Charts.Add()
   
    With new_chart
        Let .ChartType = xlLineMarkers
       
        .SetSourceData Source:=active_sheet.Range("A1:B" & Format$(r - 1)), PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:=active_sheet.Name
    End With
 
    Let active_sheet.Shapes(active_sheet.Shapes.Count).Top = 10
    Let active_sheet.Shapes(active_sheet.Shapes.Count).Left = 100
    Let active_sheet.Shapes(active_sheet.Shapes.Count).Width = 600
    Let active_sheet.Shapes(active_sheet.Shapes.Count).Height = 400
 
    ActiveChart.ChartArea.Select
 
    ' Acerta primeira fase de detalhes.
    With ActiveChart
        Let .HasTitle = True
        Let .ChartTitle.Characters.Text = "Valores de Fevereiro"
        Let .Axes(xlCategory, xlPrimary).HasTitle = True
        Let .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Data"
        Let .Axes(xlValue, xlPrimary).HasTitle = True
        Let .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Valores"
    End With
 
    ' Fecha a pasta (workbook) salvando.
    AppMSExcel.ActiveWorkbook.Close True
 
    ' Fecha o MS Excel.
    AppMSExcel.Quit
    Set AppMSExcel = Nothing
 
    MsgBox "Planilha Gerada!"
End Sub
 


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

 

VBA Access - Removendo campos programaticamente

Remove Fields From MDB programmatically

O código VBA abaixo será usado para remover um campo de uma tabela do MS Access através da codificação VBA.

Sobre a função: Aceitará três parâmetros

1. Database Path - O caminho completo da base de dados MS Access

2. TableName - O nome correto da tabela do MS Access de onde o
campo será removido.

3. FieldName - O nome do campo a ser removido.

Function RemoveFieldFromMSACCESSTable (ByVal AccessDBPath, _
                                       ByVal AccessTableName As String, _
                                       AccessFieldName As String _
                                      ) As Boolean

  ' Declaração das variáveis.
  Dim AccessDB As Database
  Dim AccessDBPath As Variant
  Dim Td As TableDef

  On Error Resume Next


  ' Informa o Path do MS Access DB, baseado na TableName.

  ' Abre a base de dados.
  Set AccessDB = OpenDatabase(AccessDBPath) 'if linked table       

  If Err <> 0 Then           
    ' Caso falhe, retorna a base de dados.

    Exit Function       
  End If   


  ' Retorna a tabela.   
  Set Td = AccessDB.TableDefs(AccessTableName)   

  If Err <> 0 Then       
    ' caso falhe obtém a tabela.       

    GoTo End   
  End IF

  ' Deletando o campo.
  With Td       
    ' Deleta o campo.       
    .Fields.Delete AccessFieldName       

    If Err <> 0 Then           
      ' Caso falhe a deleção do campo - possivelmente não existe.           

      GoTo End       
    End If   
  End With   

  Let RemoveFieldFromMSACCESSTable = True ' O Default é False caso tenha falhado.


  ' Limpa.
End:   
  Set Td = Nothing   

  ' Close the Database   
  If Not AccessDB Is Nothing Then AccessDB.Close   

  Set AccessDb = Nothing
End Function

Exemplo do uso:
Public Sub RemoveField ()

' Exemplo da chamada:
If (RemoveFieldFromMSACCESSTable ( "C:\Bernardes\A&A.mdb", "Clientes", "TimeStamp") Then

MsgBox "Campo removido com sucesso!"

End If

End Sub
 

A chamada acima é utilizada para excluir de "C:\Bernardes\A&A.mdb", o nome da tabela é Clientes, e o nome do campo é "TimeStamp"
 
 
Twitter: @officespecialis
             @brzexceldevelop
             @brzaccessdevel


Veja também:
Blog Office VBA

VBA Access - Função para saber se existe um arquivo.

Tudo bem que seja uma função básica, mas com sua utilidade.

Esta função retorna True se não houver um arquivo com o nome que você passar, mesmo que esteja escondido ou seja um arquivo de sistema.

Assume o diretório atual, se você não incluir um caminho.

Retorna False se o nome do arquivo for uma pasta, a menos que você passe True para o segundo argumento.

Retorna False para qualquer erro, por exemplo: nome de arquivo inválido, a permissão foi negada, o servidor não foi encontrado.

Procura um arquivo chamado nFile.accdb na pasta de dados:
ExisteArquivo ("C: \ Data \ nFile.accdb")

Procura um arquivo chamado nFile.txt em um servidor de rede:
ExisteArquivo ("\ \ MyServer \ MyPath \ nFile.txt")

Verifique se há um arquivo ou pasta no servidor com o nome Bernardes:
ExisteArquivo ("\ \ MyServer \ Bernardes", True)

Verifica a pasta do banco de dados atual para um arquivo chamado A&A-InAnyPlace.xlsx:
ExisteArquivo (TrailingSlash (CurrentProject.path) & "A&A-InAnyPlace.xlsx")

Function ExisteArquivo (ByVal strFile As String, Optional bFindFolders As Boolean) As Boolean
    Dim lngAttributes As Long

    'Inclui arquivos read-only (somente leitura), hidden (escondidos), e system (de sistema).
    Let lngAttributes = (vbReadOnly Or vbHidden Or vbSystem)

    If bFindFolders Then
        Let lngAttributes = (lngAttributes Or vbDirectory) 'Inclui pastas.
    Else
        Do While Right$(strFile, 1) = "\"
            Let strFile = Left$(strFile, Len(strFile) - 1)
        Loop
    End If

    ' Se Dir() retornar alguma coisa, é porque existem arquivos.
    On Error Resume Next
    Let FileExists = (Len(Dir(strFile, lngAttributes)) > 0)
End Function

Function TrailingSlash (varIn As Variant) As String
    If Len(varIn) > 0 Then
        If Right(varIn, 1) = "\" Then
            Let TrailingSlash = varIn
        Else
            Let TrailingSlash = varIn & "\"
        End If
    End If
End Function
 
Twitter: @officespecialis
             @brzexceldevelop
             @brzaccessdevel



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

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine