2012-04-20 62 views
0

我有一个窗体,在窗体内我有一个有excel文件的对象(工作表)。 然后我有一个按钮可以计算工作表中字段的总和,并在表单的字段中显示它的总和。我如何编码?我们的想法是这样的使用lotusscript计算Excel中单元格的总和

totalr = SUM(A2:A51)

doc.total = totalr

回答

2

如果你会从Notes客户机和机器使用的形式做这个运行Notes客户端有Excel,那么你可以使用VBA。只需将文件提取到用户的硬盘驱动器,使用Excel打开它,在列底部添加一个单元格,并在其中放入一个SUM()函数,获取该新单元格的值,更新UIDOC中的字段,然后擦除临时文件文件。

下面的代码假定您有一个名为“excelfile”的RichText字段(包含Excel文件)的窗体,名为“Sum”的字段将包含Excel文件中的总和值,以及包含码。此外,该文件必须与附件一起保存才能运行。

希望它有帮助。

Sub Click(Source As Button) 

On Error Goto errorhandler 

Dim s As New NotesSession 
Dim ws As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Set uidoc = ws.CurrentDocument 
Dim doc As NotesDocument 
Set doc = uidoc.Document 
Dim rtitem As NotesRichTextItem 
Dim isfileopen As Boolean 

Dim filename As String, rows As Double, cols As Double, colToSum As String, c As Integer 
Dim xlApp As Variant, xlWorkbook As Variant, xlSheet As Variant, pathname As String 

isfileopen = False 

'convert column letter to number 
colToSum = "A" 
c = Asc(colToSum) - 64 

'extract file 
pathname = s.GetEnvironmentString("Directory", True) & "\" 
Set rtitem = doc.GetFirstItem("excelfile") 
If Not (doc.HasEmbedded) Then 
    Msgbox "There are no file attachments on this document" 
    Goto ExitGracefully 
End If 
Forall o In rtitem.EmbeddedObjects 
    If (o.Type = EMBED_ATTACHMENT) Then 
     filename = pathname & o.Name    
     Call o.ExtractFile(filename)   
    End If 
End Forall 

'open file 
Print "Opening file " & filename & "..." 
Set xlApp = CreateObject("Excel.Application") 
xlApp.Workbooks.Open filename 
isfileopen = True 

'get sheet 
Print "Gathering data ..." 
Set xlWorkBook = xlApp.ActiveWorkbook 
Set xlSheet = xlWorkBook.ActiveSheet 
xlSheet.Cells.SpecialCells(11).Activate 
rows = xlApp.ActiveWindow.ActiveCell.Row 
cols = xlApp.ActiveWindow.ActiveCell.Column 

'add a row and put the sum() formula there 
Print "Computing sum with Excel..." 
xlSheet.Cells(rows+1, c).value = "=SUM(" & colToSum & "1:" & colToSum & Cstr(rows) & ")" 

'update UI doc 
Call uidoc.FieldSetText("Sum", Cstr(xlSheet.Cells(rows+1, c).value)) 

exitgracefully: 

'close excel 
Print "Closing Excel..." 
If Not xlWorkbook Is Nothing Then 
    xlWorkbook.Close False 
End If 
If Not xlApp Is Nothing Then 
    xlApp.DisplayAlerts = False 
    xlApp.Quit 
    Set xlApp = Nothing 
End If 

If isfileopen Then 
    'remove temp file 
    Print "Removing " & filename 
    Kill filename 
End If 

'done 
Print "Done" 

Exit Sub 
errorhandler: 
Msgbox Error & " line " & Erl 
Exit Sub 
End Sub 
相关问题