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, 10:09
(Dieser Beitrag wurde zuletzt bearbeitet: 01.05.2021, 10: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, 10: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