BAT文件/拾取CSV文件名,然后在EXCEL报告

时间:2017-08-02 07:05:18

标签: excel-vba csv batch-file vbscript cmd

我想制作报告(目前工作正常但有1个例外),需要添加所有 .CSV 文件名进行报告,我坚持使用它。

目前我所做的就是:

  • 创建bat文件,使用%1%2依次从命令行中获取变量。
  • 然后我创建一个VB脚本,从BAT文件中获取变量(+其他一些东西)并在excel中生成报告
  • 工作完美,但我找不到选择.csv文件名并将其粘贴到同一报告的方式

我有什么:

call n:\xx\variables.bat %1 %2 %3 %4
cscript.exe "%vbs%" "%Sample1%" "Sample2" "*.csv"

在“* .csv”的位中我需要有CSV文件名,所以我可以使用这个变量将它放到Excel中使用VBS。

关于我在寻找什么的视觉解释:

----------------------------------------------------
-                                                  -
-                                                  -
-                   HERE MY REPORT                 -
-                                                  -
----------------------------------------------------

- CSV FilesPath/FileName1
- CSV FilesPath/FileName2
- CSV FilesPath/FileName3
- CSV FilesPath/FileName4

CSV:

  • CSV文件总是不同
  • 星期一3,星期二到星期五我只收到1份文件
  • 非常罕见我有3个以上
  • 与此作业的其他所有文件夹位于同一文件夹中的CSV文件

EXTRA:

我找到了这个话题: How to read from a text file using VBScript?

如果创建一个包含所有必要文件名的列表,那么它将是一种获取此列表并在VBS中用作变量的方法??? ...

精确解决方案:(AVB的改编版本,但适用于多个文件)

addCell = 6
for each myFile in fso.GetFolder(var1).Files
if fso.GetExtensionName(myFile) = "csv" then
    ws.Cells(addCell,1).Value = myFile.Path ' or do anything else
    addCell=addCell+1
end if
next

2 个答案:

答案 0 :(得分:1)

以下列出文件夹中所有csv文件的方法:

dim FSO, myFile
const myFolder = "your path here"
set FSO = CreateObject("Scripting.FilesystemObject")

for each myFile in FSO.GetFolder(myFolder).Files
    if FSO.GetExtensionName(myFile) = "csv" then
        MsgBox(myFile.Path) ' or do anything else
    end if
next

这个代码,几乎没有变化也适用于VBA(如果你使用它,那么避免后期绑定)

答案 1 :(得分:0)

不确定我理解你的需要,所以这里有一些猜测:

call n:\xx\variables.bat %1 %2 %3 %4
cscript.exe "%vbs%" "%Sample1%" "Sample2" %*

%*表示获取所有参数