51加班,遇到痛苦问题,在线等候朋友

j2eexin 2004-05-02 10:46:38
用vb调用excel,怎么样实现如下功能:
复制已经存在的excel模板中的任意几个sheet,并且生成一个新的excel文件
比如:已经存在excel文档a,里面有很多sheet,现在要新建立一个b.xls,需要将a.xls中的一个或多个指定的sheet复制到b.xls,该怎么办?
谢谢了~!
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoluo4529 2004-05-14
  • 打赏
  • 举报
回复
to lsftest
删除了sheet然后保存肯定会询问的,这不是错误,你的方法可以,但正如你所说的有个问题,而且还有个问题,就是会破坏原模板文件,所以要加xlBook.saved = true xlBook.Close false以不保存对原模板的修改
lsftest 2004-05-13
  • 打赏
  • 举报
回复
用上面的方法可以,出现两次询问是因为重命名保存时要询问,关闭模板文件时也要询问,
====================================
不对,我的代码出现两次询问窗口是问你是否真的要删除sheet2和sheet4。。。
现在有时间,又琢磨一下,可加一个语句就行了:
Application.DisplayAlerts = False
作用是关闭错误信息。。。完整程序如下:

先引用excel 9.0的库。。。
假设你的a.xls中有sheet1—sheet5,你想把sheet1、sheet3、sheet5保存到b.xls中去。。。

Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
'Dim xlsheet As Excel.Worksheet '定义工作表类
Private Sub Command1_Click()
Application.DisplayAlerts = False'就是加了这句
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
Set xlBook = xlApp.Workbooks.Open("c:\a.xls") '打开EXCEL工作簿
With xlBook
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Sheet4").Select
ActiveWindow.SelectedSheets.Delete
ChDir "C:\"
ActiveWorkbook.SaveAs FileName:="C:\b.xls", FileFormat:=xlNormal, Password _
:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:= _
False
End With
xlBook.Close (True) '关闭EXCEL工作簿
xlApp.Quit '关闭EXCEL
Set xlApp = Nothing '释放EXCEL对象
MsgBox "ok"
End Sub

程序应该可以完成楼主的要求了,不过还是有点问题,就是如果你的程序中还有其他vba代码出错,也不会有错误信息。。。。。
jingchu 2004-05-13
  • 打赏
  • 举报
回复
关注
luoluo4529 2004-05-13
  • 打赏
  • 举报
回复
用上面的方法可以,出现两次询问是因为重命名保存时要询问,关闭模板文件时也要询问,最好直接将book中的sheet复制到另一个book中,并且在save as 后一定要加ThisWorkbook.Saved = True,以免破坏模板文件;下面代码是我程序中的一块,你稍加改造与补充即可
sName = ThisWorkbook.Name
Workbooks.Add
sNameNew = ActiveWorkbook.Name
Workbooks(sNameNew).Activate
Workbooks(sName).Worksheets("原sheet").Copy After:=Worksheets("Sheet1")
Workbooks(sNameNew).SaveAs 另一文件名
ThisWorkbook.Saved = True
junwhj 2004-05-02
  • 打赏
  • 举报
回复
录制一个宏,然后看看它的代码。
lsftest 2004-05-02
  • 打赏
  • 举报
回复
先引用excel 9.0的库。。。
假设你的a.xls中有sheet1—sheet5,你想把sheet1、sheet3、sheet5保存到b.xls中去。。。

Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
'Dim xlsheet As Excel.Worksheet '定义工作表类
Private Sub Command1_Click()
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
Set xlBook = xlApp.Workbooks.Open("c:\a.xls") '打开EXCEL工作簿
With xlBook
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Sheet4").Select
ActiveWindow.SelectedSheets.Delete
ChDir "C:\"
ActiveWorkbook.SaveAs FileName:="C:\b.xls", FileFormat:=xlNormal, Password _
:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:= _
False
End With
xlBook.Close (True) '关闭EXCEL工作簿
xlApp.Quit '关闭EXCEL
Set xlApp = Nothing '释放EXCEL对象
MsgBox "ok"
End Sub

但这段代码有个问题,就是会弹出两次询问窗口问你是否真的要删除sheet2和sheet4。。。
晚点如果有时间试试能不能用复制数据的方法。。。。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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