Function in anderem WB aufrufen
#1
Hallo,

folgendes Scenario:

- in Worbook 1 gibt es eine Funktion

- Workbook 2 soll diese Funktion aufrufen

Code:
Sub T_1()
Dim WB As Object 'Workbook
Const iWB  As String = "C:\temp\OT_ret.xlsm"
Set WB = GetObject(iWB)

Debug.Print Application.Run("'" & iWB & "'" & "!T_1")                  'error
Debug.Print Application.Run("'" & iWB & "'" & "!OT_Ret", "Hallo") 'error
Debug.Print WB.sheets(1).cells(1, 1) 'ok

wb.Close 0
End Sub

In Excel geht das , aber der Aufruf soll aus Outlook erfolgen.

In Worten: VBA in Outlook soll eine Function in Excel mit Übergabe eines Parameters aufrufen und das Eergebnis erhalten.

Wie geht das?

Vielen Dank

mfg


Angehängte Dateien
.xlsm   OT_ret.xlsm (Größe: 14,41 KB / Downloads: 2)
Top
#2
Hallöchen,

z.B. so
im Outlook
Code:
Sub test()
'Verweis auf Excel setzen
Dim xlApp As Object, xlWB As Workbook, iA As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlWB = xlApp.workbooks.Open("C:\Test\oltest.xlsm")
iA = 1
xlApp.Run "'oltest.xlsm'!Test", iA
xlWB.Close False
MsgBox iA
End Sub

im Excel
Code:
Public Function test(ByRef iZahl As Integer)
iZahl = iZahl + 1
End Function
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Danke,

werde ich gleich morgen testen.

mfg
Top
#4
Hallo Fennek,

mit Deiner Mappe dann z.B. auch so:

Code:
Sub T_1()
  Dim WB As Object 'Workbook
  Const iWB  As String = "C:\temp\OT_ret.xlsm"
  Set WB = CreateObject("Excel.Application").Workbooks.Open(iWB, , True)  'ReadOnly öffnen
  
  WB.Parent.Run "'" & iWB & "'" & "!T_1"                          'ok, aber nicht sichtbar ;-)
  Debug.Print WB.Parent.Run("'" & iWB & "'" & "!OT_Ret", "Hallo") 'ok
  Debug.Print WB.Sheets(1).Cells(1, 1)                            'ok
  
  WB.Close
End Sub

Gruß Uwe
Top
#5
A one-liner:

Code:
Sub M_snb()
  MsgBox GetObject("J:\Download\OT_ret.xlsm").Application.Run("OT_ret", "snb")
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#6
Vielen Dank

Damit kann man in Outlook den Betreff anpassen:

Pseudocode:

Code:
sub Neue_Email() 'Aufruf per Event Application_NewMail()
dim Inbx as Folder
dim EML as Email-Object

set InBx = outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set Itms = Inbx.Items

set EML  = Itms.getLast

eml.Subject = xlApp.Run ("'oltest.xlsm'!Test",eml.Subject)
eml.save
end sub

mfg
Top
#7
Waraum nicht im VBProject von Outlook ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#8
(01.05.2021, 10:09)snb schrieb: A one-liner: ...

... den Du auch getestet hast? Undecided

Gruß Uwe
Top
#9
Natürlich.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#10
Aber, wenn die Datei noch nicht geladen ist:

Code:
Sub M_snb()
  With GetObject("J:\Download\OT_ret.xlsm")
      .Windows(1).Visible = True
      MsgBox .Application.Run("OT_ret", "snb")
  End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste