运行一个旧的经典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的服务器上??? : - )
答案 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