Excel 关闭文件资源管理器后出错
我创建了一个非常好的vba代码,用于从windows文件资源管理器导入csv文件。但是,当我在打开文件之前关闭资源管理器时,会弹出一个1004错误对话框。它表示找不到刷新外部范围的文本文件。底部的线条应该是原因: 。刷新背景查询:=False 有人知道如何消除这个错误吗Excel 关闭文件资源管理器后出错,excel,excel-2007,vba,Excel,Excel 2007,Vba,我创建了一个非常好的vba代码,用于从windows文件资源管理器导入csv文件。但是,当我在打开文件之前关闭资源管理器时,会弹出一个1004错误对话框。它表示找不到刷新外部范围的文本文件。底部的线条应该是原因: 。刷新背景查询:=False 有人知道如何消除这个错误吗 Dim ClickCount As Integer Sub CommandButton1_Click() Dim sht As Worksheet Dim LastRow As Long Dim begin As Strin
Dim ClickCount As Integer
Sub CommandButton1_Click()
Dim sht As Worksheet
Dim LastRow As Long
Dim begin As String
Dim myInput As Long
ClickCount = ClickCount + 1
If ClickCount > 1 Then GoTo Line1 Else GoTo Line2
Line1:
myInput = MsgBox("Gebruikers zijn reeds geimporteerd. Records worden mogelijk dubbel opgeslagen. Wilt u toch doorgaan met importeren?", vbCritical + vbYesNo, "Import error")
If myInput = vbYes Then
GoTo Line2
Else
Exit Sub
Line2:
Set sht = ActiveSheet
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
begin = "$A" & "$" & LastRow + 1
Dim fileName
fileName = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv),*.csv")
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fileName, _
Destination:=range(begin))
.Name = "User import 1.0"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
End Sub
很高兴看到VBA中导入文件的部分。在这里,您应该添加一个复选框,这样当您不选择任何内容时,就不会使用指向null的
ActiveSheet
。fileName
是完整路径还是仅仅是文件名?如果只是名称,那么如果当前目录发生更改,则可能会失败。@Alfabravo谢谢您的评论。我只是把我用来导入问题下面的文件的全部代码粘贴了起来。我希望这足以让你更好地理解。你指的是哪种支票?我想问题可能是当我没有选择文件时,我的ActiveSheet当前指向null。@谢谢你的评论。fileName是完整路径。但目前我在导入csv文件方面没有任何问题。问题是在选择文件之前关闭文件资源管理器时出错。
Dim fileName
fileName = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv),*.csv")
If fileName = False then Exit Sub