Clever-Excel-Forum

Normale Version: Function in anderem WB aufrufen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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
Danke,

werde ich gleich morgen testen.

mfg
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
A one-liner:

Code:
Sub M_snb()
  MsgBox GetObject("J:\Download\OT_ret.xlsm").Application.Run("OT_ret", "snb")
End Sub
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
Waraum nicht im VBProject von Outlook ?
(01.05.2021, 09:09)snb schrieb: [ -> ]A one-liner: ...

... den Du auch getestet hast? Undecided

Gruß Uwe
Natürlich.
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
Seiten: 1 2