挺郁闷的,今天在matlab中使用notebook,想着在office中间直接使用公式计算并做笔记,但是在matlab中打notebook,结果在word里显示无法加载VBE6EXT.OLB,然后是显示需要在declare中更改ptrSafe之类的...balabala。

  在网上找了很多方法:

  1.说可以直接在office的安装目录下(C:\Program Files (x86)\Common Files\Microsoft Shared\VBA)有VBA6的目录,只要把目录中的VBE6.Dll放在VBA7文件夹下面就可以。

  2.有说的是,根据office安装目录(C:\Program Files (x86)\Microsoft Office\Office15\)下找到STARTUP文件夹,找到里面的一个文件MathType Commands 6 For Word ...这个文件并删除,但是我的安装目录下office15下没有STARTUP这个文件夹,所以这个对我来说也解决不了问题。

  3.也有说“VBE6EXT.OLB 不能被加载”,“内存溢出”,可以使用打开注册表(HKEY_CLASSES_ROOT\TypeLib\{0002E157-0000-0000-C000-000000000046}\5.3\0\win32 ),然后找到对应的数据的目录(C:\Users\Administrator\AppData\Local\Kingsoft\WPS Office\9.1.0.4953\office6\),在Kingsoft下面添加子目录WPS Office\9.1.0.4953\office6\VBE6EXT.OLB

 可能不同的环境会有不同的状况,可以依照自己的电脑情况,分别试一试。

  

  其实按照最后一种方法将注册表打开后,发现这个路径其实是WPS的安装注册路径,所以果断将路径改成了C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA7\VBE6EXT.OLB再启动office,正常使用宏VBA了,

  可以在matlab中敲notebook回车,会自动调到word,在代码编辑区会有很多代码,其中有几行代码是:

1 Private Declare Function WinHelp Lib "USER32.DLL" Alias "WinHelpA" (ByVal hWnd As Integer, ByVal lpHelpFile _
2  As String, ByVal wCmd As Integer, ByVal dwData As String) As Integer
3 Private Declare Function GetActiveWindow Lib "USER32.DLL" () As Integer

 

只要在每段代码的“Private Declare ”后面加上PtrSafe 即可运行!

如下代码:

1 Private Declare PtrSafe Function WinHelp Lib "USER32.DLL" Alias "WinHelpA" (ByVal hWnd As Integer, ByVal lpHelpFile _
2     As String, ByVal wCmd As Integer, ByVal dwData As String) As Integer
3 Private Declare PtrSafe Function GetActiveWindow Lib "USER32.DLL" () As Integer

   也可以在word中,按Alt+F11打开VBA,在TemplateProject(m-book模版)中打开  模块-mwMatlabHelp宏可以看到代码,也可以更改。