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