Tabela de melhores Antivírus de 2011 baseada nos testes de victorh2007

Baseado nos testes de Victor Hugo criador do site Seu Micro Seguro criei esta tabela com os 13 melhores antivírus, veja e comente.

Para a semana irei colocar uma tabela baseada nos testes de Gustavo criador do site Guardião do PC e nosso parceiro não perca.

 Obrigado por visitar o Infotecnologia! 

Dicas do Microsoft Office Word IV

Como usar o Skydrive integrado com o Word?

Para quem não conhece, o Windows Live SkyDrive é o serviço de armazenamento online (na cloud) disponibilizado pela Microsoft. Este serviço permite aos utilizadores guardar fotografias, documentos e outro tipo de ficheiros, podendo o utilizador usufruir de 25 GB de espaço na cloud.

A integração do Skydrive com o Word (ou outra ferramenta da suite Office) é muito simples. Para isso, basta ir a File—>Save & Send—>Save to Web (para guardar documentos) e aceder ao serviço usando as credenciais do Hotmail ou Messenger ou XboxLive.

word_01

Depois basta fazer Save As, dar um nome ao documento e ele ficará guardado no skydrive. Quem pretender pode também criar uma estrutura de directórios carregando em New

word_02

Para abrir um documento do SKydrive basta ir a File—>Open e escolher qual o documento a abrir. Reparar que o caminho do documento corresponde a um URL)

word_03

Por hoje é tudo! Esperamos que as dicas sejam úteis e que vos ajudem a criar de forma mais simples os vossos documentos.

Fonte: Pplware

Dicas do Microsoft Office Word III

Atalhos “visuais” no Word….Adeus rato!

O rato veio simplificar um conjunto de tarefas mas a verdade é que quem domina o teclado consegue realizar mais rapidamente as tarefas. Os atalhos que começam com a tecla CTRL — por exemplo, CTRL+C para copiar ou CTRL+ALT+1 para Título 1 permanecem os mesmos de versões anteriores do Word 2010. No entanto, no Word 2010 se pressionarmos a tecla ALT conseguimos visualizar alguns atalhos e assim não necessitamos de os decorar.

word_00

Depois de carregar na tecla ALT basta carregar na letra adequada para aceder ao separador que pretendemos.

word_01

Esta dica não funciona apenas para os separadores (menus). Depois de escolhermos o separador, passamos a ter também disponível um conjunto de atalhos para aceder a todas as funcionalidades disponibilizadas nesse separador.

word_02

Por hoje é tudo! Esperamos que as dicas sejam úteis e que vos ajudem a criar de forma mais simples os vossos documentos.

Fonte: Pplware

Dicas do Microsoft Office Word II

Remover  informação escondida num ficheiro do Word

Mas afinal onde está essa informação?

Para verem a informação escondida de um ficheiro  word, basta carregarem com o botão do lado direito do rato sobre o mesmo e escolher a opção properties.

word_01

Em seguida vão até ao separador Details e podem ver toda a informação associada ao ficheiro.

word_02

Na própria janela, podem também remover essa informação carregando em “Remove Properties and Personal Information

Na janela de remoção das propriedades podem criar uma cópia do ficheiro sem essa informação ou então remover apenas a informação de alguns campos.

word_03

Por hoje é tudo! Esperamos que as dicas sejam úteis e que vos ajudem a criar de forma mais simples os vossos documentos.

Fonte: Pplware

Dicas do Microsoft Office Word I

Contar palavras, parágrafos, linhas, etc e recuperar documentos danificados.

Dica 1 – Contar palavras, parágrafos, linhas, etc

Uma das restrições que as vezes são impostas na produção de trabalhos académicos (e não só), é o numero de palavras que um documento ou parte deste deve ter. Para controlarmos essa informação no nosso documento, o Word disponibiliza uma opção que permite ver algumas estatísticas do documento como por exemplo o nº de páginas, palavras, caracteres, parágrafos, linhas, etc.

Par aceder a essa informação basta carregar no campo palavras, na barra inferior, tal como mostra a figura seguinte.

word_00

Dica 2 – Tentar recuperar um ficheiro danificado

Já lhe aconteceu tentar abri um ficheiro do word e aparecer uma informação que este não pode ser aberto pois encontra-se danificado? Infelizmente este é uma situação que por vezes acontece e que momentaneamente leva um utilizador ao desespero.

