在我的电脑上(win7系统,办公软件为office2007,以及WPS),在选择文件后,所选择的文件名称无法填写到电子表格。最后对源代码中浏览文件部分进行了一些改动,现在可以正常运行了。
- Sub BrowseDialog() '浏览选择文件
- Dim FilePathName As String
- Dim i As Integer
- Dim PathName
-
- Dim RowNumber As Integer
-
- Range("A3").Activate
- RowNumber = 3
-
-
- PathName = Cells(RowNumber, 1) '讀取第一個路徑的值
-
- '声明一个变量作为一个FileDialog的对象。
- Dim fd As FileDialog
-
- '创建一个FileDialog的对象作为一个文件选择对话框。
- Set fd = Application.FileDialog(msoFileDialogFilePicker)
-
- '声明一个包含路径的变体变量
- Dim vrtSelectedItem As Variant
-
- '使用With...End块引用FileDialog的对象。.
- With fd
- .InitialFileName = Cells(1, 2)
- While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到讀完路徑欄(尋找繼續填寫的位置)
- RowNumber = RowNumber + 1 '下一列
- PathName = Cells(RowNumber, 1)
- Wend '回到>直到讀完路徑欄
- .AllowMultiSelect = True '设置多选
- .Filters.Clear '清理现有类型
- .Filters.Add "SolidWorks", "*.SLDPRT,*.SLDASM,*.SLDDRW" '設定檔案類型
- .Filters.Add "所有文件", "*.*" '設定檔案類型
- .FilterIndex = Cells(1, 1)
-
- '使用Show方法来显示文件选择器对话框并返回用户的操作。
- If .Show = -1 Then
-
- '通过在FileDialog的SelectedItems集合遍历所有文件名。
-
- For Each vrtSelectedItem In .SelectedItems
- 'vrtSelectedItem是一个包含每个选定项目的路径字符串集合。
- FilePathName = vrtSelectedItem '全路径文件名
- FilePath = Left(FilePathName, InStrRev(FilePathName, "")) '分解路径名
- Filename = Right(FilePathName, Len(FilePathName) - Len(FilePath)) '分解文件名
-
- Cells(RowNumber, 1) = FilePath '填寫路徑
- Cells(RowNumber, 2) = Filename '填寫檔案名稱
- Cells(RowNumber, 3) = Filename '填寫檔案名稱
-
- Cells(RowNumber, 1).Interior.Pattern = xlNone '還原儲存格顏色
- Cells(RowNumber, 2).Interior.Pattern = xlNone '還原儲存格顏色
- Cells(RowNumber, 3).Interior.Pattern = xlNone '還原儲存格顏色
-
- RowNumber = RowNumber + 1
- Next vrtSelectedItem '逐一读取文件名称完成
- End If
- End With
- '将对象变量设置为Nothing。
- Set fd = Nothing
-
- End Sub
复制代码
|