ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 214|回复: 13

[求助] 请教如何把工作表复制到新工作簿

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-19 08:47 | 显示全部楼层 |阅读模式
本帖最后由 孙森峰 于 2024-12-21 07:06 编辑

请教大神:

我用
sh = Sheets("Sheet1");
sh.Copy(undefined, undefined);
想要复制到新工作簿总是崩溃,请问怎么复制?


非常感谢老师们热心帮助和指导,问题基本解决:
将命令放在菜单第一层,能够顺利执行。放到需要展开后点击的菜单中会崩溃,不知什么原因。
这让我想起了在LibreOffice中运行SA = Sheets(ArraySheets).Select()来。这个语句放在单独的过程中运行正确,但是,放到窗体中的命令按钮中却出现错误。可能是不同的函数有运行的权限,有待进一步搞明白。
也请大神们留言解惑。

TA的精华主题

TA的得分主题

发表于 2024-12-19 09:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sheets("Sheet1").Copy(null, wb.Sheets.Item(wb.Sheets.Count))

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-19 11:35 | 显示全部楼层
老师,还是崩溃
                var wb = Workbooks.Add();
                ActiveSheet.Copy(null, wb.Sheets.Item(wb.Sheets.Count));

TA的精华主题

TA的得分主题

发表于 2024-12-19 11:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-12-19 13:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Snipaste_2024-12-19_13-48-02.png

TA的精华主题

TA的得分主题

发表于 2024-12-19 13:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-12-19 14:43 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-19 16:04 | 显示全部楼层
一江春水1688老师,
我需要将其它非当前表复制
        var sh = Sheets(OutputStr);
        sh.Activate();
        var wb = Workbooks.Add();
        sh.Copy(null, wb.Sheets(wb.Sheets.Count));
还是崩溃

TA的精华主题

TA的得分主题

发表于 2024-12-19 17:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
孙森峰 发表于 2024-12-19 16:04
一江春水1688老师,
我需要将其它非当前表复制
        var sh = Sheets(OutputStr);

非当前表复制,无非就是通过表名引用:Sheets(name)
三段代码,我都测试过,没有问题。把有问题的附件传上来看看。
不太可能是wps出问题了吧?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-20 15:43 | 显示全部楼层
本帖最后由 孙森峰 于 2024-12-20 16:20 编辑

一江春水1688老师
我发现了出问题的关键问题:在IDE中运行宏没有问题,但在菜单中用菜单调用就崩溃


大多数情况下,第一次没有问题,第二次执行就完蛋
以下为代码

function OutputOrder(){
//如果是订单明细表
        if(ActiveSheet.Range(OrderEntryFlagCellStr).Value2 == OrderEntryItemsStr){        
                var outputOrder = createOrder();       
                MsgBox("Output Order Customer: "+outputOrder.customer);
                const outputSheet=Sheets(OutputStr);
                outputSheet.Range("A2").Value2 = outputOrder.customer;

        var sh = Sheets(OutputStr);
        sh.Activate();
        var wb = Workbooks.Add();
        sh.Copy(null, wb.Sheets(wb.Sheets.Count));
               
        }
}


捕获.JPG
捕获1.JPG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 03:02 , Processed in 0.044739 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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