ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VSTO中怎么复制某一特定工作表到新工作簿并另存

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-7 00:40 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 a33030626 于 2018-6-7 08:29 编辑

VSTO中怎么复制某一特定工作表到新工作簿并另存,  哪位大神写一个范例谢谢

VBA 代码如下

Sub 复制报表()
   Dim Sh As Integer
   Dim Th As Workbook, Wb As Workbook
   Dim il As String
   Set Th = ThisWorkbook
   il = Left(Th.Name, InStr(Th.Name, ".") - 1) & "-01" & ".xlsx"    '要另存的工作表名
   Application.ScreenUpdating = False
   Application.DisplayAlerts = False
For Sh = 1 To Sheets.Count
    If Sheets(Sh).Visible = True And Right(Sheets(Sh).Name, 3) = "报表1" Then    '当工作表可见和右边3个字等于报表1

      Th.Sheets(Sh).Copy before:=Sheets(1)       '复制到sheet1前面
       Cells.Copy
       Cells.PasteSpecial Paste:=xlPasteValues      '粘贴成值
       Columns("L:R").Delete                              '删除L:R列
       ActiveSheet.Move                                     '移动到新工作簿
      Set Wb = Workbooks(Workbooks.Count)
      End If
   Next Sh
   Application.ScreenUpdating = True
   Application.DisplayAlerts = True
      Wb.SaveAs Th.Path & "\" & il, FileFormat:=xlWorkbookDefault
End Sub



TA的精华主题

TA的得分主题

发表于 2018-6-7 06:52 | 显示全部楼层
本帖最后由 tswing 于 2018-6-7 06:59 编辑

worksheet.copy,就这一句,worksheet一个工作表对象,执行后将一工作表复制到一个新的工作簿,并激活为当前工作簿。
activeworkbook.saveas ....就是另存为一个工作簿文档了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 08:11 | 显示全部楼层
本帖最后由 a33030626 于 2018-6-7 15:53 编辑
tswing 发表于 2018-6-7 06:52
worksheet.copy,就这一句,worksheet一个工作表对象,执行后将一工作表复制到一个新的工作簿,并激活为当 ...

怎么来确定这个worksheet是你要复制的工作表呢? 直接像VBA一样SHEETS(I).COPY bofor:   这样不行~~~

TA的精华主题

TA的得分主题

发表于 2018-6-7 17:18 | 显示全部楼层
本帖最后由 tswing 于 2018-6-7 17:27 编辑
a33030626 发表于 2018-6-7 08:11
怎么来确定这个worksheet是你要复制的工作表呢? 直接像VBA一样SHEETS(I).COPY bofor:   这样不行~~~

VSTO 好像已经取消了 Sheet 对象,现在工作表对象较常用的就是 worksheets(表名),注意调用对象前要加前缀。
外接程序、文档级程序对 Excel对象调用不太一样,外接程序中大多要用:
xlApp.Excel对象,其中 xApp表示 Excel Application;


而文档级的,还可以用:
Gloabs.Excel对象。
=======================================
定义对象变量,要注意命名空间,应用程序对象(如经常使用的 Excel对象),定义是要加前缀,
召唤,dim myxl as excel.workbook

自己多学习、练习。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 19:13 | 显示全部楼层
tswing 发表于 2018-6-7 17:18
VSTO 好像已经取消了 Sheet 对象,现在工作表对象较常用的就是 worksheets(表名),注意调用对象前要加前 ...

哎,关键是找不到VSTO  VB.NET的教程,找了3天了

TA的精华主题

TA的得分主题

发表于 2018-6-8 08:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
操作和VBA一样: 看代码.
测试环境 win7 64wei office2010 64位 vs2010 64位
项目:文档类VSTO,外接插件也差不多,只是引用对象略有不同。

  1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

  2.         '测试用单元格()
  3.         Dim rng As Excel.Range = Me.Range("a1:e2")
  4.         rng.Value2 = "test"
  5.         '新建工作簿Interop.Excel对象
  6.         Dim newWorkbook As Excel.Workbook = Me.Application.Workbooks.Add()
  7.         '保存名称和路径
  8.         newWorkbook.SaveAs("newtast.xlsx")

  9.         '宣告工作表变量,引用目标工作表
  10.         Dim newsheet As Microsoft.Office.Interop.Excel.Worksheet = newWorkbook.Worksheets("sheet1")

  11.         '复制本工作表到目标工作表()
  12.         rng.Copy(newsheet.Range("a1"))

  13.         newWorkbook.Close(True)

  14.     End Sub
  15. End Class
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-9 15:51 | 显示全部楼层
lipton 发表于 2018-6-8 08:24
操作和VBA一样: 看代码.
测试环境 win7 64wei office2010 64位 vs2010 64位
项目:文档类VSTO,外接插件 ...

可以直接me. 的啊~~   我找到的都是先定位application  然后定位activebook,在定位activesheet

很有参考价值,晚上回去试试
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 17:41 , Processed in 0.031379 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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