O Word possui uma funcionalidade que permite aos utilizadores tentarem recuperar um ficheiro danificado ou que simplesmente não abre. Para isso, devem abrir o Word sem qualquer documento, ir a Ficheiro—>Abrir e em seguida no botão abrir carregar na pequena seta que se encontra junta ao botão. Depois devemos escolher a opção Abrir e recuperar e em seguida seleccionar o ficheiro que se encontra danificado.

Nota: Este processo não sempre permite recuperar os ficheiros mas podemos sempre tentar.

word_01

Por hoje é tudo! Esperamos que as dicas sejam úteis e que vos ajudem a criar de forma mais simples os vossos documentos.

Fonte: Pplware

Excel: Dicas de VBA – Criando Teclas de Atalho

Quando criamos código em VBA necessitamos de o executar e isso pode ser feito de diversas formas:

  • Através de Eventos
  • Através de funções personalizadas (UDF)
  • Através de um objecto que irá chamar o nosso código (quer esteja na worksheet ou na ribbon)
  • Através de teclas de atalho (shortcuts)

A possibilidade de utilizar determinadas teclas para chamar o código que criamos é muito prático e muito útil. Neste pequeno artigo iremos ver algumas formas e exemplos de como associar teclas de atalho a procedimentos e ver as principais diferenças entre os dois métodos disponíveis.

A maneira mais simples e mais usada pela maioria dos utilizadores, é seleccionando o separador Developer e escolhendo a opção Macros (ou pressionando as teclas Alt+F8)

New Picture

Na janela com as macros disponíveis, seleccionamos a macro pretendida e escolhemos a opção Options.

New Picture (2)

Irá abrir então uma nova janela onde podemos indicar que tecla de atalho iremos associar à macro seleccionada.

New Picture (1)

Neste exemplo, visível na imagem anterior, para chamar a Macro1, a combinação definida é Ctrl+a. Podemos indicar diversas letras (apenas letras) e se indicarmos uma letra em minúscula a combinação associada será Ctrl+a (por exemplo) e se indicarmos a letra em maiúscula a combinação associada será Ctrl+Shift+a.

Alguns exemplos:

a = Ctrl + a
u = Ctrl + u
A = Ctrl + Shift + a
U = Ctrl + Shift + u

Muito simples e muito prático!

No entanto isto limita-nos à utilização de determinadas combinações de teclas o que poderá ser, em alguns casos, um problema. Além disso não permite a atribuição dinâmica e a utilização de teclas especiais. Mas isto pode ser resolvido utilizando VBA.

Para atribuir uma tecla de atalho a uma macro, utilizamos o métodoApplication.OnKey()

Application.OnKey “combinação”, “procedimento a associar”

Exemplo:

Application.OnKey “^a”, “Macro1”

Neste caso é associada a combinação Ctrl+a à Macro1.

Mas vejamos a tabela de códigos de teclas especiais, que além das letras e números podem ser utilizados:

