在程序中如何正确的添加一个EXCEL的SHEET?

daily 2001-07-31 09:44:57
我从EXCEL8.OLB中导出了一个类Worksheets,发现了其中有一个Add函数:
LPDISPATCH Add(const VARIANT& Before, const VARIANT& After, const VARIANT& Count, const VARIANT& Type);,
使用它可以添加上一个SHEET,但添加完之后却总出现非法操作。
我想请问一下这个函数的几个参数都是什么意思?它们的用法是什么?希望大家指点!
...全文
748 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyongyong 2002-03-15
  • 打赏
  • 举报
回复
在开始加
#include"comdef"
然后用
sheets.add(vtMissing,vtMissing,vtMissing,vtMissing)
lbqsv 2001-08-13
  • 打赏
  • 举报
回复
解决了没有?
lbqsv 2001-08-07
  • 打赏
  • 举报
回复
CMyVariant是COleVariant的派生类
daily 2001-08-05
  • 打赏
  • 举报
回复
大家都来关注一下我提的问题可以吗?
daily 2001-08-04
  • 打赏
  • 举报
回复
能再给一些提示吗?
daily 2001-08-04
  • 打赏
  • 举报
回复
TO:lbqsv(vc_lover)
请问你的代码当中的CMyVariant是COleVariant的派生类吗?另外这些代码在运行时出现的是类ADD方法无效?很奇怪。还有什么值得注意的地方吗?有什么例子程序吗?
非常感谢你的提示!
lbqsv 2001-08-03
  • 打赏
  • 举报
回复
_Application excelApp;
excelApp.CreateDispatch("Excel.Application.8");
if(excelApp.m_lpDispatch==NULL)
{
MessageBox("Error create excel application");
return;
}
Workbooks wbs;
wbs.AttachDispatch(excelApp.GetWorkbooks());
_Workbook tempWb,DayWb;
CMyVariant Template;
Template.vt=VT_I2;
Template.iVal=-4167;
DayWb.AttachDispatch(wbs.Add(Template));
Worksheets wss;
wss.AttachDispatch(DayWb.GetWorksheets());
CMyVariant before,after,count,type;
after.vt=VT_DISPATCH;
COleVariant index(1L);
after.pdispVal=wss.GetItem(index);
count.vt=VT_I2;
count.iVal=1;
LPDISPATCH pws1,pws2;
pws1=wss.Add(before,after,count,type);
after.pdispVal->Release();
index.lVal=2L;
after.pdispVal=wss.GetItem(index);
pws2=wss.Add(before,after,count,type);
after.pdispVal->Release();

LPDISPATCH Add(const VARIANT& Before, const VARIANT& After, const VARIANT& Count, const VARIANT& Type);,
before,after 指要插入的worksheet的前面。后面的worksheet,这个位置关系可以在
excel中的下面的tab页上看出来,count指要插入的个数,type可不设。
它们都是Variant变体类型,相当于vb中的变体(实际上vb可能就是这样实现的)
老出错的原因可能是没有这一行
after.pdispVal->Release();
是因为wss.Add(before,after,count,type);内部对after.pdispVal->AddRef()了。


写出来与大家分享,有不对之处欢迎指正。
wangfeng 2001-08-03
  • 打赏
  • 举报
回复
你开心,我开心~~~~
大家今天都有好运气~~~~
daily 2001-08-03
  • 打赏
  • 举报
回复
看了看其中的帮助,但还是不太明白,能提供一下相关的程序代码吗?
ExitWindows 2001-07-31
  • 打赏
  • 举报
回复
up
AlphaOne 2001-07-31
  • 打赏
  • 举报
回复
启动word,工具->宏->visual basic 编辑器
按F2查看所有的对象,
选中某对象后 右键菜单->帮助
daily 2001-07-31
  • 打赏
  • 举报
回复
虚心向大家学习,请大家关注我提的问题
daily 2001-07-31
  • 打赏
  • 举报
回复
再问一个弱智问题:VBA的帮助在哪里能查到?我因为刚开始接触这方面的东西,所以还不是很懂。
AlphaOne 2001-07-31
  • 打赏
  • 举报
回复
可以查查VBA的帮助

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