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

Mostrando postagens com marcador image. Mostrar todas as postagens
Mostrando postagens com marcador image. Mostrar todas as postagens

VBA Excel - Colocando um Ícone personalizado no Excel - Change Excel Icon


Sim, colocar um ícone que identifique sua aplicação pode dar uma visão mais profissional a ela. Existem usuários mais, digamos, caprichosos que gostam e se apegam a estes detalhes. Por isso precisamos desenvolver uma visão vendedora dos nossos produtos, melhorar o modo como tratamos os nossos softwares pode implicar em distribuirmos mais cópias de uma aplicação e até mesmo massificá-la num departamento ou empresa. Sim, é apenas um detalhe, mas pode inspirá-lo a alterar outros aspectos das suas aplicações.

Há alguns anos construí uma aplicação que interagia com diversos Workbooks diferentes: Ao passo que escolhia os diferentes relatórios na interface principal, fazia com que as sub-interfaces como que se dissolvessem enquanto um processo contrário reconstruía a interface escolhida. 

Recurso simples? Sim.

O acesso era mais demorado? Sim, mas o usuário gostou muito

Talvez porque fosse de uma agência de propaganda. Enfim, alguns toques de requinte podem abrir as portas para a sua aplicação ser aceita, distribuida e comentada. Seguem códigos:

Open an Excel workbook
Select Tools/Macro/Visual Basic Editor
In the VBE window, select View/Project Explorer
Select the 'ThisWorkbook' Module, copy and paste the code for it from above
Select Insert/Module, copy and paste the code for module1 into this module.
Now select File/Close and Return To Microsoft Excel
Save your work and close the workbook.

O ícone pode ser mudado a qualquer momento:
Option Explicit 
Private Sub Workbook_Open() 
    Application.Caption = " My Personalized Workbook" 
    ChangeApplicationIcon 
End Sub 

Código par o módulo
Option Explicit 
Declare Function GetActiveWindow32 Lib "USER32" Alias _ 
"GetActiveWindow" () As Integer 
Declare Function SendMessage32 Lib "USER32" Alias _ 
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ 
ByVal wParam As Long, ByVal lParam As Long) As Long 
Declare Function ExtractIcon32 Lib "SHELL32.DLL" Alias _ 
"ExtractIconA" (ByVal hInst As Long, _ 
ByVal lpszExeFileName As String, _ 
ByVal nIconIndex As Long) As Long 
Sub ChangeApplicationIcon() 
     
    Dim Icon& 
     
     '*****Change Icon To Suit*******
    Const NewIcon$ = "Notepad.exe" 
     '*****************************
     
    Icon = ExtractIcon32(0, NewIcon, 0) 
    SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 1 = big Icon
    SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 0 = small Icon
     
End Sub 


Reference: Walk

Tags: VBA, Excel, Icon, ícone, image

VBA Excel - Mudando o ícone padrão de uma planilha.

Inline image 1


Hello Folks!

Imagine em certo momento do seu dia-a-dia, onde diversas planilhas estão abertas simultaneamente. Isso é raro? Certamente Não. Uma das coisas mais úteis seria identificarmos rapidamente a planilha (ou aplicação MS Excel) que desejamos trabalhar naquele momento.

Quando olhamos para a nossa barra de tarefas do Windows observamos inúmeras planilhas abertas ou ainda pior, olhamos aquele ícone com todos as planilhas agrupadas.

E se...e somente se, pudéssemos atribuir um ícone diferente para cada aplicação MS Excel que estivéssemos usando? Imagine identificarmos a nossa aplicação rapidamente através do seu ícone, seria muito bom! Além disso destacaríamos a nossa aplicação de outras que estivessem rodando nas máquinas dos nossos Clientes.

Mas é possível alterar o ícone de uma planilha específica, ou de várias, que estão rodando em nossa máquina? Tá bom, chega de tortura, segue como é que se faz:

