Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4224|回复: 18

[已解决]一个“会者不难难者不会”的问题

[复制链接]
发表于 2012-8-9 15:08 | 显示全部楼层 |阅读模式
诸位,请看附件,谢谢

需求说明:1、对于一个不会VBA的人,可以通过点击“拷贝备份到新文件”的按钮,将备份代码自动拷贝到“新文件”中,并建立同样的”备份”按钮
2、新文件通过浏览目录来指定
最佳答案
2012-8-9 22:14
本帖最后由 suye1010 于 2012-8-11 10:47 编辑
  1. Sub AddBackupToFile()
  2.     Dim str As String
  3.     str = "Sub 备份()" & vbCrLf & _
  4.           "Dim wb As Workbook" & vbCrLf & _
  5.           "Set wb = ThisWorkbook" & vbCrLf & _
  6.           "On Error Resume Next" & vbCrLf & _
  7.           "s1$ = ThisWorkbook.FullName '保存当前文件的全路径及名称" & vbCrLf & _
  8.           "Application.DisplayAlerts = False" & vbCrLf & _
  9.           "wb.SaveAs ([a1] & """"& ActiveWindow.Caption)" & vbCrLf & _
  10.           "wb.SaveAs s1" & vbCrLf & _
  11.           "End Sub"
  12.     Dim WK As Workbook
  13.     Application.DisplayAlerts = False
  14.     With Application.FileDialog(msoFileDialogFilePicker)
  15.         .AllowMultiSelect = False
  16.         .Show
  17.         If .SelectedItems.Count = 0 Then Exit Sub '未选择文件
  18.         Set WK = Application.Workbooks.Open(.SelectedItems(1))
  19.     End With
  20.     WK.VBProject.VBComponents("ThisWorkbook").CodeModule.AddFromString (str)
  21.     With WK.Sheets(1).Buttons.Add(500, 10, 30, 18)
  22.         .OnAction = "备份"
  23.         .Characters.Text = "备份"
  24.     End With
  25.     WK.Close True
  26.     Application.DisplayAlerts = True
  27. End Sub
复制代码

测试.zip

133.38 KB, 下载次数: 52

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-8-9 15:50 | 显示全部楼层
对于想来解决问题的人来说,搞不懂楼主的意思是最难的!!
回复

使用道具 举报

 楼主| 发表于 2012-8-9 16:28 | 显示全部楼层
无聊的疯子 发表于 2012-8-9 15:50
对于想来解决问题的人来说,搞不懂楼主的意思是最难的!!

看这样你能明白了吗

测试1.zip

34.21 KB, 下载次数: 38

回复

使用道具 举报

 楼主| 发表于 2012-8-9 19:44 | 显示全部楼层
能不能实现呢?我试图录制一个宏,结果发现,好像宏只能记录工作表中的动作,对于vba编辑器里面的动作无记录啊
回复

使用道具 举报

发表于 2012-8-9 22:14 | 显示全部楼层    本楼为最佳答案   

为保证代码的正确运行,请务必保证选中了 信任对VBA对象的访问

本帖最后由 suye1010 于 2012-8-11 10:47 编辑
  1. Sub AddBackupToFile()
  2.     Dim str As String
  3.     str = "Sub 备份()" & vbCrLf & _
  4.           "Dim wb As Workbook" & vbCrLf & _
  5.           "Set wb = ThisWorkbook" & vbCrLf & _
  6.           "On Error Resume Next" & vbCrLf & _
  7.           "s1$ = ThisWorkbook.FullName '保存当前文件的全路径及名称" & vbCrLf & _
  8.           "Application.DisplayAlerts = False" & vbCrLf & _
  9.           "wb.SaveAs ([a1] & """"& ActiveWindow.Caption)" & vbCrLf & _
  10.           "wb.SaveAs s1" & vbCrLf & _
  11.           "End Sub"
  12.     Dim WK As Workbook
  13.     Application.DisplayAlerts = False
  14.     With Application.FileDialog(msoFileDialogFilePicker)
  15.         .AllowMultiSelect = False
  16.         .Show
  17.         If .SelectedItems.Count = 0 Then Exit Sub '未选择文件
  18.         Set WK = Application.Workbooks.Open(.SelectedItems(1))
  19.     End With
  20.     WK.VBProject.VBComponents("ThisWorkbook").CodeModule.AddFromString (str)
  21.     With WK.Sheets(1).Buttons.Add(500, 10, 30, 18)
  22.         .OnAction = "备份"
  23.         .Characters.Text = "备份"
  24.     End With
  25.     WK.Close True
  26.     Application.DisplayAlerts = True
  27. End Sub
复制代码
Untitled20120810003103.png
回复

使用道具 举报

 楼主| 发表于 2012-8-10 10:23 | 显示全部楼层
suye1010 发表于 2012-8-9 22:14

太牛了,就差一点点了
请帮我再确认下原因并修改下


bug.jpg
回复

使用道具 举报

发表于 2012-8-10 11:34 | 显示全部楼层
如果你想深入学习关于如何用VBA代码来操作VBA Project,可以参考这篇文章

http://wenku.baidu.com/view/e672407b27284b73f2425064.html
回复

使用道具 举报

 楼主| 发表于 2012-8-10 21:11 | 显示全部楼层
suye1010 发表于 2012-8-10 11:34
如果你想深入学习关于如何用VBA代码来操作VBA Project,可以参考这篇文章

http://wenku.baidu.com/view/e ...

  • 感谢你,如果我把代码不放入“模块”中,而是直接放入thisworkbook中,是否只修改下面一句即可?
    WK.VBProject.VBComponents.Add(1).CodeModule.AddFromString (str)
    该怎么修改呢?
  • add(1)中的1能解释一下吗?
回复

使用道具 举报

发表于 2012-8-10 22:08 | 显示全部楼层
对的,修改为WK.vbproject.vbcomponents("Thisworkbook").Codemodule.addfromstring(Str)

Add(1)就是插入一个标准的模块

评分

参与人数 1 +3 收起 理由
ztccsj + 3

查看全部评分

回复

使用道具 举报

发表于 2012-8-11 08:26 | 显示全部楼层
高手过招,我们只有旁观的份{:101:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-1 22:47 , Processed in 0.344791 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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