Szukam sposobu na dodanie niestandardowej karty na wstążce programu Excel, która zawierałaby kilka przycisków. Zdarzyło mi się, że niektóre zasoby zajmują się tym za pośrednictwem Google, ale wszystkie wyglądają podejrzanie i oburzająco skomplikowane.
Jaki jest szybki i prosty sposób, aby to zrobić? Chciałbym, aby nowa karta została załadowana, gdy mój VBA zostanie załadowany do programu Excel.
AKTUALIZACJA : Próbowałem tego przykładu stąd, ale w ostatniej instrukcji otrzymałem błąd „wymagany obiekt”:
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
Brzęczeć
źródło
źródło
Odpowiedzi:
AFAIK nie można używać VBA Excel do tworzenia niestandardowej karty na wstążce programu Excel. Możesz jednak ukryć / uczynić widocznym komponent wstążki za pomocą VBA. Ponadto łącze, o którym wspomniałeś powyżej, dotyczy programu MS Project, a nie programu MS Excel.
Tworzę zakładki dla moich aplikacji / dodatków programu Excel za pomocą tego bezpłatnego narzędzia o nazwie Custom UI Editor .
Edycja: aby uwzględnić nową prośbę OP
Instruktaż
Oto krótki samouczek zgodnie z obietnicą:
Po zainstalowaniu niestandardowego edytora interfejsu użytkownika (CUIE) otwórz go, a następnie kliknij Plik | Otwórz i wybierz odpowiedni plik Excel. Upewnij się, że plik Excel jest zamknięty, zanim otworzysz go przez CUIE. Jako przykładu używam zupełnie nowego arkusza.
Kliknij prawym przyciskiem myszy, jak pokazano na poniższym obrazku, i kliknij „Część niestandardowego interfejsu użytkownika pakietu Office 2007”. Wstawi on „customUI.xml”
Dalej Kliknij menu Wstaw | Przykładowy XML | Karta niestandardowa. Zauważysz, że podstawowy kod jest generowany automatycznie. Teraz możesz edytować go zgodnie ze swoimi wymaganiami.
Sprawdźmy kod
label="Custom Tab"
: Zastąp „Karta niestandardowa” nazwą, którą chcesz nadać swojej karcie. Na razie nazwijmy to „Jerome”.Poniższa część dodaje niestandardowy przycisk.
imageMso
: To jest obraz, który będzie wyświetlany na przycisku. W tej chwili zobaczysz „HappyFace”. Możesz pobrać więcej identyfikatorów obrazu tutaj .onAction="Callback"
: „Callback” to nazwa procedury uruchamianej po kliknięciu przycisku.Próbny
W tym celu utwórzmy 2 przyciski i nazwijmy je „JG Button 1” i „JG Button 2”. Zachowajmy radosną buźkę jako obraz pierwszego, a na drugie „Słońce”. Zmieniony kod wygląda teraz następująco:
Usuń cały kod, który został wygenerowany w CUIE, a następnie wklej zamiast niego powyższy kod. Zapisz i zamknij CUIE. Teraz po otwarciu pliku Excel będzie wyglądał tak:
Teraz część kodu. Otwórz edytor VBA, wstaw moduł i wklej ten kod:
Zapisz plik Excela jako plik z obsługą makr. Teraz po kliknięciu buźki lub słońca zobaczysz odpowiednie okno komunikatu:
Mam nadzieję że to pomoże!
źródło
Udało mi się to osiągnąć za pomocą VBA w programie Excel 2013. Żadne specjalne edytory nie są potrzebne. Wszystko, czego potrzebujesz, to edytor kodu Visual Basic, do którego można uzyskać dostęp na karcie Deweloper. Karta Deweloper nie jest domyślnie widoczna, dlatego należy ją włączyć w menu Plik> Opcje> Dostosuj Wstążkę. Na karcie Deweloper kliknij przycisk Visual Basic. Uruchomi się edytor kodu. Kliknij prawym przyciskiem myszy w panelu Eksplorator projektów po lewej stronie. Kliknij menu wstawiania i wybierz moduł. Dodaj obie subskrypcje poniżej do nowego modułu.
Wywołaj subwoofer LoadCustRibbon w otwartej książce Wookbook i wywołaj subwoofer ClearCustRibbon w zdarzeniu Before_Close w pliku kodu ThisWorkbook.
źródło
Walczyłem jak szalony, ale to właściwie jest właściwa odpowiedź. Za to, co jest warte, przegapiłem to:
Nawiasem mówiąc, strona wyjaśniająca to w witrynie Rona jest teraz pod adresem http://www.rondebruin.nl/win/s2/win002.htm
A oto jego przykład, jak włączać / wyłączać przyciski na Wstążce http://www.rondebruin.nl/win/s2/win013.htm
Aby zapoznać się z innymi przykładami wstążek XML, zobacz również http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx
źródło
Odpowiedzi tutaj dotyczą używania niestandardowego edytora interfejsu użytkownika. Spędziłem trochę czasu na tworzeniu interfejsu bez tego wspaniałego programu, więc dokumentuję tutaj rozwiązanie, aby pomóc wszystkim innym zdecydować, czy potrzebują tego niestandardowego edytora interfejsu użytkownika, czy nie.
Natknąłem się na następującą stronę pomocy Microsoft - https://msdn.microsoft.com/en-us/library/office/ff861787.aspx . Pokazuje, jak ręcznie skonfigurować interfejs, ale miałem problemy ze wskazaniem mojego niestandardowego kodu dodatku.
Aby przyciski działały z niestandardowymi makrami, skonfiguruj makro w podrzędnych plikach .xlam tak, aby były wywoływane zgodnie z opisem w tej odpowiedzi SO - Wywołanie makra programu Excel ze wstążki . Zasadniczo musisz dodać parametr „control As IRibbonControl” do dowolnego modułu wskazanego w pliku XML wstążki. Ponadto plik XML wstążki powinien mieć składnię onAction = "myaddin! Mymodule.mysub", aby poprawnie wywoływać moduły załadowane przez dodatek.
Korzystając z tych instrukcji, udało mi się utworzyć dodatek programu Excel (plik .xlam), który ma załadowaną niestandardową kartę, gdy mój VBA jest ładowany do programu Excel wraz z dodatkiem. Przyciski wykonują kod z dodatku, a karta niestandardowa odinstalowuje się, gdy Usuwam dodatek.
źródło
Oprócz odpowiedzi Roi-Kyi Bryant, ten kod w pełni działa w programie Excel 2010. Naciśnij klawisze ALT + F11, a pojawi się edytor VBA. Kliknij dwukrotnie po
ThisWorkbook
lewej stronie, a następnie wklej ten kod:Nie zapomnij zapisać i ponownie otworzyć skoroszytu. Mam nadzieję że to pomoże!
źródło
Napotkałem trudności z rozwiązaniem Roi-Kyi Bryanta, gdy wiele dodatków próbowało zmodyfikować wstążkę. Nie mam też dostępu administratora na moim komputerze roboczym, co wykluczało zainstalowanie
Custom UI Editor
. Jeśli więc jesteś na tej samej łodzi co ja, oto alternatywny przykład dostosowywania wstążki za pomocą tylko programu Excel. Uwaga, moje rozwiązanie pochodzi z przewodnika Microsoft ..xlam
plikiChart Tools.xlam
iPriveleged UDFs.xlam
, aby zademonstrować, jak wiele dodatków może współdziałać ze Wstążką.customUI
i_rels
.customUI
folderze utwórzcustomUI.xml
plik. WcustomUI.xml
pliku jak pliki Excel interakcji z wstążką. Część 2 przewodnika Microsoft obejmuje elementy wcustomUI.xml
pliku.Mój
customUI.xml
plik dlaChart Tools.xlam
wygląda takMój
customUI.xml
plik dlaPriveleged UDFs.xlam
wygląda tak.zip
do jego nazwy. W moim przypadku zmieniłem nazwęChart Tools.xlam
naChart Tools.xlam.zip
iPrivelged UDFs.xlam
naPriveleged UDFs.xlam.zip
..zip
plik i przejdź do_rels
folderu. Skopiuj.rels
plik do_rels
folderu utworzonego w kroku 3. Edytuj każdy.rels
plik za pomocą edytora tekstu. Z przewodnika MicrosoftMój
.rels
plik dlaChart Tools.xlam
wygląda takMój
.rels
plik dlaPriveleged UDFs
wygląda tak..rels
pliki w każdym.zip
pliku.rels
plikiem / plikami zmodyfikowanymi w poprzednim kroku..customUI
folder do katalogu domowego.zip
pliku / plików..zip
rozszerzenie pliku z utworzonych plików programu Excel ..xlam
pliki, z powrotem w programie Excel, dodaj je do dodatków programu Excel.onAction
moje przyciski zawierają słowa kluczowe. SłowoonAction
kluczowe wskazuje, że po uruchomieniu elementu zawierającego aplikacja Excel wyzwoli podprogram w cudzysłowie bezpośrednio poonAction
słowie kluczowym. Nazywa się to oddzwonieniem . W moich.xlam
plikach mam moduł o nazwie, wCallBacks
którym zawarłem podprogramy wywołania zwrotnego.Wygląda
CallBacks
na to mój modułChart Tools.xlam
Wygląda
CallBacks
na to mój modułPriveleged UDFs.xlam
Opcja jawna
Różne elementy mają różne sygnatury podprogramu wywołania zwrotnego. W przypadku przycisków wymagany parametr procedury podrzędnej to
ByRef control As IRibbonControl
. Jeśli nie spełnisz wymaganej sygnatury wywołania zwrotnego, podczas kompilowania projektu / projektów VBA pojawi się błąd. Część 3 przewodnika Microsoft definiuje wszystkie podpisy wywołań zwrotnych.Oto jak wygląda mój gotowy przykład
Kilka wskazówek na zakończenie
idQ
ixlmns:
. W moim przykładzie obaChart Tools.xlam
iPriveleged UDFs.xlam
mają dostęp do elementów zidQ
równymix:chartToolsTab
ix:privelgedUDFsTab
. W tym celu do pracy,x:
wymagane jest, a ja jej nazw zdefiniowane w pierwszej linii mojegocustomUI.xml
pliku<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
. Sekcja Dwa sposoby dostosowywania Fluent UI w przewodniku Microsoft zawiera więcej szczegółów.isMSO
słowa kluczowego. Sekcja Dwa sposoby dostosowywania Fluent UI w przewodniku Microsoft zawiera więcej szczegółów.źródło
Innym podejściem byłoby pobranie bezpłatnego modułu klasy Open XML Jana Karela Pieterse'a z tej strony: Edycja elementów w pliku OpenXML przy użyciu VBA
Po dodaniu tego do projektu VBA możesz rozpakować plik Excel, użyć VBA do zmodyfikowania XML, a następnie użyć klasy, aby ponownie rozpakować pliki.
źródło