Ao abrir a planilha, solicite que uma das primeiras coisas a serem executadas, seja a nossa SUB ChangeAppIcon:

Private Sub Workbook_Open()
    ' Author:                     Date:                       Contact:                            URL:
    ' André Bernardes      02/03/2011 09:40    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Application: ***
    ' Ao abrir o formulário.
    ' Listening: - .
    ' Re-escrito/Atualizado em: .
    
    Let Application.ScreenUpdating = False
    Let Application.Caption = ".: Minha Aplicação"
    Let Application.StatusBar = "A&A - In Any Place"

    ' Abre um formulário.
    frmSplash.Show

    Call ChangeAppIcon
    Let Application.ScreenUpdating = True
End Sub

Em seguida crie um módulo com o nome de mdl_Functions_PutIcon e cole o código abaixo nele:

Option Explicit

Declare Function GetActiveWindow32 Lib "USER32" Alias "GetActiveWindow" () As Integer

Declare Function SendMessage32 Lib "USER32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Declare Function ExtractIcon32 Lib "SHELL32.DLL" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

Sub ChangeAppIcon()

    ' Author:                     Date:                       Contact:                            URL:
    ' André Bernardes      02/03/2011 08:14    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Application: 
    ' Modification of code from Excel Experts E-Letter Archives.
    ' Original code By Jim Rech can be found by following this
    ' Listening: - .
    ' Re-escrito/Atualizado em: .
    Dim Icon&

    ' Change Icon To Suit

    Const NewIcon$ = "C:\Bernardes\Application.ico" 

    Let Icon = ExtractIcon32(0, NewIcon, 0)

    SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 1 = big Icon

    SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 0 = small Icon
End Sub

Pronto! Agora você tem a solução para alterar o ícone das suas aplicações desenvolvidas com o MS Excel.

Esse ícone pode ser utilizado como indicador e ser alterado de acordo com um parâmetro, é só utilizar a sua imaginação, de acordo com a sua necessidade.

Outro aspecto interessante é o de que você também pode utilizar um ícone de arquivo executável, como por exemplo o Notepad.exe. Basta que coloque o caminho onde ele está no ambiente do Windows que o seu ícone será mostrado.

Tags: Bernardes, MS, Microsoft, MS Office, Automation, Automação, Aplicação, Application, Icon, ícone, image, change, DLL, API, SendMessage, LIB, USER32.DLLSHELL32.DLL




Excel VBA - Copie qualquer objeto como imagem e exporte-o


Lembro-me de há alguns, quando criei este Blog específico de VBA, como ainda era incipiente a inter-colaboração de códigos VBA no mercado nacional, bem como a utilização profissional de Dashboards e Scorecards. O desenvolvimento VBA naquela época restringia-se aos expressão "faz-se macros no excel'. Hoje, estamos vivenciando um mercado de desenvolvimento VBA mais maduro, cheio de profissionais competentíssimos (tomara que essa expressão não seja um neologismo), com inúmeras excelentes soluções de desenvolvimento e aplicações de automação. Encontramo-nos amadurecidos e prontos para avançarmos no nosso ciclo de aprimoramento profissional!

English references:
You can export a chart to an image file using VBA
Chart to Image Conversion using VBA
Excel Chart to GIF Conversion using VBA
Export Excel Chart to Image using VB
Save Chart as image
Export function of the Chart
To copy a selected Excel chart or range object as a picture
Image File Type Comparison of Exported Charts
Image Export - Org Chart in Excel Worksheet
Best format to export Excel Range to picture
Export Chart as Image: Run-time error 1004
Exporting a Chart(object) EXCEL VBA
Saving a chart as a picture file
Paste Chart from Excel to VBA form
Using VBA to Export Charts as Images in Excel 2007
How can I export a chart as a jpg/tif? in Excel Charting?
How to superimpose chart images or extract data by vba in Excel?
How to convert Excel to jpg, gif image?
How to Export A Picture Or Chart From Excel To Powerpoint?


