【问题标题】:VBA to find all CSV files in a Variable Folder nameVBA 在变量文件夹名称中查找所有 CSV 文件
【发布时间】:2017-03-21 21:30:57
【问题描述】:

我有一个项目来创建 VBA 以查找并打开名为当前月份的文件夹中的所有 CSV 文件。我在网上找到了一些看起来很接近但不完全的东西。它们最终将被转换为 XLSX 文件并进行解析。我有的那部分。转换、解析和保存的宏将被放置在沿相同路径的不同文件中,但不是“深度”。

所以在我的桌面上是一个文件夹名称“CSV 查找测试”。里面有两个文件夹“Feburary”和“March”。我需要它来打开最近一个月的所有 csv 文件。我有其余的语法。 . . . .

我不认为它需要大量的语法。感谢您的任何指导。

Sub OpenFile()

    FileMonth = Month(Date)
    FileDate = Format(Date, "mmmm")
    FilePath = "C:\Users\Me\Desktop\CSV find convert tests\" & FileMonth & "\" & FileDate & ".xls"

    Workbooks.Open Filename:="FilePath" <- - -  - error happens here.

End Sub

【问题讨论】:

  • FilePath 是一个变量,而不是一个字符串。删除双引号。
  • 另外,如果您正在查找 CSV 文件,则您的扩展名是错误的...请参阅此处了解如何遍历文件夹中的所有 CSV 文件:stackoverflow.com/questions/25163369/…
  • 1.使用FileMonth = Format(Date, "mmmm") 获取完整的月份名称。 2. 在尝试打开 CSV 之前使用Debug.Print FilePath 并查看 hte VBE 的即时窗口以确保它是正确的。 3. 同上。
  • 糟糕。很着急。有几个我正在修改的版本,然后在这里复制了最旧的版本。显然应该是“.csv”

标签: vba excel csv


【解决方案1】:

我认为你并不真正理解变量是如何工作的,因为你一直把它放在一个字符串中。如果你把一些东西放在双引号中,它会创建一个字符串。下面是如何通过变量将月份添加到字符串中。

Sub OpenCSVs()
Dim MyFiles As String, ThisMonth As String
Dim startPath As String
ThisMonth = Format(Date, "mmmm")
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\"
MyFiles = Dir(startPath & "*.csv")

Do While MyFiles <> ""

Workbooks.Open startPath & MyFiles

       'Do stuff to it will go here
'ActiveWorkbook.Close SaveChanges:=True (Deactivated for now)

MyFiles = Dir

Loop

End Sub

【讨论】:

  • 哦,我明白了...非常感谢。以上工作完美。
  • 所以我录制了一个宏来解析出 CSV 数据。我正在尝试保存文件并将其转换为 xlsx 格式。我想保留只是一个日期的 CSV 文件名。我在网上找到了各种各样的东西,但似乎都没有。推荐。宏设置文件名。
  • Convert = Dir(startPath & "*.xlsx") 'FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.SaveAs startPath & Convert 不工作。 . . .:/
  • @ScottH 我会创建一个新问题并在那里发布代码部分,以免混淆这两个问题,以防有人来这里查看这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 2016-09-04
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
相关资源
最近更新 更多