Excel在复制WorkSheet时有多种选择,Excel中“move or copy”的功能界面如下图所示:
可以在同一个Workbook中移动,也可以复制到新的Workbook中。而我需要的功能是将Worksheet保存到新的Workbook中,然后将Workbook存成新的文件。
实现代码如下:
int nRetVal = 0;
         //  打开文件,获取激活的 Sheet
         LPDISPATCH lpDisp = NULL;
         COleVariant covTrue((short)TRUE);
    COleVariant covFalse((short)FALSE);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); 
         Range                  oCurCell;
         //  打开文件
         lpDisp = m_oWorkBooks.Open( strFilePath,            //  打开的 Excel 文件路径
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing),
                                                  _variant_t(vtMissing) );
         //  获得活动的 WorkBook(  工作簿  )
         m_oWorkBook.AttachDispatch( lpDisp, TRUE );
         //  获得活动的 WorkSheet(  工作表  )
         m_oWorkSheet.AttachDispatch( m_oWorkBook.GetActiveSheet(), TRUE );
        
         //  将 sheet 保存到临时的 Excel 文件中,然后读取整个文件数据
         CVNEOcommon oCommon;
         CString strTempPath;
         CString strTempFilePath;
         strTempPath = oCommon.getTemporaryPath();
         strTempFilePath = strTempPath + oReportData.m_strTemplateName + _T( ".xls" );
         _Workbook oWorkBook;
         Workbooks oWorkBooks;
         _Worksheet oWorkSheet;
         Worksheets oWorkSheets;
         m_oWorkSheet.Copy( _variant_t(vtMissing), _variant_t(vtMissing) ); //  一个新工作簿
         m_oExcelApp.SetVisible( FALSE );
         oWorkBooks.AttachDispatch( m_oExcelApp.GetWorkbooks(), TRUE );
         oWorkBook.AttachDispatch( oWorkBooks.GetItem( COleVariant(oWorkBooks.GetCount()) ), TRUE );
         oWorkBook.SaveAs( COleVariant( strTempFilePath ),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                0,
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing),
                                                _variant_t(vtMissing) );
         oWorkBook.Close( covOptional, COleVariant( strTempFilePath ), covOptional );
          解析: Worksheet 的 copy 函数的两个参数是移动的位置,在哪个 Worksheet 前,在哪个 Worksheet 后。如果两个参数都不指定,则是复制到新的 Workbook 中,这个新的 Workbook 是所有 Workbook 的最后一个,所以就可以用 oWorkBook.AttachDispatch( oWorkBooks.GetItem( COleVariant(oWorkBooks.GetCount()) ), TRUE ); 来找到。

Excel编程——复制WorkSheet相关推荐

  1. VBA和Python双语对照,Excel编程学习更简单

    Excel VBA和Python双语对照学习 目录 第1章 Excel编程与Python编程概述 1 1.1 关于Excel脚本编程 1 1.1.1 为什么要进行Excel脚本编程 1 1.1.2 选 ...

  2. Excel表格复制粘贴后保持格式不变

    Excel表格复制粘贴后保持格式不变 目录 Excel表格复制粘贴后保持格式不变 方法一:1.点左上角的"倒三角"全选表格,按快捷键"Ctrl+C"复制表格 2 ...

  3. excel中 复制工作表_如何在Excel 2013中轻松移动或复制工作表

    excel中 复制工作表 There may be times when you want to create a new Excel worksheet based on an existing w ...

  4. 替代VBA!用Python轻松实现Excel编程(文末赠书)

    大家好,我是小z,也可以叫我阿粥~ 面向Excel数据处理自动化的脚本编程,目前主要有VBA和Python两种语言可供选择. 从上世纪90年代到目前,VBA一直是Excel脚本编程的主要工具.VBA语 ...

  5. 【JavaScript】实现将从Excel中复制的数据粘贴到WEB页面Grid中

    WEB项目中,我们有时会碰到这样的情况,需要将从Excel中复制的数据粘贴到WEB页面Grid中(当然复制的数据格式与Grid中数据显示格式是一致的),用JS实现起来并不难,重要的是如何准确得到从Ex ...

  6. 计算机表格复制粘贴后不变,excel表格复制粘贴后格式不变

    Excel使用过程中经常需要将一个表格内容复制粘贴到其他表格中去.如果原始表格设置了行高和列宽,选中要复制的区域复制后,当在其他表格选择一个单元格进行粘贴时,行高和列宽就都变了.下面介绍excel表格 ...

  7. sql如何粘贴一列不同的数值_原来Excel的复制粘贴有这么多不为人知的用法

    原创作者: EH看见星光 转自: Excel星球 嗨,大家好,我是星光,今天给大家总结分享的表格技巧是:复制粘贴. 说起复制.粘贴,大概是职场人士最熟悉的两个表格操作动作了,肯定有朋友会想这有什么好分 ...

  8. Excel编程环境搭建

    在MFC中如果需要操作Excel,那么必须得导入Excel库,以及做一些相应的准备工作.下面我就把这些准备工作写下来,希望能帮到大家,也为自己以后的使用更方便. 大概需要做的准备有:1.导入Excel ...

  9. 【Monkey Run】Excel编程 VBA

    Excel编程 VBA 天气如此舒适,装B逐渐减少,所以最近的blog输出一直停滞不前.然而最近一直忙于Excel编程,觉得也有点从0到1的学习创造过程,有必要总结记录下.具体的VBA编程知识可以借鉴 ...

最新文章

  1. exec不同文件l怎么汇总_ABAQUS常见问题汇总 - 2.0版.doc
  2. 部分知名公司的网址 合集
  3. python从入门到精通怎么样-Python从入门到精通:一个月就够了
  4. UVa978 - Lemmings Battle!(优先级队列)
  5. Safari 10默认禁用Flash插件
  6. SEO你所不知道的!!SEO资源人脉才是王道
  7. Nginx笔记-使用Nginx给vue应用设置一个代理
  8. 计算二个日期经过几月又几天
  9. 去中心化稳定币系统Venus Protocol即将推出v2
  10. less 使用小结!笔记!
  11. Java 延时常见的几种方法
  12. “个人云”复兴:智能化成为新趋势
  13. JavaScript实现二级下拉菜单联动
  14. PostgreSQL小数修约
  15. 语义分割系列2-Unet(pytorch实现)
  16. Educational Codeforces Round 118 (Rated for Div. 2) C. Poisoned Dagger(二分或搜索)
  17. win7系统安装高版本的node教程
  18. 小学计算机教研组总结,小学信息技术中心教研组工作总结范文
  19. 讨好型人格,有哪些错误逻辑?
  20. [腾讯会议]接入耳机麦克风无声响

热门文章

  1. 国家商务部点名京品高科,智能售卖系统独角兽成为行业标准
  2. StandFord的parser的调用API
  3. c语言注释(c语言注释可以出现在任何位置)
  4. 尝试debian-9.13.0-amd64下apache和proftpd用openldap整合按组认证笔记之五:apache配置openldap组认证、h5ai、关闭PHP解析
  5. ASCII码表(控制字符和可打印字符)
  6. group sparsity
  7. DMVPN 动态多点隧道技术
  8. c++ 无穷大0x7FFFFFFF+0x7FFFFFFF 是多少
  9. java的3大注释快捷键大全
  10. html5 canvas 画阿迪达斯logo,canvas绘图画出了的美团LOGO