Tecla Código
BACKSPACE {BACKSPACE} ou {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
CLEAR {CLEAR}
DELETE ou DEL {DELETE} ou {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER (teclado numérico) {ENTER}
ENTER ~ (tilde)
ESC {ESCAPE} ou {ESC}
HELP {HELP}
HOME {HOME}
INS {INSERT}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RETURN {RETURN}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 a F15 {F1} até {F15}

E as teclas que são usadas para combinar:

Tecla Código
SHIFT + (adicção)
CTRL ^ (acento circunflexo)
ALT % (percentagem)

Assim, com a lista de códigos, podemos combinar e associar conjuntos de teclas a macros que tenhamos criado/gravado. Podemos utilizar o evento Workbook_Open(), que é executado quando o ficheiro de Excel é aberto, e definir no arranque as associações que queremos. Por exemplo:

Private Sub Workbook_Open()
Application.OnKey “+^{UP}”, “MostraResultado”
Application.OnKey “%{INSERT}”, “CopiaDados”
End Sub

Neste caso, a combinação Shift+Ctrl+Seta Cima chama o procedimentoMostraResultado e a combinação Alt+Insert chama o procedimento CopiaDados.

No entanto estas atribuições funcionam se os procedimentos estiverem definidos num módulo, pois se estiverem definidos no Workbook ou em determinado Worksheet não irá funcionar. Nestes casos é necessário definir o caminho para eles, como é possível ver no exemplo seguinte:

Private Sub Workbook_Open()
    Application.OnKey "+^{UP}", "ThisWorkbook.MostraResultado"
    Application.OnKey "%{INSERT}", "Sheet1.CopiaDados"
End Sub

Aqui estamos a indicar que o procedimento MostraResultado está criado emThisWorkbook e o procedimento CopiaDados está criado no código da Sheet1.

Mas atenção que determinadas combinações, especialmente usando a tecla Alt mais uma letra ou número, não funcionam, pois são usadas como teclas de atalho do próprio Excel. É importante testar sempre!

Muito importante também verificar se não estamos a utilizar uma combinação do próprio sistema operativo. Por exemplo, a combinação Ctrl+C (“^c”) serve para copiar informação(copy), assim como o Ctrl+V (“^v”) serve para colar informação (paste). Se atribuirmos estas combinações a diferentes procedimentos, é sobreposto o funcionamento normal (neste caso o copy/paste) e passará a chamar os procedimentos que definimos. Isto pode ser desagradável para muitos utilizadores.

Um exemplo muito simples para que testem rapidamente e entendam o problema de algumas associações. Coloquem o seguinte código num módulo e executem o procedimento AssociaTeclas.

Sub AssociaTeclas()
Application.OnKey “~”, “Opps”
End Sub

Sub Opps()
MsgBox “Opps !!!”
End Sub

Agora, no Excel, sempre que carregarem na tecla Enter aparecerá uma mensagem com a informação “Opps !!!”.

Mas podemos também desabilitar as associações que definidas. Para tal, basta não definir o segundo argumento do método OnKey() que é opcional.

Sub DesabilitaTeclas()
Application.OnKey “~”
Application.OnKey “^v”
Application.OnKey “^v”
Application.OnKey “%{INSERT}”
Application.OnKey “+^{UP}”
End Sub

Após executar o procedimento DesabilitaTeclas as associações definidas deixariam de funcionar e, neste caso, o Enter voltaria a funcionar como antes, assim como oCtrl+c e o Ctrl+v.

Neste pequeno artigo vimos como é simples atribuir teclas de atalho para chamar procedimentos, utilizando as opções já disponíveis e através de código, e alguns dos problemas que as associações podem causar.

É sem dúvida uma forma muito prática de chamar código VBA.

Fonte: Visual Basic em Português

Excel: Dicas de VBA – Personalizar o Friso II

No primeiro artigo sobre a personalização do friso (ribbon) foi mostrado como criar um novo separador e um novo grupo com dois controlos, neste caso, dois botões.

Mas podemos utilizar inúmeros controlos de modo a tornar as opções mais simples para o utilizador. Como referido também no artigo anterior, este é o esquema base para construção do friso:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="customTab1" label="Extra Options">

              <!-- Grupos, Controlos, etc -->

            </tab>
        </tabs>
    </ribbon>
</customUI>

O próximo código XML apresentado irá ser colocado dentro da tab com o ID “customTab1”

Vamos ver então alguns controlos, alguns eventos, designados por callbacks, e algumas opções mais avançadas!

image

Para criar um grupo com caixas de selecção (checkboxes), no primeiro grupo(myCheckBox Group), podemos o fazer da seguinte forma:

<group id=”Group1″ label=”myCheckBox Group”>
<checkBox id=”cb1″ label=”Opção A” onAction=”cbGetDescription” />
<checkBox id=”cb2″ label=”Opção B” onAction=”cbGetDescription” />
<checkBox id=”cb3″ label=”Opção C” onAction=”cbGetDescription” />
<checkBox id=”cb4″ label=”Opção D” onAction=”cbGetDescription” />
<checkBox id=”cb5″ label=”Opção E” enabled=”false” />
<checkBox id=”cb6″ label=”Opção F” enabled=”false” />
</group>

clip_image003

Neste caso estamos a criar um grupo, onde vamos ter várias checkboxes (6). As primeiras quatro estão a chamar o callback cbGetDescription, onde irmos depois verificar qual a opção selecionada, e as duas últimas estão desabilitadas para efeitos de demonstração.

No callback (evento) cbGetDescription podemos usar o seguinte código:

Sub cbGetDescription(control As IRibbonControl, pressed As Boolean)
    Select Case control.id
        Case "cb1"
            MsgBox "Opção A - Seleccionada: " & pressed
        Case "cb2"
            MsgBox "Opção B - Seleccionada: " & pressed
        Case "cb3"
            MsgBox "Opção C - Seleccionada: " & pressed
        Case "cb4"
            MsgBox "Opção D - Seleccionada: " & pressed
        End Select

End Sub

No segundo grupo (MyDrops Group) estão dois controlos de selecção: Combobox e DropDown. A diferença entre ambos é que na Combobox é possível alterar o texto enquanto na DropDown não. Neste exemplo, e para mostrar diferentes formas de carregamento de dados, na Combobox estão já definidos alguns itens e a DropDown será preenchida dinamicamente com dados de um Array definido no código.

O XML para a sua criação será então o seguinte:

<group id="Group2" label="myDrops Group">

    <comboBox id="cboItems" label="ComboBox:" onChange="cboOnChange">
        <item id="item1" label="Item 1" />
        <item id="item2" label="Item 2" />
        <item id="item3" label="Item 3" />
    </comboBox> 

    <dropDown id="dropDynamic" label="Dropdown:"
                onAction="ddOnAction"
                getItemLabel="ddGetItemLabel"
                getItemCount ="ddGetItemCount" >
    </dropDown>

</group>
clip_image005

Como código para a Combobox podemos definir então:

Sub cboOnChange(control As IRibbonControl, text As String)
    MsgBox "Texto seleccionado: " & text
End Sub

Isto irá mostrar uma mensagem com o texto seleccionado ou inserido.

Para a DropDown o código é ligeiramente mais complexo!

Para começar vamos adicionar na primeira linha do XML o atributo onLoad definindo desta forma que quando o friso é iniciado iremos executar determinado código (poderia ser feito também no evento Workbook_Open).

<customUI xmlns=http://schemas.microsoft.com/office/2009/07/customui
onLoad=”RibbonLoad”>

Desta forma vamos executar o callback RibbonLoad() na inicialização do friso, onde iremos carregar alguns valores no array. Estes valores vão ser utilizados pelos métodos GetItemLabel() e GetItemCount() como é possível ver no seguinte código/comentários.

Private paises(4) As String
Private x As Integer

Sub RibbonLoad(ribbon As IRibbonUI)
paises(0) = “Portugal”
paises(1) = “Espanha”
paises(2) = “França”
paises(3) = “Alemanha”
paises(4) = “Inglaterra”
End Sub

‘ Mostra a determinada posição do array de acordo com o índex recebido
Sub ddOnAction(control As IRibbonControl, id As String, index As Integer)
MsgBox paises(index), vbInformation
End Sub

‘ Este evento é chamado uma vez por cada posição na lista, definido no
‘ evento ddGetItemCount(). Desta forma, quando o evento é executado, colocamos
‘ um valor de cada posição do array e incrementamos o contador de posição
Sub ddGetItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
returnedVal = paises(x)
x = x + 1
End Sub

‘ Define o número de itens a aparecer na lista
Sub ddGetItemCount(control As IRibbonControl, ByRef returnedVal)
returnedVal = UBound(paises) + 1
End Sub

O terceiro e último grupo (myMisc Group) tem diferentes controlos para mostrar mais algumas das possibilidades disponíveis (não todas, obviamente). O XML é um pouco extenso mas será explicado de seguida:

<group id=”Group3″ label=”myMisc Group”>

<gallery id=”MonthGallery” label=”Escolher mês usando uma Gallery:”
columns=”3″ rows=”4″ onAction=”SetMonth” >
<item id=”m01″ label=”Janeiro”/>
<item id=”m02″ label=”Fevereiro”/>
<item id=”m03″ label=”Março”/>
<item id=”m04″ label=”Abril”/>
<item id=”m05″ label=”Maio”/>
<item id=”m06″ label=”Junho”/>
<item id=”m07″ label=”Julho”/>
<item id=”m08″ label=”Agosto”/>
<item id=”m09″ label=”Setembro”/>
<item id=”m10″ label=”Outubro”/>
<item id=”m11″ label=”Novembro”/>
<item id=”m12″ label=”Dezembro”/>

<button id=”mActual” imageMso=”CalendarToolSelectDate”
label=”Mês Actual” onAction=”SetCurrentMonth” />
</gallery>

<editBox id=”EditBox1″ label=”Texto a pesquisar:” onChange=”EditBoxOnChange”
imageMso=”FindAllDownloadedDocuments” />

<separator id=”separator1″/>

<toggleButton id=”toggleActivar” label=”Activar/Desactivar”
imageMso=”AcceptTask” getPressed=”toggleGetPressed”
onAction=”toggleOnAction” />

<menu id=”Menu1″ label=”Menu Opções Sistema” itemSize=”normal”>
<button idMso=”Cut”/>
<button idMso=”Copy”/>
<button idMso=”Paste”/>

<menuSeparator id=”menuSeparator1″ title=”Mais opções …”/>
<menu id=”SubMenu1″ label=”Ficheiro”>
<button idMso=”FileSave”/>
<button idMso=”FileSaveAs”/>
<button idMso=”FileOpen”/>
<button idMso=”FileClose”/>
</menu>
<menu id=”SubMenu2″ label=”Diversos”>
<button idMso=”FileExit”/>
</menu>
</menu>

<dialogBoxLauncher>
<button id=”Launcher1″ screentip=”My Launcher”
onAction=”ThisWorkbook.LauncherCode” />
</dialogBoxLauncher>

</group>

Para começar uma galeria (Gallery) onde estamos a definir os diferentes meses do ano. Aqui podemos indicar quantas linhas e colunas queremos, assim como utilizar outros controlos. No código XML está definido no final um botão que irá escolher o mês actual.

image

O código associado é muito simples:

' Mostra o mês de acordo com o index recebido
Sub SetMonth(control As IRibbonControl, id As String, index As Integer)
    MsgBox MonthName(index + 1)
End Sub

' Mostra o mês por extenso do mês actual
Sub SetCurrentMonth(control As IRibbonControl)
    MsgBox MonthName(Month(Now))
End Sub

De seguida temos uma EditBox que permite o utilizador escrever algum texto. No código basta simplesmente mostrar o resultado no callback EditBoxOnChange():

Sub EditBoxOnChange(control As IRibbonControl, text As String)
    MsgBox "O texto indicado foi: " & text, vbInformation
End Sub

Depois um separador e um botão retentivo (toggle button), ou seja, quando pressionado fica seleccionado e quando pressionado novamente perde a selecção.

image

No código do toggle button mostramos apenas o estado no callback onAction() e definimos também, no callback getPressed(), o estado inicial quando o friso é inicializado.

‘ Quando o botão (toggle) é pressionado mostra o estado
Sub toggleOnAction(control As IRibbonControl, pressed As Boolean)
MsgBox “Controlo: ” & control.id & ” – Pressionado: ” & pressed
End Sub

‘ Define o estado inicial do botão
Sub toggleGetPressed(control As IRibbonControl, ByRef returnedVal)
returnedVal = True
End Sub

Depois, no próximo controlo utilizado, não existe qualquer código associado pois estamos a definir funções de sistema através da atribuição de um idMso. Isto significa que cada opção que colocarmos no menu, que poderá ser colocado em outro controlo, irá executar a função que o sistema está preparado para o fazer (save, save as, copy, cut, etc).

Desta forma, podemos colocar no nosso friso algumas opções já existentes no Excel e que podem ser úteis. A lista dos ID’s (idMso) que podemos utilizar pode ser descarregada aqui:

O último controlo, embora meio escondido e disponível no canto inferior direito do grupo, é um DialogBox Launcher que permite simplesmente lançar uma janela com opções relaccionadas com o respectivo grupo.

image

O código pode então mostrar uma mensagem, chamar um userform, etc. Neste exemplo irá mostrar apenas uma mensagem, mas tem uma particularidade, que se aplica a todos os controlos. No XML está definido para o callback onAction() o método ThisWorkbook.LauncherCode. Isto significa que o seguinte código tem de estar localizado no ThisWorkbook para funcionar, pois está a ser apontado para tal.

Sub LauncherCode(control As IRibbonControl)
MsgBox “Mais opções …”
End Sub

Podemos apontar para módulos específicos, worksheets, etc.

NOTA IMPORTANTE: Caso o XML não esta correcto (tags inválidas, tags não fechadas, etc) o separador não ficará visível.

E são alguns exemplos que mostram como personalizar o friso e como utilizar o código para cada controlo. Existem muito mais opções para cada controlo e muito mais controlos. Para complementar estes dois pequenos artigos podem ver os seguintes links, que além de um PDF que podem descarregar gratuitamente, podem consultar online:

Podem ainda descarregar o ficheiro de exemplo utilizado neste artigo: download

Fonte: Visual Basic em Português

Excel: Dicas de VBA – Personalizar o Friso I

Uma solução muito interessante é personalizar o friso (ribbon), colocando à disposição do utilizador as diversas opções possíveis. Além de simples implementação, é uma solução visualmente muito agradável.

A personalização do friso pode ser feita individualmente para cada ficheiro ou para todos os ficheiros. Neste artigo iremos ver como fazer para apenas um ficheiro.

Existem diversos programas que permitem efectuar a personalização do friso, mas neste artigo irá ser utilizado o Custom UI Editor for Microsoft Office, que além de gratuito, é muito simples de utilizar.

Após instalar o programa fica disponível um simples editor.

image

Na opção File – Open escolhemos o ficheiro de Excel que queremos personalizar o friso. Caso o ficheiro ainda não tenha qualquer personalização, adicionamos, usando o botão direito do rato, uma UI Part (User Interface Part), como mostra a seguinte imagem.

image

Será então adicionado um ficheiro XML com o nome customUI14.xml. Usando o menuInsert – Sample XML escolhemos a opção Custom Tab. Será então adicionado o código XML que será a definição do nosso friso (ribbon).

Neste código (previamente formatado/alinhado), podemos verificar alguns elementos que constituem o novo separador: Tab, Group e um Button.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon startFromScratch="false">
     <tabs>
        <tab id="customTab" label="Custom Tab">
         <group id="customGroup" label="Custom Group">
            <button id="customButton" 
                      label="Custom Button" 
                      imageMso="HappyFace" 
                      size="large" 
                      onAction="Callback" />
          </group>
       </tab>
    </tabs>
   </ribbon>
</customUI>

Podemos a partir daqui alterar de acordo com o pretendido.

Podemos ainda adicionar imagens que serão depois utilizadas pelos diversos elementos. Para adicionar imagens podemos usar a opção Insert – Icons e escolhemos as imagens que queremos. Neste exemplo foram utilizadas duas imagens com a resolução de 48×48.

 

accept

clock

accept

clock

Existem duas formas de definir a imagem, cujo nome será o nome da imagem adicionada:

Após pequenas alterações, podemos criar um simples exemplo, tendo em atenção que o ID não pode ser repetido. Atenção ainda à designação definida no atributo onActionque será o nome da macro e ao nome da imagem que foi definida.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon startFromScratch="false">
     <tabs>
        <tab id="customTab" label="VBTuga">
         <group id="customGroup" label="Custom Buttons">
            <button id="customButton1" 
                      label="Aceitar" 
                      image="accept" 
                      size="large" 
                      onAction="btnAccept" />
            <button id="customButton2" 
                      label="Data/Hora" 
                      image="clock" 
                      size="large" 
                      onAction="btnData" />
          </group>
       </tab>
    </tabs>
   </ribbon>
</customUI>

Na toolbar existe uma opção para validar o código XML. É importante executá-la sempre que se fazem alterações, antes de gravar, de modo a verifica se tudo está correcto, caso contrário, o novo friso não irá ficar visível.

image

Na última opção da pequena toolbar deste editor, existe um botão para gerar as chamadas (Generate Callbacks). Esta opção irá então gerar o código de deveremos colocar num módulo do nosso ficheiro de Excel.

image

Podemos agora copiar o código VBA e salvar as alterações.

Abrimos o ficheiro alterado no Excel e colocamos o código copiado num módulo. Neste exemplo, será apenas adicionada uma mensagem:

Sub btnAccept(control As IRibbonControl)
MsgBox “Aceitar usando o botão: ” & control.ID, vbInformation
End Sub

Sub btnData(control As IRibbonControl)
MsgBox “Data e Hora: ” & Now, vbInformation
End Sub

E o resultado final é o seguinte:

image

Este é apenas um pequeno artigo de introdução à personalização do friso no Excel, mas existem inúmeras alterações que podemos fazer e tornar desta forma os ficheiros mais profissionais/funcionais. É possível também usar diferentes controlos no friso, personalizar o Backstage View, criar menus de contexto (baseados na selecção), etc.

Fonte: Visual Basic em Português

Dicas de VBA – Performance

É muito importante quando se desenvolve alguma macro, que o tempo de execução não seja exagerado, e até porque, as folhas de calculo têm
normalmente diversos cálculos, objectos, formatações, etc, o que pode tornar as acções mais lentas.

Existem no entanto pequenos “truques” que permitem melhorar reduzir o tempo de execução das macros e melhorar o aspecto visual quando estas correm.

Application.ScreenUpdating

Esta propriedade define se o Excel actualiza ou não a folha de cálculo. Por defeito está definida como verdadeira (True), mas podemos
defini-la como falsa (False).

Por exemplo, se queremos apagar algumas linhas ou colunas individualmente, sempre que damos uma ordem para eliminar, a folha é
actualizada, aumentando o tempo de execução. Se definirmos Application.ScreenUpdating = False, só quando voltarmos a definir
Application.ScreenUpdating = True, é que a folha é actualizada, reduzindo significativamente o tempo de execução e o aspecto geral da macro.

No seguinte exemplo, só após o código terminar, a folha será actualizada:

Sub DeleteColumns() 

       Application.ScreenUpdating = False 

        Range(“c:c”).Delete 

        Range(“b:b”).Delete 

        Range(“a:a”).Delete 

      Application.ScreenUpdating = True

    End Sub

Application.Calculation

A propriedade Calculation permite definir de que forma são feitos os cálculos. Sempre que escrevemos um valor numa célula, o Excel actualiza todos os cálculos, em todas as células, o que poderá levar algum tempo. Por defeito esta propriedade está definida como automática (xlCalculationAutomatic) mas podemos no entanto definir para não ser executada, ou seja, para manual (xlCalculationManual).

Por exemplo, e para testarmos esta opção, se tivermos na colunas A, B, C, D, E e F todas as células com uma formula para gerar um número
aleatório =Rand() , sempre que escrevermos um valor numa célula, irão ser actualizadas todas as formulas. No seguinte exemplo será desabilitado enquanto o ciclo estiver a ser executado, e poderá testar com e sem o desabilitar dos cálculos automáticos, para ver a diferença.

Sub WriteValues()

        Dim x As Integer

        Application.Calculation = xlCalculationManual

        For x = 1 To 100

            Cells(x, “g”).Value= x

        Next

        Application.Calculation = xlCalculationAutomatic

    End Sub

Application.EnableEvents

Com explicado num artigo anterior, existem diversos eventos que estão disponíveis no Excel. Esses eventos podem executar operações demoradas e isso pode não ser desejado. Por defeito esta propriedade está definida como verdadeira (True) mas podemos desactivar quando queremos que os eventos não aconteçam.

Imagine que no evento Change, que é executado sempre que algum valor seja alterado, temos um ciclo demorado.

Private Sub Worksheet_Change(ByVal Target As Range)

        Dim x As Integer

        For x = 0 To 1000

            Debug.Print(x)

        Next

    End Sub

Com a opção Application.EnableEvents = True, sempre que escrever um valor em qualquer célula, irá correr também o código anterior.

Definindo esta propriedade como falsa, Application.EnableEvents = False, fará com que apenas se execute o nosso código
e não os restantes eventos do documento.

Sub Run()

        Dim x As Integer

        Application.EnableEvents = False

        For x = 1 To 100

            Cells(x, “g”).Value = x

        Next

        Application.EnableEvents = True

    End Sub

Isoladamente ou em conjunto, estas três propriedades permitem melhorar significativamente o tempo de execução de uma macro e com isso tornar a nossa folha de cálculo mais atractiva.

NOTA: é preciso ter algum cuidado com a utilização destas propriedades, e garantir que são sempre repostas para as definições originais, correndo-se o risco de a folha não trabalhar como está planeado. Se colocarmos, por exemplo, a propriedade Application.EnableEvents = False e não voltarmos a colocar a True, todos os eventos ficaram congelados.

Fonte: Pplware