一个有关Office、Automation、VBA的技术怪问题,真的很难!喜欢挑战的人方可进来!
lpt 2002-06-11 10:20:16 背景
我做了一个OA系统,里面用到了Office处理,能在客户端的浏览器上直接编辑服务器上数据库里文件(指txt,word,excel,...),这个都己经做完了
现在是要做一个OA打印,我现在把数据文件和EXCEL模板文件都下载到了客户端,然后再用我的程序打开这个EXCLE文件,这个EXCEL的VBA会自动读取数据文件(CSV)。现在问题出来了,这种方法在WIN2K、OFFICE2K里可以通过,在(WIN2K、OFFICE97)(WIN98、OFFICE2K)都会出现打不开EXCEL文件的错误,我在VC的打开方试如下:
继承COleDocObjectItem类,在构造函数里用
USES_CONVERSION;
// get storage for the object via virtual function call
m_dwItemNumber = GetNewItemNumber();
GetItemStorage();
// add AfxOleInit(); in CXOfficeApp::InitInstance
AfxOleGetMessageFilter()->EnableNotRespondingDialog(FALSE);
// attempt to create the object
LPOLECLIENTSITE lpClientSite = GetClientSite();
SCODE sc = ::OleCreateFromFile(CLSID_NULL,
T2COLE(filpszPath),// EXCEL文件路径
IID_IUnknown,
OLERENDER_DRAW,
NULL,
lpClientSite,
m_lpStorage,
(LPVOID*)&m_lpObject);
return m_bCreate = FinishCreate(sc) == TRUE;
这样创建OLE对象的
VBA如下:
Workbooks.Open FileName:=sCsvPath // 打开数据文件
...
...
'关闭数据文件
Windows(C_CSV_FILENAME).Activate
ActiveWindow.Close
在VBA里只要打开数据文件,(Office97)就会出错,在Win98里是打的开但读不出数据
说得太多可能牛人们都有点烦了吧,请给一点耐心,谢谢
我的EMAIL是 lptsnow@sohu.com 有什么问题请和我联系,让我们共同进步