首页 > 解决方案 > VBA-Excel 导入问题回复:文件名

问题描述

简要说明我正在尝试做的事情:

我遇到的问题描述:

如上所述,这个宏工作正常,但我必须手动输入后缀。我尝试了此代码的变体,以消除手动输入后缀的需要,因为原始 .csv 文件总是下载到我计算机上的同一位置。这是我尝试的新代码:

    Dim otherWB As Workbook, ThisWS As Worksheet
    Dim sFileName As String
    Dim sBase As String
    Dim sExt As String

    Sheets("AJP EGC").Select
    Set ThisWS = ActiveSheet

    sBase = "/Users/plum/Downloads/AJP EGC "
    sExt = ".csv"

    sFileName = Dir(sBase & "*" & sExt)
    Workbooks.Open FileName:=sFileName

    Set otherWB = ActiveWorkbook

    Application.ScreenUpdating = False

    ActiveSheet.Range("A1").CurrentRegion.Copy 
    Destination:=ThisWS.Range("A1")

    otherWB.Close False
    ThisWS.Activate

    Set ThisWS = Nothing
    Set otherWB = Nothing

    Application.ScreenUpdating = True

当我运行此代码时,我收到以下运行时错误:

运行时错误“1004”

此运行时错误图像显示已选择正确的后缀,并且我已验证这是要导入的正确文件的确切名称;但是,该错误表明它无法在我的计算机上找到该文件。当我在错误框中选择“调试”时,它会将我带到以下行:

Workbooks.Open FileName:=sFileName 

单击“调试”后,当我将鼠标悬停在上方时FileName:=sFileName,会再次显示正确的文件名,尽管它不包括目录位置……只是文件名。文件没有改变位置,正如我所说,当我运行我提供的第一个代码提示用户手动输入后缀时,它会毫无问题地找到文件。

我还尝试将sSuffix = InputBox原始代码中的更改为sSuffix = "*"返回与FileName:=sFileName代码段相关的相同运行时错误。同样,正确的文件名显示在运行时错误消息中。

我不确定我在这里错过了什么,并且觉得它必须是非常明显的东西。将不胜感激您能提供的任何见解。我是 VBA 的相对菜鸟,并且已经用尽了谷歌和这个网站来解决这个问题。

标签: excelvba

解决方案


Dir()函数返回文件名及其扩展类型。

要解决此问题,请尝试:

sFileName = Dir(sBase & "*" & sExt)
sFileName = sBase & sFileName

推荐阅读