Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

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

VBA Excel - Trabalhado com múltiplas WorkSheets - 02

Selecionando várias worksheets Vejamos um exemplo de como construir uma matriz com os elementos identificados apenas em tempo de execução. Mas, primeiro nós olhamos o código que usa a declaração SELECT de uma forma raramente vista. Sabia que o método Select tem um parâmetro opcional? Verifique o Help do MS Excel VBA e encontrará a sintaxe Selecione o método que se aplica para o Chart, Charts, Shape, ShapeRange, Sheets, Worksheet, e objetos Worksheets.
Selecione o objeto. expression.Select(Replace) A expressão requer uma expressão que retorne um dos objetos acima (Chart, Charts, Shape, ShapeRange, Sheets, Worksheet, e objetos Worksheets). Replace É uma Variant opcional  O exemplo de código abaixo seleciona os Sheet2 Chart1, copiando-os para um novo workbook.
 
Sheets ( "Sheet2"). Selecione Sheets ( "Chart1"). Selecione False ActiveWindow.SelectedSheets.Copy
 
Como comentei anteriormente, a seleção e ativação dos objetos deve ser utilizada como último recurso. Veremos como fazer isso em seguida.... Twitter: @officespecialis @brzexceldevelop @brzaccessdevel Veja também: Blog Office VBA | http://inanyplace.blogspot.com/ Blog Excel | http://brzexceldeveloper.blogspot.com/ Blog Access | http://brzaccessdeveloper.blogspot.com/

VBA Excel - Trabalhado com múltiplas WorkSheets


Hello folks!

Existem diversos casos nos quais desejemos realizar uma única e mesma ação em várias worksheets simultaneamente. Isso pode incluir imprimi-las ou copiá-los para outro local ou mesmo editá-las em suas várias worksheets numa única etapa.

Em alguns casos processar uma worksheet de cada vez produzirá um resultado diferente do que se pode obter ao trabalhar em várias worksheets ao mesmo tempo. Em outros casos, pode ser apenas uma questão de conveniência.

De qualquer modo no seu caso pode ser apenas uma questão de aprendizado de como fazê-lo.

Dois exemplos onde os resultados são diferentes:


Quando se copia um gráfico, e os dados associados a este, num único processo para outra pasta de trabalho, as referências ao gráfico também são atualizadas, fazendo referência aos dados da nova pasta. No entanto, se estas são copiados individualmente, o gráfico faria referência à worksheet original.


Outro exemplo pode ser observado no momento da impressão simultânea de várias worksheets, ao imprimi-las as páginas serão numeradas sequencialmente. Faça isso uma folha de cada vez e as páginas serão numeradas separadamente. Além disso, cada folha será um trabalho de impressão separado. Enquanto alguns podem não considerar isto como um grande problema, para outros pode ser.

Nesta dica veremos como trabalhar com várias sheets. 

Usando o gravador de macro 
Começando com o nosso amigo de confiança, o gravador de macro, temos a impressão de duas folhas:

Dim nPlan As String 
Dim nChart As String 
Dim nSheet As String

Sheets (Array ( nPlan, nChart)). Selecione 
Sheets ( nSheet). Activate


Let Application.ActivePrinter = "HP-Printer on Ne01:"


ActiveWindow.SelectedSheets.PrintOut Copies: = 1, ActivePrinter: = "Acrobat Distiller Ne06 em:", Collate: = True

Observe que o código utiliza essencialmente uma matriz com um índice para o endereçamento (Sheets(1)), ao invés da típica sintaxe Sheets("Sheet1"). Isso permitirá o funcionamento em várias worksheets ao mesmo tempo.


Referências
Tags: VBA, Excel, Sheet, simultâneo, 


diHITT - Notícias