O artigo a seguir visa elevar a qualidade da nossa entrega. Enviar o conteúdo das nossas soluções para outros ambientes e interfaces. Das aplicações da suíte MS Office, a editores gráficos para a criação de Info Gráficos e até mesmo a inserção destes em páginas da Web de modo automático (Sharepoint). Mas prá que quero isso? Talvez pergunte-se. Abaixo seguem diversos códigos bem elaborados que possibilitarão copiar os gráficos das suas planilhas pré-existentes, bem como os ranges de dados destas (conjuntos de células previamente selecionados) como uma imagem. Detalho:
Por vezes desejará não enviar a fonte de dados junto com o gráfico para um Slide que lhe solicitaram.
Talvez deseje enviar uma tabela, um relatório, partes de um Balanced Scorecard, um Dashboards ou um Scorecards, ou mesmo um conjunto de KPIs, sem que estes sejam alterados por quem recebê-los.
Criar um informativo regular, parte de um relatório, que envia via MS Outlook, comentários dos
relatórios, agregando conteúdo analítico e não apenas gráficos e dados estáticos para o público alvo.
Como fazê-lo? Com os recursos abaixo alistados, poderá enviar somente as imagens, como se tirasse uma foto e colasse no Slide, num documento MS Word, num e-mail e até mesmo no Photoshop (há!). Chega! Essas são apenas algumas das possibilidades...Pensem em outras...
CÓDIGO:
ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
Para copiar um gráfico selecionado (ou ativo) em uma planilha, implemente a seguinte sintaxe:
CÓDIGO:
ActiveChart.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Copiando um range de dados, colando-a como uma imagem::
CÓDIGO:
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Copie gráficos selecionados (ou ativo) em uma planilha, implemente a seguinte sintaxe:
CÓDIGO:
Worksheets("Nome da pasta").ChartObjects(1).Chart.CopyPictureAppearance:=xlScreen, Size:=xlScreen, Format:=xlPicture

Copie uma faixa de dados específica, embora não esteja selecionada, colando-a a posteriori:
:
CÓDIGO:
Worksheets("Nome da pasta").Range("B11:AF25").CopyPicture Appearance:=xlScreen, Format:=xlPicture

