明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1764|回复: 9

[源码] 希望在当前xls中复制某个 sheet,应该怎么做

[复制链接]
发表于 2013-4-8 05:26:59 | 显示全部楼层 |阅读模式
只知道如何新增工作表
但那只是一个空白的工作表
我希望的是将一个工作表完全复制
就好像excel菜单中的“移动或复制工作表”
查了很久没找到
有谁知道吗
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-4-10 11:23:31 | 显示全部楼层
masterlong 发表于 2013-4-10 01:06
G斑真是牛得一塌糊涂啊
还有两个问题再请教一下

;;复制Excel整个表单示例代码:By Gu_xl
  1. (defun c:tt (/ XLSFILE XLAPP SH1 SHEETS I FLAG SH2)
  2.   (cond
  3.     ((not
  4.        (setq xlsfile (getfiled "打开Excel文件" "test.xls" "xls" 4))
  5.        )
  6.      )
  7.     ((VL-CATCH-ALL-ERROR-P
  8.        (setq xlapp (VL-CATCH-ALL-APPLY
  9.                      'vlax-get-or-create-object
  10.                      (list "Excel.Application")
  11.                      )
  12.              )
  13.        )
  14.      (alert "不能创建EXCEL应用程序")
  15.      )
  16.     (t
  17.      (vlax-invoke-method
  18.        (vlax-get-property xlapp 'WorkBooks)
  19.        'Open
  20.        xlsfile
  21.        )
  22.      (if (not
  23.            (VL-CATCH-ALL-ERROR-P
  24.              (setq sh1
  25.                     (VL-CATCH-ALL-APPLY
  26.                       'vlax-get-property
  27.                       (list
  28.                         (setq sheets
  29.                                (vlax-get-property Xlapp "sheets")
  30.                               )
  31.                         'item
  32.                         "Sheet1" ;_ 要复制的表单,具体名称可自己修改
  33.                         )

  34.                       )
  35.                    )
  36.              )
  37.            )
  38.        (progn
  39.          ;;复制整个表单内容
  40.          (vlax-invoke-method sh1 'copy sh1)
  41.          (setq i 0
  42.                flag t
  43.                )
  44.          (vlax-for sh sheets
  45.            (if flag
  46.              (if (equal sh sh1)
  47.                (setq flag nil)
  48.                (setq i (1+ i))
  49.                )
  50.              )
  51.            )
  52.          (setq sh2 (vlax-get-property sheets 'item i)) ;_ 取得复制后的表单
  53.          (vlax-put-property sh2 'name "NewSheetAA") ;_ 修改复制后的表单名称
  54.          )
  55.        )
  56.      (vlax-invoke-method
  57.        (vlax-get-property Xlapp "ActiveWorkbook")
  58.        "Save"
  59.        ) ;_ 存盘
  60.      (vla-put-visible xlapp 1) ;_ 显示Excel
  61.      (vlax-release-object Xlapp) ;_ 释放内存
  62.      )
  63.     )
  64.   (princ)
  65.   )
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-4-8 05:47:38 | 显示全部楼层
这是找到的一些资料

【1】
应用于 Chart、Charts、Sheets、Worksheet 和 Worksheets 对象的 Copy 方法。

将指定工作表复制到工作簿的另一位置。

expression.Copy(Before, After)

expression      必需。该表达式返回上面的对象之一。

Before      Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之前。如果已经指定了 After,则不能指定 Before。

After      Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之后。如果已经指定了 Before,则不能指定 After。


【2】
应用于 Chart、Charts、Sheets、Worksheet 和 Worksheets 对象的 Copy 方法。

本示例复制工作表 Sheet1,并将其放置在工作表 Sheet3 之后。

Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")


然后就不知道该怎么做了

 楼主| 发表于 2013-4-9 12:03:40 | 显示全部楼层
顶一下

附vlxls函数集中新增页的代码

;0·新增页
;|
Examples:
(vlxls-sheet-add *xlapp* "Sheet1")  ==>  T
(vlxls-sheet-add *xlapp* NIL)  ==>  T
(vlxls-sheet-add *xlapp* "NewSheet")  ==>  NIL
|;
(defun vlxls-sheet-add (xlapp Name / Rtn)
   (if (member name (vlxls-sheet-get-all xlapp))
      (setq Rtn nil)
      (progn
         (vlax-put-property
            (vlax-invoke-method
               (vlax-get-property Xlapp "sheets" )
               "Add"
            )
            "name"
            Name
         )
         (setq Rtn (equal (vlxls-sheet-get-active xlapp) name))
      )
   )
   Rtn
)

感觉复制页是可以实现的
试了很久没有结果
其实如果只是需要被复制页中的单元数值
可以旧页取值新建页中赋值
这都不是问题
但是旧页里有公式啊
发表于 2013-4-9 15:44:21 | 显示全部楼层
复制Excel的表单代码示例 如下:
游客,本帖隐藏的内容需要发帖数高于 10 才可浏览,你当前发帖数只有 0

评分

参与人数 1明经币 +1 收起 理由
masterlong + 1 G版真是牛啊

查看全部评分

发表于 2013-4-9 16:33:21 | 显示全部楼层
其实用一楼的excel vba代码,再翻译一下,基本就可以实现了

点评

问题就在于我对"面对对象"毫无概念,就连VLISP的那些扩展函数,对我来说基本上算天书,完全不知道如何下手啊。  发表于 2013-4-10 01:12
 楼主| 发表于 2013-4-10 01:06:53 | 显示全部楼层
Gu_xl 发表于 2013-4-9 15:44
复制Excel的表单代码示例 如下:

[/post]

G斑真是牛得一塌糊涂啊
还有两个问题再请教一下

1.
页面复制完成后
该页面处于一个全选状态
能不能让选择的区域只位于"A1"单元格?

2.
要复制的页面内含有图片
示例代码不能连图片一同复制
这个有办法解决吗?
发表于 2020-11-9 23:01:31 | 显示全部楼层
版主真的是厉害
发表于 2020-11-9 23:01:43 | 显示全部楼层
太猛了 无法言喻
发表于 2021-12-5 15:33:19 | 显示全部楼层
楼主你好我没看懂是要做什么用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:37 , Processed in 0.303571 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表