2017-08-02 17 views
0

我想生成報告(目前工作正常,有1個例外),需要添加所有文件名.CSV用它。BAT文件/撿起CSV文件名,然後在EXCEL報告中使用

目前,所有我所能夠做到的是:

  • 創建通過使用%1%2,依此類推拿起命令行變量bat文件。
  • 然後,我創建一個VB腳本,它從BAT文件中獲取變量(+其他一些內容),並生成excel中的報告
  • 完美工作,但找不到選擇.csv文件名的方式並將它們粘貼到同一份報告

我有什麼:

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

在說的 「* .csv」 我需要CSV文件名(S)位,這樣我就可以使用這個變量(一個或多個)通過使用VBS將其放到Excel中。

什麼我要找的視覺解讀:

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

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

CSV:

  • CSV文件總是不同的
  • 3日星期一,週二至週五我只接收1個文件
  • 非常罕見我有超過3個
  • CSV fi萊位於同一文件夾中一切這份工作

EXTRA:

我發現這個話題: How to read from a text file using VBScript?

我的是,如果創造出包含所有必需的文件名列表,那麼這將是一種方式,拿起這個名單,並在VBS中使用作爲變量... ...

EXACT SOLUTION:(適應版本的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 
+0

爲什麼用'excel-vba'標記? – UGP

+0

假設這可以在excel-vba中完成(如果這是不可能的,那麼我將刪除這個標籤) –

+0

你只是想拿起這個目錄中的所有'.csv'文件,並組裝一個命令行到傳遞給你的'vba'? – Magoo

回答

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工作,以及(如果你使用它還有避免後期綁定)

+0

ws.Cells(1,1).Value = var2 | ---這是我爲excel報告插入值的方式。什麼將取代??的方式? 「ws.Cells(1,1).Value = myFile.Path」??? –

+0

經過測試,解決方案確實有效,但如果我有2個或更多文件,我該怎麼辦?不知何故,像這樣的「ws.Cells(1(+1),1).Value = myFile.Path」,每下一個文件將被插入下一行。 –

+0

非常感謝您的解決方案。 –

0

不知道我理解你的需求,所以這裏的一些猜測:

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

%*意味着採取一切參數

+0

我不需要所有參數,我只需要文件夾中的CSV文件路徑(帶有文件名)。我可以使用它將這些路徑插入到EXCEL報告中。可能還有其他的工作,我只是假設這可以用我在我的問題中解釋的方式來完成。 –