Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage zu CommandBarsControls

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

25.07.2014, aktualisiert 11:32 Uhr, 1096 Aufrufe, 6 Kommentare

Hallo Forum,
ich habe folgendes Problem:

Ich habe ein VBA-Makro, dass ich nach VB.NET portiere. Dort wird unter anderem für Office 2003 eine Symbolleiste erstellt:
01.
... 
02.
  If Application.Version < "14.0" Then 
03.
    Set objCBar = Application.CommandBars.Add(Name:=mc_CBAR_NAME, Temporary:=True) 
04.
    With objCBar 
05.
      .Visible = True 
06.
      .Position = msoBarTop 
07.
      .Protection = msoBarNoCustomize 
08.
    End With 
09.
    For i = 1 To 6 
10.
      objCBar.Controls.Add Type:=msoControlButton 
11.
      objCBar.Controls(i).Style = msoButtonIcon 
12.
      objCBar.Controls(i).Tag = gc_CBARBTN_TAG & CStr(i) 
13.
      objCBar.Controls(i).Parameter = mc_CBAR_NAME 
14.
    Next 
15.
    Call knopf_zuweisen(objCBar, 1, 6262, "Makro3", "Generierung starten") 
16.
...
In der Zeile mit objCBar.Controls(i).Style = msoButtonIcon erhalte ich jedoch immer eine Fehlermeldung, dass die Style-Eigenschaft nicht gesetzt werden kann. Wie muss ich den Code umschreiben?


Vielen Dank,
M. Born
Mitglied: colinardo
LÖSUNG 25.07.2014, aktualisiert um 11:40 Uhr
Hallo Marco,
da stimmt so einiges nicht, was so in VB.NET nicht funktioniert:
01.
.... 
02.
Dim objCBar As Office.CommandBar = Application.CommandBars.Add(mc_CBAR_NAME, 1 ,False , True) 
03.
With objCBar 
04.
   .Visible = True 
05.
   .Position = Office.MsoBarPosition.msoBarTop 
06.
   .Protection = Microsoft.Office.Core.MsoBarProtection.msoBarNoCustomize 
07.
End With 
08.
For i = 1 To 6 
09.
      Dim button As Office.CommandBarButton = objCBar.Controls.Add(Office.MsoControlType.msoControlButton) 
10.
      With button       
11.
         .Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonIcon 
12.
         .Tag = gc_CBARBTN_TAG & CStr(i) 
13.
         .Parameter = mc_CBAR_NAME 
14.
      End with 
15.
Next 
16.
...
Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
25.07.2014 um 11:28 Uhr
Hallo Uwe,
vielen Dank für Deine erneute Hilfe.

Ich habe Deinen Code verwendet, aber das Makro stoppt direkt nach Aufruf von
01.
Dim objCBar As Office.CommandBar = Application.CommandBars.Add(mc_CBAR_NAME, , , True) 
.

Ich habe direkt danach eine MsgBox eingefügt, die aber schon nicht mehr aufgerufen wird. Setze ich vor den ganzen Block eine Fehlerbehandlung
01.
 On Error GoTo Err_CreateCommandBar 
, dann wird mir ein Fehler angezeigt. Lasse ich diese Zeile weg, kommt keine Exception-Meldung o.ä.

So langsam bin ich hier ziemlich ratlos...

Viele Grüße,
Marco
Bitte warten ..
Mitglied: colinardo
25.07.2014, aktualisiert um 11:42 Uhr
Es kommt hier natürlich sehr darauf an wie du dein Plugin in Visual Studio realisierst welche DLLs du wie eingebunden hast etc. welche Namespaces du importiert hast und und und, das ist leider nicht überall gleich.

Hatte die Parameter der Zeile nachträglich noch etwas abgeändert:
Dim objCBar As Office.CommandBar = Application.CommandBars.Add(mc_CBAR_NAME, 1, False, True) 
Zur Info On Error Goto macht man in VB.Net auch nicht mehr. Hierfür gibt es das Try ..Catch Konstrukt. Und außerdem gibt es noch diverse weitere Unterschiede die zu beachten sind. Ist also ziemlich aussichtslos an einem kleinen Stück deines Codes hier eine Stichhaltige Aussage treffen zu können.

Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
25.07.2014 um 11:59 Uhr
Hallo Uwe,
ich realisiere das ganze in SharpDevelop, nicht in VisualStudio. Ich möchte den Code in einer XLL verwenden. Es sieht danach aus, dass der Bug von NetOffice kommt, da ich folgende Nachricht erhalte, wenn ich statt der On Error Goto ein Try-Catch verwende (On Error war aus dem alten VBA-Code noch drin):

01.
Unable to cast COM object of type 'System.__ComObject' to class type 'NetOffice.OfficeApi.CommandBar'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface. 
02.
   at FKGenDNA.StartUp.mbo_create_ribbon()
Ich werde mal den Entwickler von NetOffice ansprechen, ob dort ein Bug vorliegt.

Vielen Dank nochmal,
Marco
Bitte warten ..
Mitglied: colinardo
25.07.2014, aktualisiert um 12:10 Uhr
kein Bug sondern du darfst hier halt nur die Konstanten und Objekte des NetOffice.OfficeApi verwenden und nicht mit denen des COM-Objektes (welche ich oben verwendet habe) vermischen. D.h. die oben verwendeten Konstanten etc. an das Namensschema der NetOffice-API anpassen, dann sollte es laufen.
Bitte warten ..
Mitglied: MarcoBorn
25.07.2014 um 12:33 Uhr
Ich hatte die Deklarationen und Parameter schon entsprechend angepasst, erhalte aber weiterhin die Fehlermeldung. Mal sehen, was Sebastian auf meine Mail hin antwortet...
Bitte warten ..
Ähnliche Inhalte
Windows 10
Frage zur Cortona
Frage von avitasWindows 101 Kommentar

Lassen sich damit auch Texte in Word diktieren oder geht das nicht, falls ja, was muss ich da einstellen ...

Administrator.de Feedback
Fragen werden nicht angezeigt?
gelöst Frage von LochkartenstanzerAdministrator.de Feedback8 Kommentare

Moin, Mir ist aufgefallen, das in der Ansicht "Neue Fragen" meine beiden Fragen zum feedback nicht angezeigt werden: Bug ...

Backup
Fragen zu VEEAM
gelöst Frage von HenereBackup4 Kommentare

Hallo, nachdem mir VEEAM hier ans Herz gelegt wurde, kann mir doch bestimmt auch jemand ein paar Fragen dazu ...

Windows Installation
Frage zu Softwareverteilungsprogrammen
Frage von 123123Windows Installation16 Kommentare

Hallo zusammen, derzeit sind wir in unserer Firma damit beschäftigt, uns nach verschiedenen Möglichkeiten zur Softwareverteilung in einer Windows-Umgebung ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 9 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 11 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 11 StundenMicrosoft7 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser13 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...