Jeg skal lave nogle større beregniner i Word, hvor jeg bruger en del af de funktioner der ligger i Excel. Min første tanke er, at åbne Excel fra Word, oprette beregningerne i Excel og så hente resultatet over i Word. Men findes der ikke en bedre måde at gøre det på?
Det er så også det jeg har gjort og det virker i bund og grund perfekt, men det er samtidig lidt tungt, da jeg åbner og lukker Excel flere gange. Jeg tænkte mere hen i retning af, om der evt. fantes en slags beregningsmotor, som jeg blot kunne sætte en reference til og dermed havde en "Excel Light"?
Dette er koden jeg benytter mig af. Når brugeren har dannet sit brev - og i den forbindelse kaldt "Calculate" med en formel - vil jeg jo gerne rydde op, og lukker derfor pænt Excel igen. Næste gang der så skal laves et brev, skal jeg så åbne Excel på ny - og det er den process der virker lidt tung. Men jeg er heller ikke meget for, blot at lade Excel være Excel og ikke rydde op - eller er manuel oprydning bare et levn fra gamle dage? :-)
Function Calculate(ByVal sFormular As String) As Double On Error GoTo Calculate_ERROR
Xls.Cells(1, 1).Formula = "=" & sFormular
Calculate = Xls.Cells(1, 1).Value
Exit Function
Calculate_ERROR:
Select Case Err.Number Case ERR_LEAVE_PROGRAM Err.Raise ERR_LEAVE_PROGRAM Case Else ShowMessageBox 1210, sFormular Err.Raise ERR_CALC_ERROR End Select
End Function
Function Xls() As Excel.Worksheet On Error GoTo Xls_ERROR
If oWkSheet Is Nothing Then Set oExcel = GetObject(, "Excel.Application") Set oWkBook = oExcel.Workbooks.Add Set oWkSheet = oWkBook.ActiveSheet End If
Set Xls = oWkSheet
Exit Function
Xls_ERROR:
Select Case Err.Number Case 429 Set oExcel = CreateObject("Excel.Application") Resume Next Case Else ShowMessageBox 1220, Err.Number, Err.Description Err.Raise ERR_LEAVE_PROGRAM End Select
Beregningerne vil typisk være nogle procentberegninger, beregning af gebyr samt ned- og oprundinger af beløb, før videre beregning. Beregninger jeg tidligere har hardcodet i VBA, men da den slags beregninger altid ændre sig, så vil jeg nu lægge det ud til superbrugerne. De skal så selv danne formlerne, som derefter kan bruges til pensionsberegninger i Wordbreve. For at teste syntaksen i formlerne, og senere beregne dem rigtig, smider jeg dem lige over i Excel og hiver resultatet tilbage. Der findes godt nok en selection.calculate i Word, men den kan ikke dække behovet.
Private Sub CommandButton1_Click() TextBox1 = Evaluate(TextBox1) End Sub
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.