Jenkins通过VBScript和参数化构建构建Excel

时间:2016-06-15 11:21:46

标签: excel vba jenkins vbscript parameters

Changing Excel spreadsheet cells through the usage of Jenkins

我寻求帮助的依据是上面的链接。我已经为此工作了3个月,但仍无法找到解决方案。我希望有人可以帮助我。

我想要实现以下目标:

  1. 获取由值填充的特定Excel工作表单元格。就我而言,字母“Y”(见图1)Image 1
  2. 获取充满字母" Y"的excel表格单元格。通过Jenkins用户界面(参数化构建)的选择(见图2)Image 2
  3. 收到#34; Y"填写Excel表格中的特定单元格。因此,当我选择"输入单元格c3时,如图2所示,我想确保字母" Y"在Excel中的单元格C3内部填充,而不是其他单元格。
  4. 所以基本上当我选择“Testdata A”作为Head并且“cel C3的输入”作为Sub时,我希望将值“Y”写入Excel内的单元格C3中。 目前我设法在名称“输入cel C3”后面加上字母“Y”。我用代码执行此操作:

    if (Head.equals("Testdata A")) {
      return ['Y':'Input for cel C3', 'N':'Input for cel C4', 'S': 'Input for cel C9', 'A':'Input for cel C10']
    }
    

    在我的VBSCript中,我使用代码来通过Jenkins选择的值来填充excel,但是这段代码只是表明单元格C3,c4和C5都需要填充1个给定的参数。所以即使我为c3"选择"输入,所有其他单元格也将被填充。代码是:

    Dim xlApp
    Dim wkBk
    Dim wSheet
    Dim y
    Dim n
    
    Set xlApp = CreateObject("Excel.Application")
    
    xlApp.visible = True 
    Set wkBk =  xlApp.Workbooks.Open("D:\location\of\excelFile\Excel.xlsb")
    Set wSheet = wkBk.WorkSheets("Sheetname")
    
    wSheet.Range("C3").Value =  Wscript.Arguments(0) 
    wSheet.Range("C4").Value = Wscript.Arguments(0)
    wSheet.Range("C5").Value = Wscript.Arguments(0)
    
    wkBk.Save
    

    我使用参数参数调用我的vbscript,如下所示:

    call D:\location\to\script\.vbs %Sub%
    

    男孩/女孩,帮助我,我怎样才能通过Jenkins的选择来填补特定的细胞。

1 个答案:

答案 0 :(得分:0)

基于上面的代码,您似乎需要拆分输入变量并迭代它,如下所示:

Dim xlApp
Dim wkBk
Dim wSheet
Dim iLoop, setVal, setCell, myArguments, tempArray

Set xlApp = CreateObject("Excel.Application")

xlApp.visible = True 
Set wkBk =  xlApp.Workbooks.Open("D:\location\of\excelFile\Excel.xlsb")
Set wSheet = wkBk.WorkSheets("Sheetname")
myArguments = Split(Wscript.Arguments(0), ",") ' myArguments is now an array of the cells to be updated
For iLoop = 0 to UBound(myArguments)
    wSheet.Range(myArguments(iLoop)).Value = "Y" 
Next
wkBk.Save

编辑1:如果您始终设置" Y",则只需将您想要更新的单元格作为逗号分隔的字符串传递,例如"C1,C3,C5"。上面的代码将在传递给脚本的每个单元格中设置Y而不是任何其他单元格。