【问题标题】:Error after closing file explorer关闭文件资源管理器后出错
【发布时间】:2017-06-23 18:12:37
【问题描述】:

我创建了一个很好的工作 vba 代码,用于从 Windows 文件资源管理器导入 csv 文件。但是,当我在打开文件之前关闭资源管理器时,会弹出一个 1004 错误对话框。它说找不到刷新外部范围的文本文件。底部的线应该是原因:

.Refresh BackgroundQuery:=False

有人知道如何摆脱这个错误吗?

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。
  • @TimWilliams 感谢您的评论。 fileName 是完整路径。但目前我在导入 csv 文件方面没有任何问题。问题是在选择文件之前关闭文件资源管理器时出现错误。

标签: excel excel-2007 vba


【解决方案1】:
Dim fileName
fileName = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv),*.csv")

If fileName = False then Exit Sub

【讨论】:

    猜你喜欢
    • 2020-08-29
    • 1970-01-01
    • 2021-08-16
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多