尽管有反对者,但Windows API可在以下位置获得:
应用程序:Microsoft Office 2011:Office:MicrosoftOffice.framework:MicrosoftOffice
我使用它们编写了一个例程,以便在运行时(是的-在运行时)将图片加载到用户表单中。然而,我认为沙箱正在成为Office 2016中的一个问题。Excel 2016的对应文件似乎在
应用程序:微软Excel.app:Contents:Frameworks:MicrosoftOffice.framework:MicrosoftOffice
虽然我可以用VBA打开这个文件,但是API调用表明,即使这个文件存在(并且它在Excel的沙箱区域),也没有找到它。
例如,
#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在Excel2011中调用GetDC可以很好地工作,但在2016年它会说找不到该文件。
有没有办法在Office 2016中调用DLL?
如果这个问题可以解决,那么我将让每个人都可以使用我的例程在运行时加载用户表单中的位图文件。换句话说,它在Excel 2011中运行良好,但不能在Excel 2016中运行。
谢谢,
理查德·普斯。我试着调用excel4.0宏表,它也不起作用。PPS。如果不可能从Office 2016 for Mac调用DLL,那么我将提供在运行时将图片加载到用户表单的初始解决方案-修改frx文件并导入它-笨拙和缓慢,但它可以工作。PPPS。如果您确实在尝试使用Windows,请不要在您的机器上打开任何有价值的东西。在Windows中运行良好的代码可能会导致Mac崩溃。然而,用于读取pointsperpixel等的API调用工作得很好。
在http://www.vbaexpress.com/forum/showthread.php?56229-Windows-APIs-amp-loading-pictures-into-userforms-at-runtime-in-Office-for-Mac中首次被问到
发布于 2016-06-04 00:15:13
这里的根本问题是,Apple已经在Mac上弃用了HFS,因此Mac Office 2016不再使用或支持HFS路径。您必须在Mac Office 2016中使用POSIX路径(目录分隔符为"/“)。您现在需要使用"/Applications/Microsoft Excel.app/Contents/Frameworks/MicrosoftOffice.framework/MicrosoftOffice“”格式。
在这种情况下,沙箱不是问题所在。但是,如果您正在开发的代码使用任何类型的外部dll.framework,而不是来自Office或OS,沙箱将会干扰。有几个有文档记录的地方可以安装受沙箱授权支持的外部内容。有关所有信息,请阅读http://macadmins.software/docs/UserContentIn2016.pdf。
Schwieb (微软Apple Platform Experiences首席软件工程师)
https://stackoverflow.com/questions/37615986
复制相似问题