使用vbscript填充预先存在的Excel表单

时间:2016-10-05 15:39:50

标签: sql excel vbscript adodb jscript

运行一个旧的经典ASP网站,到目前为止我已经制作了自己的" Excel"带有HTML的文件,会被发送到我们的会计部门。他们修改了他们希望我们使用的Excel文件,因此我无法使用旧方法。所以我直接连接到excel文件(ADODB),我可以很容易地更新必要的单元格。问题是他们在" form"的底部添加了一些字段,包括一些使用SUM()公式,并在中间留下了34行。我们经常需要更多。

我已经尝试过"插入" sql,并尝试" rs.AddNew",并且这些数据都将数据放入I' m定位范围之下的行中;很公平。但是新文件没有添加到文件中 - 数据会进入下面的行。它不像在Excel中手动插入行,而是向下推动任何下行。有谁知道如何通过ADO / SQL做到这一点?或者这根本不可能?

作为最后的手段,我只需要创建一个额外的文档来保存溢出超过34个条目。

谢谢!

我终于找到了reflects my problem的东西,但它是VBA(我认为):

Const xlDown = -4121

Set objExcel = CreateObject(“Excel.Application”)

objExcel.Visible = True


Set objWorkbook = objExcel.Workbooks.Open(“C:\Scripts\Test.xls”)

Set objWorksheet = objWorkbook.Worksheets(1)


Set objRange = objExcel.Range(“A1”)

objRange.End(xlDown).Activate


intRow = objExcel.ActiveCell.Row

intColumn = objExcel.ActiveCell.Column

Set objRange = objWorksheet.Cells(intRow, intColumn).EntireRow


For i = 1 to 10

    objRange.Insert(xlShiftDown)

Next


For i = 1 to 10

    objExcel.Cells(intRow, 1).Value = i

    intRow = intRow + 1

Next


strFormula = “=SUM(A1:A” & intRow – 1 & “)”

objExcel.Cells(intRow, 1).Formula = strFormula

任何方法使这个工作在VBscript的服务器上??? : - )

1 个答案:

答案 0 :(得分:0)

由于您无法使用ADO执行此操作(您最终会覆盖公式),因此您需要直接访问工作簿。您找到的代码很接近,但下面的代码应该符合您的需求。如果您需要进一步解释,请告诉我?

Option Explicit

Const xlDown = -4121
Const xlUp = -4162

Dim objExcel, objWorkbook, objRange, iLastRow, myRecordCount, numInserts, intLoop

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")
Set objWorksheet = objWorkbook.Worksheets(1) ' refers to first worksheet

iLastRow = objWorksheet.Cells(objWorksheet.Rows.Count, 1).End(xlUp).Row

Set objRange = objWorksheet.Cells(iLastRow, 1).EntireRow

' myRecordCount will need to hold the number of records you have
If myRecordCount > 34 Then 
    numInserts = myRecordCount - 34 ' get the number of rows to be inserted
Else
    numInserts = 0
End If

For intLoop = 1 to numInserts
    ' for as many rows as we need, insert above the formula
    objRange.Insert(xlShiftDown)
Next

' insert your data into the worksheet here

objWorkbook.Save
objWorkbook.Close
objExcel.Quit

' send the file out however you're sending it