Hej, Om du vill att menyerna alltid ska finnas i Excel och inte bara när du kör ditt program bör du titta på COM add-ins: Tackar för svaret även om det inte fullt ut löser mitt problem.Hur påverkar man Office Apps (Excel) permanent och inte bara för den aktuella se
Har följande problem. Jag försöker skriva ett VB .net progam som lägger till menyer till Excel.
Dock stannar menyerna bara för den aktuella sessionen och försvinner när Excel avslutas.
Jag kör:
Windows XP. SP2
Office 2000
Visual Basic .NET 2003 (standard)
Dvs jag använder mig av COM-biblioteken för Office.
Jag har provat med att skapa en excel app med både CreateObject och new Excel.Application men inget hjälper.
Dim xlApp = CreateObject("Excel.Application")
Dim xlApp = new Excel.Application
och därefter manipulerat menyn med:
Dim cpopup As CommandBarPopup
cpopup = xlApp.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
cpopup.Caption = "&Mitt Program"
Menyerna syns jätte fint och allting tills det att jag avslutar Excel
xlApp.Quit()
xlApp = Nothing
När jag sedan startar Excel igen så finns inte menyerna kvar.
Jag försökte kringgå detta med att skriva en Excel-fil som gjorde menyskapandet åt mig.
Jag startade sedan filen med:
xlApp.Workbooks.Open("skapa_menyer.xls")
Samma sak åter igen. Menyn finns under den aktuella sessionen, men försvinner så snart man stänger Excel. Jag antar att detta har att göra med att applikationerna körs i något speciellt läge, men kan man kringgå detta på något vis? Jag har försökt att leka runt med UserControl
xlApp.UserControl = true
men det hjälper inte.
Intressant att notera är också att macro kontroll inte görs vid öppnande av Excel-filer. Dvs du får inte upp någon fråga om du vill tillåta macron även om du har säkerhetsnivån på medel eller hög.
Några tips?Sv: Hur påverkar man Office Apps (Excel) permanent och inte bara för den aktuell
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office06062002.aspSv:Hur påverkar man Office Apps (Excel) permanent och inte bara för den aktuell
För det första räcker inte min Visual Basic Standard Edition då den inte innehåller Extensibility Projects. Jag har inte provat att skriva all kod själv så det är mycket möjligt att man kan kompilera en sådan i alla fall.
Problem två är att metoden kräver att COM add-in:en körs varje gång Excel startas och då återskapar menyn. Det får som följd att användarna kan inte byta namn på menyn eller flytta den till en annan position eftersom alla sådana ändringar försvinner vid sessionens slut. Det gör även att om användarna väljer att ta bort menyn kommer den alltid tillbaka (vilket skulle vara väldigt irriterande). Det skulle krävas att de avregistrerade add-in:en manuellt om de vill få bort menyn, vilket är för mycket att kräva av min målgrupp.
Alternativt måste add-in:en läsa av menyändringar då den disconnectar och själv spara inställningarna om var menyn finns eller inte finns. Verkar omständigt.
De add-ins jag skrivit tidigare har aldrig modifierat office appen den kördes i så jag vet inte, den kanske kan göra det permanent. Jag skulle då behöva skriva en COM add-in som jag först registrerar via installationsskriptet. När excel körs första gången efter installation, skapas menyn. Sedan får add-in:en avregistrera sig själv permanent då excel avslutas.
Min begränsade programmeringserfarenhet gör att ovan förda resonomang mycket väl kan vara felaktigt. I så fall får ni gärna påpeka det. För detta verkar vara väldigt omständigt för en så egentligen enkel sak. Måste finnas något enklare sätt.