2014-10-27 64 views
0

我需要創建一個模板(MS Excel),用於在Excel中導入CSV數據(錯誤日誌)。Excel模板:以批處理模式導入CSV

  1. 我已設置的條件格式,如果一個呼叫的值大於0時,單元格顏色,必須自動地改變到RED而對於值= 0,單元格顏色,必須是綠色的。

  2. 我將該文件保存爲Excel模板。

  3. 現在我想將CSV數據導入從上述模板創建的新XLSX文檔(使用條件格式),並以批處理模式自動安全結果。

我使用下面的命令:

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "C:\Work\errors.log" /t "C:\Work\ABFTest.xltx"

而是將數據加載到從ABFTest.xltx模板,命令打開兩個Excel文件,包含CSV之一創建一個新的Excel文件的數據和從模板創建的其他文件。

有沒有辦法解決這個問題?

+1

你有沒有試過條件格式? – pnuts 2014-10-27 11:52:19

+1

@pnuts感謝您的評論,是的,我已經這樣做了,並相應地修改了問題(通過刪除問題的這一部分)。 – 2014-10-27 15:34:49

回答

1

@Mubeen Shahid我根據您的原始請求編寫了下面的代碼片段,因此它現在不會完全滿足您的新條件。如果它沒有用,那麼不管丟掉它。

該代碼將讀取.csv文件並將其格式化爲表1中的單個列。對於此示例,.csv文件被稱爲「NosToCol.csv」,並且您必須提供自己的路徑,因此顯示<>。參數可以在代碼片段中更改以適應。

Sub ReadCSVFile() 

Dim ws As Worksheet 
Dim fName As String, Txt1 As String, tmpvar As String 
Dim fRow As Long, lRow As Long, Rw As Long 
Dim Col As Long, rec As Long 
Dim wrng As Range, cl As Range 
Dim ifnum As Integer 
Dim rearr(), wrarr 

Set ws = Sheets("Sheet1") 
fName = "<<yourpath>>\NosToCol.csv" 
fRow = 2 'Row 2 
Col = 1 'Col A 
Txt1 = "" 
ifnum = 1 

    With ws 
     lRow = .Cells(Rows.Count, Col).End(xlUp).Row 

     'READ DATA FROM FILE 
     Open fName For Input Access Read As #ifnum 
     rec = 0 
      Do While Not EOF(ifnum) 
       Line Input #ifnum, tmpvar 
       rec = rec + 1 
       ReDim Preserve rearr(1 To rec) 
       rearr(rec) = tmpvar 
      Loop 
      Close #ifnum 

     'WRITE DATA TO RANGE 
      For c = 1 To rec 
       wrarr = Split(rearr(c), ",") 
       Set wrng = .Range(.Cells(fRow, Col), .Cells(fRow + UBound(wrarr, 1), Col)) 
       '.Range(.Cells(fRow, Col), .Cells(fRow + UBound(wrarr, 1), Col)).Value = Application.Transpose(wrarr) 
       wrng.Value = Application.Transpose(wrarr) 
       c = c + 1 
        'MODIFY CELL COLOUR 
        For Each cl In wrng 
         If cl = 0 Then cl.Interior.Color = vbRed Else cl.Interior.Color = vbGreen 
        Next cl 
      Next c 
    End With 
End Sub 
+0

非常感謝您的寶貴回覆。我複製並修改了這段代碼。我如何編譯+執行此代碼?我有Visual Studio,但試圖從這段代碼中獲得一個exe文件時,我得到了很多錯誤:(我相信是由於缺乏經驗在我身邊:( – 2014-10-28 11:40:31

+1

這是寫在VBA而不是VB.Net ,它將從Excel工作簿本身運行,在Excel中選擇Developer Tab並點擊Visual Basic按鈕,這將打開IDE,從IDE的Insert菜單中選擇Module,添加一個新的通用代碼模塊。然後點擊IDE工具欄菜單上的小綠色三角形運行它。 – barryleajo 2014-10-28 11:54:54

+0

再次感謝這寶貴的建議!我試圖理解工作原理,並將其擴展/修改爲創建條件格式對於多列(如果可能)。是否有可能在批處理模式下運行此代碼(即,在* .bat腳本中指定VBA代碼文件和CSV,運行* .bat腳本並在某處保存結果)? – 2014-10-28 15:16:36