Excel精英培训网

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

[已解决]请高手讲解一下!

[复制链接]
发表于 2011-6-14 15:30 | 显示全部楼层 |阅读模式

我前几天看到这个VBA,其中    With fd
         If .Show = -1 Then

这句我没看懂,请高手帮忙指点一下!



把多个Excel文件合并到一个Excel文件的多个工作表(Sheet)里
Sub Books2Sheets()
     '定义对话框变量
     Dim fd As FileDialog
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
   
     '新建一个工作簿
     Dim newwb As Workbook
     Set newwb = Workbooks.Add
   
     With fd
         If .Show = -1 Then
             '定义单个文件变量
             Dim vrtSelectedItem As Variant
            
             '定义循环变量
             Dim i As Integer
             i = 1
            
             '开始文件检索
             For Each vrtSelectedItem In .SelectedItems
                 '打开被合并工作簿
                 Dim tempwb As Workbook
                 Set tempwb = Workbooks.Open(vrtSelectedItem)
               
                 '复制工作表
                 tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
               
                 '把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
                 newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
               
                 '关闭被合并工作簿
                 tempwb.Close SaveChanges:=False
               
                 i = i + 1
             Next vrtSelectedItem
         End If
     End With
   
     Set fd = Nothing
End Sub


最佳答案
2011-6-14 17:12
回复 nancy66317 的帖子

Sub SmpFileDialog()
  '声明变量MyfileDialog类型为FileDialog对象
  Dim MyFileDialog As FileDialog
  '为MyFileDialog变量赋值
  Set MyFileDialog = Application.FileDialog(2)
  '判断是否显示文件选取器对话框
  If MyFileDialog.Show = -1 Then
  '使用循环显示选取文件的路径和名称
  For Each vrtSelectedItem In MyFileDialog.SelectedItems
  MsgBox "选择文件的路径:" & vrtSelectedItem
  Next
  End If
  '清空MyFileDialog变量
  Set MyFileDialog = Nothing
End Sub


MsoFileDialogType 枚举


指定 FileDialog 对象的类型。 名称 值 描述
msoFileDialogFilePicker 3 “文件选取器”对话框。
msoFileDialogFolderPicker 4 “文件夹选取器”对话框。
msoFileDialogOpen 1 “打开”对话框。
msoFileDialogSaveAs 2 “另存为”对话框。


  FileDialog.Show 方法

显示文件对话框并返回一个 Long 类型的值,指示用户按下的是“操作”按钮 (-1) 还是“取消”按钮 (0)。在调用 Show 方法时,在用户关闭文件对话框之前不会执行其他代码。在“打开”和“另存为”对话框中,在使用了 Show 方法后会立即使用 Execute 方法执行用户操作。  
发表于 2011-6-14 17:01 | 显示全部楼层
回复 nancy66317 的帖子

If .Show = -1 Then
判断是否显示文件选取的对话框

回复

使用道具 举报

发表于 2011-6-14 17:12 | 显示全部楼层    本楼为最佳答案   
回复 nancy66317 的帖子

Sub SmpFileDialog()
  '声明变量MyfileDialog类型为FileDialog对象
  Dim MyFileDialog As FileDialog
  '为MyFileDialog变量赋值
  Set MyFileDialog = Application.FileDialog(2)
  '判断是否显示文件选取器对话框
  If MyFileDialog.Show = -1 Then
  '使用循环显示选取文件的路径和名称
  For Each vrtSelectedItem In MyFileDialog.SelectedItems
  MsgBox "选择文件的路径:" & vrtSelectedItem
  Next
  End If
  '清空MyFileDialog变量
  Set MyFileDialog = Nothing
End Sub


MsoFileDialogType 枚举


指定 FileDialog 对象的类型。 名称 值 描述
msoFileDialogFilePicker 3 “文件选取器”对话框。
msoFileDialogFolderPicker 4 “文件夹选取器”对话框。
msoFileDialogOpen 1 “打开”对话框。
msoFileDialogSaveAs 2 “另存为”对话框。


  FileDialog.Show 方法

显示文件对话框并返回一个 Long 类型的值,指示用户按下的是“操作”按钮 (-1) 还是“取消”按钮 (0)。在调用 Show 方法时,在用户关闭文件对话框之前不会执行其他代码。在“打开”和“另存为”对话框中,在使用了 Show 方法后会立即使用 Execute 方法执行用户操作。  
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 22:37 , Processed in 0.288640 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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