Registriert seit: 06.12.2015
Version(en): 2016
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
OT_ret.xlsm (Größe: 14,41 KB / Downloads: 2)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 06.12.2015
Version(en): 2016
Danke,
werde ich gleich morgen testen.
mfg
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
01.05.2021, 09:09
(Dieser Beitrag wurde zuletzt bearbeitet: 01.05.2021, 09:10 von snb .)
A one-liner:
Code:
Sub M_snb()
MsgBox GetObject("J:\Download\OT_ret.xlsm").Application.Run("OT_ret", "snb")
End Sub
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Waraum nicht im VBProject von Outlook ?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(01.05.2021, 09:09) snb schrieb: A one-liner: ...
... den Du auch getestet hast?
Gruß Uwe
Registriert seit: 29.09.2015
Version(en): 2030,5
Registriert seit: 29.09.2015
Version(en): 2030,5
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