我想使用按钮将txt文件导入Excel。我有一个对话框来选择文件夹名称并显示用户选择的文件夹的名称。
如果用户选择取消,则由于类型不匹配而发生错误。我已将变量声明为VARIANT
查看代码:
Sub ImportTXTFiles()
Dim fso As Object
Dim xlsheet As Worksheet
Dim qt As QueryTable
Dim txtfilesToOpen As Variant, txtfile As Variant
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
txtfilesToOpen = Application.GetOpenFilename(FileFilter:="Text Files (*.txt), *.txt", _
MultiSelect:=True, Title:="Text Files to Open")
If txtfilesToOpen = "False" Then
Exit Sub
End If
For Each txtfile In txtfilesToOpen
' FINDS EXISTING WORKSHEET
For Each xlsheet In ThisWorkbook.Worksheets
If xlsheet.Name = Replace(fso.GetFileName(txtfile), ".txt", "") Then
xlsheet.Activate
GoTo ImportData
End If
Next xlsheet
' CREATES NEW WORKSHEET IF NOT FOUND
Set xlsheet = ThisWorkbook.Worksheets.Add( _
After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
xlsheet.Name = Replace(fso.GetFileName(txtfile), ".txt", "")
xlsheet.Activate
GoTo ImportData
我的问题是如何在这里处理此异常
If txtfilesToOpen = "False" Then
Exit Sub
End If
如果用户取消选择,而变量被声明为变量。
提前感谢。
也许使用此辅助功能将为您提供帮助:
Option Explicit
Sub Test()
Dim txtfilesToOpen As String
txtfilesToOpen = GetFile
End Sub
Private Function GetFile() As String
Dim fldr As FileDialog
Set fldr = Application.FileDialog(msoFileDialogFilePicker)
With fldr
.Title = "Text Files to Open"
.AllowMultiSelect = False
If .Show <> -1 Then
MsgBox "No file was picked. Please run the macro again."
End
End If
GetFile = .SelectedItems(1)
End With
End Function
如果用户未选择文件,则会弹出MsgBox,警告用户,然后完成整个过程。请注意,此过程一次仅适用于一个选定的项目。如果您需要选择多个文件夹,请考虑使用文件夹选择器。