Pois é, sempre existem códigos admiráveis por aí:
CÓDIGO:
Sub GraficoToPowerPoint() Dim objPPT As Object Dim objPrs As Object Dim shtTemp As Worksheet Dim chtTemp As ChartObject Dim intSlide As Integer Set objPPT = CreateObject("Powerpoint.application") objPPT.Visible = True objPPT.presentations.Open ThisWorkbook.Path & "\Dashboard_Bernardes.ppt" objPPT.ActiveWindow.ViewType = 1 'ppViewSlide For Each shtTemp In ThisWorkbook.Worksheets For Each chtTemp In shtTemp.ChartObjects intSlide = intSlide + 1 chtTemp.CopyPicture If intSlide > objPPT.presentations(1).Slides.Count Then objPPT.ActiveWindow.View.GotoSlide Index:=objPPT.presentations(1).Slides.Add(Index:=intSlide, Layout:=1).SlideIndex End If objPPT.ActiveWindow.View.Paste Next Next objPPT.presentations(1).Save objPPT.Quit Set objPrs = Nothing Set objPPT = Nothing End Sub
Copiando range e gráfico para o MS Powerpoint:
CÓDIGO:
Sub GraficoRange_TO_Powerpoint() Dim objPPT As Object Dim objPrs As Object Dim objSld As Object Dim shtTemp As Object Dim chtTemp As ChartObject Dim objShape As Shape Dim objGShape As Shape Dim intSlide As Integer Dim blnCopy As Boolean Set objPPT = CreateObject("Powerpoint.application") objPPT.Visible = True objPPT.Presentations.Add objPPT.ActiveWindow.ViewType = 1 For Each shtTemp In ThisWorkbook.Sheets blnCopy = False If shtTemp.Type = xlWorksheet Then For Each objShape In shtTemp.Shapes blnCopy = False If objShape.Type = msoGroup Then For Each objGShape In objShape.GroupItems If objGShape.Type = msoChart Then blnCopy = True Exit For End If Next End If If objShape.Type = msoChart Then blnCopy = True If blnCopy Then intSlide = intSlide + 1 objShape.CopyPicture objPPT.ActiveWindow.View.GotoSlide Index:=objPPT.ActivePresentation.Slides.Add(Index:=objPPT.ActivePresentation.Slides.Count + 1, Layout:=12).SlideIndex objPPT.ActiveWindow.View.Paste End If Next If Not blnCopy Then intSlide = intSlide + 1 shtTemp.UsedRange.CopyPicture objPPT.ActiveWindow.View.GotoSlide Index:=objPPT.ActivePresentation.Slides.Add(Index:=objPPT.ActivePresentation.Slides.Count + 1, Layout:=12).SlideIndex objPPT.ActiveWindow.View.Paste End If Else intSlide = intSlide + 1 shtTemp.CopyPicture objPPT.ActiveWindow.View.GotoSlide Index:=objPPT.ActivePresentation.Slides.Add(Index:=objPPT.ActivePresentation.Slides.Count + 1, Layout:=12).SlideIndex objPPT.ActiveWindow.View.Paste End If Next Set objPrs = Nothing Set objPPT = Nothing End Sub
Bônus:
CÓDIGO:
Sub RangeUsado_TO_Powerpoint() Dim objPPT As Object Dim shtTemp As Object Dim intSlide As Integer Set objPPT = CreateObject("Powerpoint.application") objPPT.Visible = True objPPT.Presentations.Open ThisWorkbook.Path & "\Bernardes.ppt" objPPT.ActiveWindow.ViewType = 1 For Each shtTemp In ThisWorkbook.Sheets shtTemp.Range("A1", shtTemp.UsedRange).CopyPicture xlScreen, xlPicture intSlide = intSlide + 1 objPPT.ActiveWindow.View.GotoSlide Index:=objPPT.ActivePresentation.Slides.Add(Index:=objPPT.ActivePresentation.Slides.Count + 1, Layout:=12).SlideIndex objPPT.ActiveWindow.View.Paste With objPPT.ActiveWindow.View.Slide.Shapes(objPPT.ActiveWindow.View.Slide.Shapes.Count) .Left = (.Parent.Parent.SlideMaster.Width - .Width) / 2 End With Next Set objPPT = Nothing End Sub
Boa diversão! Tags: André Luiz Bernardes, TI, Tecnologia da Informação, Dashboard, Scorecard, Infographic, infochart, infográfico, portfolio, YTD, YTG, KPI, sparklines, charts, Pivot Table, slicers, bullet, Scroll chart, gráfico, mini-gráfico, termômetro, Velocímetro, Gauge, relatório, MS, Microsoft, Office, Excel, Access, Outlook, Powerpoint, Organização, Ordenação, Formatação, numérico, projeto, ranqueado, painel, clustering, redes neurais, métodos genéticos, mineração em textos, roll up, drill down, KPI, KPIs, Key performance Indicator, escopo, stakeholder, indicadores, DW, Data Warehousing, BSM, Business Scorecard Manager, BSC, Balanced Scorecard, Dashboard, características, infochart, chart, infográfico, gráfico, drugs, drogas, Ilegal, Américas, análise, Data Mining Tweeder, The Health Tweeder, algoritmo, data mining, Mineração de Dados, colaborativa, rede social, social mídia, community, facebook, like, friendwheel, google play, health tweeder, infographic, keyword, like button, likebutton.me, mentionmap, MSNBC spectra, network,news feed, rss, search, topics, touchgraph, twitter, twitter venn, visual, evolução, dólar, Real, superimposição, finanças, financeiro, contábil, contabilidade, crédito, débito

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine