Estou procurando uma maneira de adicionar uma guia personalizada na faixa de opções do Excel que carregue alguns botões. Por acaso, alguns recursos abordaram o assunto através do Google, mas todos parecem duvidosos e absurdamente complicados.
Qual é a maneira rápida e simples de fazer isso? Gostaria que a nova guia fosse carregada quando meu VBA fosse carregado no Excel.
ATUALIZAÇÃO : tentei este exemplo a partir daqui, mas recebo um erro "objeto obrigatório" na última instrução:
Public Sub AddHighlightRibbon()
Dim ribbonXml As String
ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + " <mso:ribbon>"
ribbonXml = ribbonXml + " <mso:qat/>"
ribbonXml = ribbonXml + " <mso:tabs>"
ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
ribbonXml = ribbonXml + " <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>"
ribbonXml = ribbonXml + " </mso:tabs>"
ribbonXml = ribbonXml + " </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"
ActiveProject.SetCustomUI (ribbonXml)
End Sub
excel
vba
excel-2007
ribbonx
Zumbido
fonte
fonte
Respostas:
AFAIK, você não pode usar o VBA Excel para criar uma guia personalizada na faixa de opções do Excel. No entanto, você pode ocultar / tornar visível um componente da faixa de opções usando o VBA. Além disso, o link que você mencionou acima é para o MS Project e não para o MS Excel.
Eu crio guias para meus aplicativos / suplementos do Excel usando este utilitário gratuito chamado Editor de IU personalizado .
Editar: Para acomodar novo pedido de OP
Tutorial
Aqui está um breve tutorial, conforme prometido:
Depois de instalar o Custom UI Editor (CUIE), abra-o e clique em Arquivo | Abra e selecione o arquivo Excel relevante. Certifique-se de que o arquivo do Excel esteja fechado antes de abri-lo via CUIE. Estou usando uma nova planilha como exemplo.
Clique com o botão direito conforme mostrado na imagem abaixo e clique em "Office 2007 Custom UI Part". Irá inserir o "customUI.xml"
Próximo Clique no menu Inserir | XML de amostra | Guia personalizada. Você notará que o código básico é gerado automaticamente. Agora você está pronto para editá-lo de acordo com seus requisitos.
Vamos inspecionar o código
label="Custom Tab"
: Substitua "Guia personalizada" pelo nome que deseja dar à sua guia. Por enquanto, vamos chamá-lo de "Jerome".A parte abaixo adiciona um botão personalizado.
imageMso
: Esta é a imagem que será exibida no botão. "HappyFace" é o que você verá no momento. Você pode baixar mais IDs de imagens aqui .onAction="Callback"
: "Callback" é o nome do procedimento que é executado ao clicar no botão.Demo
Com isso, vamos criar 2 botões e chamá-los de "Botão JG 1" e "Botão JG 2". Vamos manter o rosto feliz como a imagem do primeiro e vamos ficar com o "Sol" para o segundo. O código alterado agora se parece com isto:
Exclua todo o código que foi gerado no CUIE e, em seguida, cole o código acima no lugar dele. Salve e feche o CUIE. Agora, quando você abrir o arquivo do Excel, ele terá a seguinte aparência:
Agora a parte do código. Abra o Editor VBA, insira um módulo e cole este código:
Salve o arquivo do Excel como um arquivo habilitado para macro. Agora, ao clicar no Smiley ou no Sol, você verá a caixa de mensagem relevante:
Espero que isto ajude!
fonte
Consegui fazer isso com o VBA no Excel 2013. Não são necessários editores especiais. Tudo que você precisa é o editor de código Visual Basic, que pode ser acessado na guia Desenvolvedor. A guia Desenvolvedor não está visível por padrão, portanto, precisa ser ativada em Arquivo> Opções> Personalizar Faixa de Opções. Na guia Desenvolvedor, clique no botão Visual Basic. O editor de código será iniciado. Clique com o botão direito no painel Project Explorer à esquerda. Clique no menu inserir e escolha o módulo. Adicione os dois subs abaixo ao novo módulo.
Chame o sub LoadCustRibbon no Wookbook aberto e chame o sub ClearCustRibbon no evento Before_Close do arquivo de código ThisWorkbook.
fonte
Lutei como um louco, mas esta é realmente a resposta certa. Para valer a pena, o que eu perdi foi isso:
Aliás, a página que explica isso no site do Ron agora está em http://www.rondebruin.nl/win/s2/win002.htm
E aqui está seu exemplo de como ativar / desativar botões na Faixa de Opções http://www.rondebruin.nl/win/s2/win013.htm
Para outros exemplos de xml de fitas, consulte também http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx
fonte
As respostas aqui são específicas para o uso do Editor de IU personalizado. Passei algum tempo criando a interface sem aquele programa maravilhoso, então estou documentando a solução aqui para ajudar qualquer pessoa a decidir se precisa ou não desse editor de IU personalizado.
Encontrei a seguinte página da Web de ajuda da microsoft - https://msdn.microsoft.com/en-us/library/office/ff861787.aspx . Isso mostra como configurar a interface manualmente, mas tive alguns problemas ao apontar para meu código de suplemento personalizado.
Para fazer com que os botões funcionem com suas macros personalizadas, configure a macro em seus subs .xlam para ser chamada conforme descrito nesta resposta do SO - Chamando uma macro do Excel da faixa de opções . Basicamente, você precisará adicionar o parâmetro "control As IRibbonControl" a qualquer módulo apontado pelo xml da faixa de opções. Além disso, seu xml da faixa de opções deve ter a sintaxe onAction = "myaddin! Mymodule.mysub" para chamar corretamente quaisquer módulos carregados pelo suplemento.
Usando essas instruções, consegui criar um suplemento do Excel (arquivo .xlam) que tem uma guia personalizada carregada quando meu VBA é carregado no Excel junto com o suplemento. Os botões executam o código do suplemento e a guia personalizada é desinstalada quando Eu removo o suplemento.
fonte
Além da resposta de Roi-Kyi Bryant, este código funciona totalmente no Excel 2010. Pressione ALT + F11 e o editor VBA aparecerá. Clique duas vezes em
ThisWorkbook
no lado esquerdo e cole este código:Não se esqueça de salvar e reabrir a pasta de trabalho. Espero que isto ajude!
fonte
Encontrei dificuldades com a solução de Roi-Kyi Bryant quando vários add-ins tentaram modificar a faixa de opções. Eu também não tenho acesso de administrador em meu computador de trabalho, o que descartou a instalação do
Custom UI Editor
. Portanto, se você estiver no mesmo barco que eu, aqui está um exemplo alternativo para personalizar a faixa de opções usando apenas o Excel. Observe, minha solução deriva do guia da Microsoft ..xlam
arquivosChart Tools.xlam
ePriveleged UDFs.xlam
, para demonstrar como vários suplementos podem interagir com a Faixa de Opções.customUI
e_rels
.customUI
pasta, crie umcustomUI.xml
arquivo. OcustomUI.xml
arquivo detalha como os arquivos do Excel interagem com a faixa de opções. A Parte 2 do guia da Microsoft cobre os elementos docustomUI.xml
arquivo.Meu
customUI.xml
arquivo seChart Tools.xlam
parece com esteMeu
customUI.xml
arquivo sePriveleged UDFs.xlam
parece com este.zip
no nome do arquivo. No meu caso, mudei o nomeChart Tools.xlam
paraChart Tools.xlam.zip
ePrivelged UDFs.xlam
paraPriveleged UDFs.xlam.zip
..zip
arquivo e navegue até a_rels
pasta. Copie o.rels
arquivo para a_rels
pasta criada na Etapa 3. Edite cada.rels
arquivo com um editor de texto. Do guia da MicrosoftMeu
.rels
arquivo seChart Tools.xlam
parece com esteMeu
.rels
arquivo sePriveleged UDFs
parece com este..rels
arquivos em cada.zip
arquivo pelo (s).rels
arquivo (s) que você modificou na etapa anterior..customUI
pasta que você criou no diretório inicial dos.zip
arquivos / arquivos..zip
extensão do arquivo dos arquivos do Excel que você criou ..xlam
arquivos, de volta ao Excel, adicione-os aos suplementos do Excel.onAction
palavras-chave em meus botões. AonAction
palavra-chave indica que, quando o elemento que o contém é disparado, o aplicativo Excel irá disparar a sub-rotina entre aspas diretamente após aonAction
palavra - chave. Isso é conhecido como retorno de chamada . Em meus.xlam
arquivos, tenho um módulo chamado,CallBacks
onde incluí minhas sub-rotinas de retorno de chamada.Meu
CallBacks
módulo paraChart Tools.xlam
pareceMeu
CallBacks
módulo paraPriveleged UDFs.xlam
pareceOpção Explícita
Elementos diferentes têm uma assinatura de sub-rotina de retorno de chamada diferente. Para botões, o parâmetro de sub-rotina necessário é
ByRef control As IRibbonControl
. Se você não estiver em conformidade com a assinatura de retorno de chamada exigida, receberá um erro ao compilar seu projeto / projetos VBA. A Parte 3 do guia da Microsoft define todas as assinaturas de retorno de chamada.Aqui está a aparência do meu exemplo acabado
Algumas dicas de fechamento
idQ
-xlmns:
chave e . No meu exemplo, oChart Tools.xlam
ePriveleged UDFs.xlam
ambos têm acesso aos elementos comidQ
's igual ax:chartToolsTab
ex:privelgedUDFsTab
. Para que isso funcione,x:
é necessário, e, defini seu namespace na primeira linha do meucustomUI.xml
arquivo<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
,. A seção Duas maneiras de personalizar a IU do Fluent no guia da Microsoft fornece mais detalhes.isMSO
palavra - chave. A seção Duas maneiras de personalizar a IU do Fluent no guia da Microsoft fornece mais detalhes.fonte
Outra abordagem para isso seria baixar o módulo de classe Open XML gratuito de Jan Karel Pieterse nesta página: Editando elementos em um arquivo OpenXML usando VBA
Com isso adicionado ao seu projeto VBA, você pode descompactar o arquivo Excel, usar o VBA para modificar o XML e, em seguida, usar a classe para compactar novamente os arquivos.
fonte