2016-06-03 1 views
1

Trotz der Neinsager sind die Windows-APIs verfügbar in:Windows-APIs und das Laden von Bildern in Userforms zur Laufzeit in Office für Mac

Anwendungen: Microsoft Office 2011: Büro: MicrosoftOffice.framework: Microsoftoffice

Ich benutzte diese, um eine Routine zu schreiben, um ein Bild zur Laufzeit in ein Benutzerformular zu laden (YES - zur Laufzeit). Aber ich denke, die Sandbox ein Problem in Office für Excel 2016 2016. Die entsprechende Datei scheint in

Anwendungen werden immer: Microsoft Excel.app:Contents:Frameworks:MicrosoftOffice.framework:MicrosoftOffice

Während ich kann diese Datei mit VBA öffnen die API-Aufrufe sagen, dass diese Datei nicht gefunden wird, obwohl es existiert (und es ist in Excel Sandbox-Bereich).

Zum Beispiel

#If Mac Then 
#If MAC_OFFICE_VERSION >= 15 Then 
'2016 or later 
Private Declare Function GetDC Lib "Applications:Microsoft Excel.app:Contents:Frameworks:MicrosoftOffice.framework:MicrosoftOffice" _ 
(ByVal hWnd As Long) As Long 
#Else 
'2011 
Private Declare Function GetDC Lib "Applications:Microsoft Office 2011:Office:MicrosoftOffice.framework:MicrosoftOffice" _ 
(ByVal hWnd As Long) As Long 
#End If 

Aufruf GetDC in Excel 2011 funktioniert gut, aber im Jahr 2016 heißt es die Datei nicht gefunden wird.

Gibt es eine Möglichkeit, DLLs in Office 2016 aufzurufen?

Wenn dies gelöst werden kann, werde ich jeder meine Routine zum Laden von Bitmap-Dateien in Benutzerformularen zur Laufzeit haben lassen. Mit anderen Worten, es funktioniert gut in Excel 2011, aber nicht Excel 2016.

Danke,

Richard PS. Ich habe versucht, die CALL Excel 4.0 Makro Blatt und es hat auch nicht funktioniert. PPS. Wenn es unmöglich ist, DLLs von Office 2016 für Mac aufzurufen, stelle ich meine erste Problemumgehung für das Laden von Bildern in ein Benutzerformular zur Laufzeit zur Verfügung - modifiziere eine frx-Datei und importiere sie - klobig und langsam, aber es funktioniert. PPPS. Wenn Sie versuchen, mit den Windows-APIs herumzuspielen, haben Sie nichts Wertvolles auf Ihrem Computer geöffnet. Code, der perfekt in Windows funktioniert, kann einen Mac zum Absturz bringen. Nichtsdestoweniger funktionierten API-Aufrufe, die zum Lesen von pointerperpixel usw. verwendet wurden.

fragte zuerst in http://www.vbaexpress.com/forum/showthread.php?56229-Windows-APIs-amp-loading-pictures-into-userforms-at-runtime-in-Office-for-Mac

+0

Sie sollten '/' und 'nicht werden:' 2016. – Rory

Antwort

0

Die hier Wurzel Problem ist, dass Apple HFS auf dem Mac ist veraltet, so Mac Office 2016 nicht mehr verwendet oder unterstützt HFS Pfade. Sie müssen POSIX-Pfade (mit "/" als Verzeichnistrennzeichen) in Mac Office 2016 verwenden. Sie müssen stattdessen jetzt das Format "/ Applications/Microsoft Excel.app/Contents/Frameworks/MicrosoftOffice.framework/MicrosoftOffice" verwenden.

In diesem speziellen Fall ist die Sandbox nicht das Problem. Wenn Sie jedoch Code entwickeln, der eine beliebige externe dll.framework-Datei verwendet, die nicht von Office oder vom Betriebssystem stammt, stört die Sandbox. Es gibt einige dokumentierte Orte zum Installieren von externem Inhalt, die von Sandbox-Berechtigungen unterstützt werden. Lesen Sie http://macadmins.software/docs/UserContentIn2016.pdf für alle Informationen.

Schwieb (Haupt Software Engineer, Apple-Plattform Experiences Group, Microsoft)

+0

Dank Schwieb! :) – Rory

+0

Danke Schwieb für das zweimalige Beantworten dieser Frage http://www.vbaexpress.com/forum/showthread.php?56229-Windows-API-amp-loading-pictures-into-userforms-at-runtime-in-Office- für Mac – RichardWorthington