Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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)
Antworten Top
#3
Danke,

werde ich gleich morgen testen.

mfg
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#7
Waraum nicht im VBProject von Outlook ?
Zum übersetzen von Excel Formeln:

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

... den Du auch getestet hast? Undecided

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

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten 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
Antworten Top


Gehe zu:


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