我要做什么的简短说明:
我遇到的问题的描述:
我创建了以下宏来查找必需的文件,然后提供一个InputBox以便手动输入后缀(报告日期为整数)。这段代码可以完美地工作,并且可以满足我的需要,但是我想消除手动输入后缀的需要,因为该宏将导入15个单独的工作簿。结果,我将不得不输入15次后缀-每个原始.csv文件一次。
class B
如上所述,该宏工作正常,但我必须手动输入后缀。由于原始.csv文件始终下载到计算机上的同一位置,因此我尝试了此代码的各种变体,以消除手动输入后缀的需要。这是我尝试过的新代码:
Dim otherWB As Workbook, ThisWS As Worksheet
Dim sFileName As String
Dim sBase As String
Dim sExt As String
Dim sSuffix As String
Sheets("AJP EGC").Select
Set ThisWS = ActiveSheet
sBase = "/Users/plum/Downloads/AJP EGC "
sExt = ".csv"
sSuffix = InputBox("Enter suffix for filename")
sFileName = sBase & sSuffix & 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
运行此代码时,出现以下运行时错误:
此运行时错误图像显示选择了正确的后缀,并且我已经验证这是要导入的正确文件的确切名称;但是,该错误表明它无法在我的计算机上找到该文件。当我在错误框中选择“调试”时,将转到以下行:
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
单击“调试”后,当我将鼠标悬停在Workbooks.Open FileName:=sFileName
上时,将再次显示正确的文件名,尽管它不包括目录位置...只是文件名。文件没有更改位置,正如我所说,当我运行第一个代码时,我会提示用户手动输入后缀,它会发现文件没有问题。
我还尝试将原始代码中的FileName:=sFileName
更改为sSuffix = InputBox
,这将返回与sSuffix = "*"
代码段相关的相同运行时错误。再次,正确的文件名显示在运行时错误消息中。
我不确定我在这里想念的是什么,感觉好像很痛苦。希望您能提供任何见解。我是VBA的相对菜鸟,为了解决这个问题,已经用尽了Google和此网站的精疲力尽。
答案 0 :(得分:1)
Dir()
函数返回文件的名称及其扩展名类型。
要解决此问题,请尝试:
sFileName = Dir(sBase & "*" & sExt)
sFileName = sBase & sFileName