2012-04-20 3 views
0

У меня есть форма, в форме у меня есть объект (рабочий лист), в котором есть файл excel. Затем у меня есть кнопка, которая будет вычислять сумму поля на листе и отображает его сумму в поле формы. Как это сделать? Идея заключается в том, как этотВычислить сумму ячеек в excel с помощью lotusscript

TotalR = SUM (A2: A51)

doc.total = TotalR

ответ

2

Если вы делаете это в форме, которая будет использоваться с клиентом Notes и машиной при запуске клиента Notes есть Excel, тогда вы можете использовать VBA. Просто извлеките файл на жесткий диск пользователя, откройте его с помощью Excel, добавьте ячейку в нижней части столбца и поместите туда функцию SUM(), получите значение новой ячейки, обновите поле в UIDOC, а затем удалите temp файл.

Приведенный ниже код предполагает, что у вас есть форма с полем RichText (содержащим файл Excel) под названием «excelfile», поле «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 
Смежные вопросы