ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 利用VBA对话框制作新建文件向导

利用VBA对话框制作新建文件向导

作者:绿色风 分类: 时间:2022-08-18 浏览:127
楼主
amulee
利用VBA中的对话框其实可以实现很多功能。
以下代码为创建文件的向导。注意循环语句和InputBox结合的用法,可以避免用户输入错误的数据。

  1. Sub 开始()
  2.     Dim ShtCount
  3.     Dim Wbk As Workbook
  4.     Dim ShtTemp
  5.     Dim Pass
  6.     Dim FName
  7.     Dim RngBT As Range
  8.     On Error Resume Next
  9.     If MsgBox("本程序用来创建工作簿。是否继续?", vbYesNo) = vbYes Then
  10.         '获取工作表数量
  11.         ShtCount = Application.InputBox("请输入改工作簿中表格数量", Type:=1)
  12.         Do While ShtCount < 1 Or ShtCount > 10      '点击取消之后False是小于1的,这样判断条件就可以合并了
  13.             If VarType(ShtCount) = vbBoolean Then   '这个判断用于判断是否取消,在动画里面没有要求。
  14.                 MsgBox "您未输入数量"
  15.             Else
  16.                 If ShtCount < 1 Then    '如果小于1
  17.                     MsgBox "您的输入小于1。您应该至少创建一个工作表。"
  18.                 Else                    '其他的当然就是大于10的情况
  19.                     MsgBox "您的输入大于10。本程序最多只能创建10个工作表。"
  20.                 End If
  21.             End If
  22.             ShtCount = Application.InputBox("请再次输入改工作簿中表格数量", Type:=1)
  23.         Loop
  24.         '获取表头
  25.         If MsgBox("是否创建表头?", vbYesNo) = vbYes Then
  26.             Set RngBT = Application.InputBox("请选择表头区域", Type:=8)
  27.             Do While Err.Number <> 0
  28.                 Err.Clear   '清除错误
  29.                 Set RngBT = Application.InputBox("您未选择 !请重新选择表头区域", Type:=8)
  30.             Loop
  31.         End If
  32.         '创建密码
  33.         If MsgBox("是否创建密码?", vbYesNo) = vbYes Then
  34.             Pass = Application.InputBox("请输入密码", Type:=2)
  35.             Do While Pass = False Or Pass = ""
  36.                 Pass = Application.InputBox("密码不能为空!请重新输入!", Type:=2)
  37.             Loop
  38.         End If
  39.         '选择保存路径
  40.         FName = Application.GetSaveAsFilename("新文件", "Excel,*.xls", , "输出文件")
  41.         Do While FName = False
  42.             FName = Application.GetSaveAsFilename("新文件", "Excel,*.xls", , "输出文件")
  43.         Loop
  44.         '接下来进行创建工作表和保存工作表的操作
  45.         
  46.         Application.ScreenUpdating = False
  47.         '先记录原创建工作簿工作表的数量
  48.         ShtTemp = Application.SheetsInNewWorkbook
  49.         
  50.         '设定新的数量
  51.         Application.SheetsInNewWorkbook = ShtCount
  52.         
  53.         '新建工作簿
  54.         Set Wbk = Workbooks.Add
  55.         
  56.         '恢复原数量
  57.         Application.SheetsInNewWorkbook = ShtTemp
  58.         
  59.         '如果有表头则创建表头
  60.         If Not RngBT Is Nothing Then
  61.             RngBT.Copy Wbk.Worksheets(1).Range("A1")
  62.             Wbk.Worksheets.FillAcrossSheets Wbk.Worksheets(1).UsedRange, xlFillWithAll
  63.         End If
  64.         
  65.         '如果有密码就创建密码
  66.         If Pass <> "" Then
  67.             Wbk.Password = Pass
  68.         End If
  69.         
  70.         '保存工作簿
  71.         Wbk.Close True, FName
  72.         Application.ScreenUpdating = True
  73.     End If
  74. End Sub



创建向导.rar
2楼
亡者天下
这个有什么应用啊?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap