在VS2005上进行VBA编程是实现文档处理自动化的一种方式,以下是我对VBA开发的一次总结,希望对大家有所帮助:
1. 添加所要操作的MS Office组件文件olb,在“添加新类”中选择“TypeLib中的MFC类”,选择文件为类的来源,找到MS Office的安装文件夹(C:/Program Files/Microsoft Office/OFFICE11/)选择你想操作的项,如MSWORD.OLB
2. 添加完OLB文件之后,显示出其提供的类,按自己需要选择相关的类。不介意文件多,可以全部添加到工程中。
因为在MSWORD.OLB中有一些类与MFC中提供的类有符号冲突的问题。所以我们在导入时添加重命名rename("ExitWindows", "WordExitWindows") rename("FindText", "WordFindText")。在stdafx.h中加入以下代码就可以了,下面代码的意思也就是导入DLL,OLB等操作,在#import的后面要添加rename,这样就不需要在每个导入的.h(CApplication.h….)文件中添加rename了。但是在实际使用的时候还是有一个地方比较特殊,虽然在stdafx.h文件中添加rename("ExitWindows", "WordExitWindows")但是还是有重命名问题,我们需要将CApplication.h中的#import注释掉就OK了。
#define OFFICEXP 1
#define OFFICE2000 2
// Default Settings
#define OFFICE_VER OFFICEXP
#define _M2STR(x) #x
#define M2STR(x) _M2STR(x)
// Ignore hard wired default paths if MSDLL_PATH is
// defined from the command line
#ifndef MSDLL_PATH
// Paths to required MS OFFICE files.
// Make sure these paths are correct for your machine
#pragma message ("Make sure the path to MSO DLL is correct.")
#if OFFICE_VER == OFFICEXP
#define _MSDLL_PATH "C:/Program Files/Common Files/Microsoft Shared/Office11/MSO.DLL"
#elif OFFICE_VER == OFFICE2000
#define _MSDLL_PATH "C:/Program Files/Microsoft Office/Office/MSO9.dll"
#endif
#else
#define _MSDLL_PATH M2STR(MSDLL_PATH)
#endif
//
// Delete the *.tlh files when changing import qualifiers
#import _MSDLL_PATH rename("RGB", "MSRGB") rename("DocumentProperties", "WordDocumentProperties") raw_interfaces_only
#ifdef VBE6EXT_PATH
#import M2STR(VBE6EXT_PATH)
#else
#import "C:/Program Files/Common Files/Microsoft Shared/VBA/VBA6/VBE6EXT.OLB" raw_interfaces_only
#endif
// Ignore hard wired default paths if MSWORDOLB_PATH is
// defined from the command line
#ifndef MSWORDOLB_PATH
#pragma message ("Make sure the path to MSWORD OLB is correct.")
#if OFFICE_VER == OFFICEXP
#define _MSWORDOLB_PATH "C:/Program Files/Microsoft Office/OFFICE11/MSWORD.OLB"
#elif OFFICE_VER == OFFICE2000