Excel模板:以批处理模式导入CSV

时间:2014-10-27 11:37:27

标签: excel csv excel-formula excel-2007 excel-2010

我需要创建一个模板(MS Excel),用于在Excel中导入CSV数据(错误日志)。

  1. 我设置了条件格式,如果调用值大于0,单元格颜色必须自动更改为RED,而对于value = 0,单元格颜色必须为绿色。

  2. 我将文件保存为Excel模板。

  3. 现在我想在批处理模式下将CSV数据导入从上面的模板创建的新XLSX文档(带条件格式),并自动保护结果。

  4. 我正在使用以下命令:

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

    该命令不是将数据加载到从ABFTest.xltx模板创建的新Excel文档中,而是打开两个Excel文件,一个包含CSV数据,另一个文件是从模板创建的。

    这个问题有解决办法吗?

1 个答案:

答案 0 :(得分: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