Мне известно о возможном решении сценария оболочки / vbs.
Однако я ищу решение с пакетом library(RDCOMClient).
Я посмотрел:
Некоторые попытки от меня (учитывая Public Sub dss() в ThisOutlookSession) в Outlook:
library(RDCOMClient)
> OutApp <- COMCreate("Outlook.Application")
> oa<-OutApp[["Session"]][["Accounts"]]
> OutApp$dss()
Error in .COM(x, name, ...) :
Cannot locate 0 name(s) dss in COM object (status = -2147352570)
> OutApp$Application$dss()
Error in OutApp$Application$dss :
object of type 'closure' is not subsettable
> OutApp$Run("dss")
Error in .COM(x, name, ...) :
Cannot locate 0 name(s) Run in COM object (status = -2147352570)
Макрос может быть просто:
Public Sub dss()
Dim excApp As Object
Dim excWkb As Object
Dim excWks As Object
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
excWkb.SaveAs "AXX.xlsx"
excWkb.Close
End Sub
Согласно второй ссылке, которую я предоставил, это возможно: stackoverflow.com/questions/5096353/call-outlook-vba-from-ex cel
@TarunLalwani: Я не уверен, что правильно вас понимаю: я столкнулся с той же проблемой, что и опубликовано выше, и не смог запустить макрос Outlook из R через RDCOMClient. Перечисленные попытки у меня тоже не сработали, ...
@TarunLalwani. Я понял. Я сделал правку!
У объекта Outlook.Application нет свойства Visible. Это твой вопрос?
@BigDataScientist, пожалуйста, также обновите версию Outlook, которую вы используете
Для меня это Outlook 2016; @RyanWildry: Свойство Visible мне не актуально. Я просто хочу вызвать запуск макроса Outlook из R через RDCOMClient.
@BigDataScientist Мне было бы интересно посмотреть документацию по этому поводу. Кроме того, ваш вопрос действительно неясен, каков ваш ожидаемый результат. Рассмотрите возможность его пересмотра.





Outlook.Application не имеет видимого свойства, см. Этот пост -> http://www.vbaexpress.com/forum/archive/index.php/t-8287.html
Для отображения внешнего вида вы будете использовать папку или почтовый элемент.
Чтобы отобразить окно Outlook, добавьте приведенный ниже код в макрос dss.
ThisOutlookSession.ActiveExplorer.Display
Также вам нужно будет поместить свой общедоступный макрос «dss» в Outlook ThisOutLookSession, чтобы иметь возможность вызывать его вне Outlook.
Затем попробуйте свой код R таким образом
library(RDCOMClient)
OutApp <- COMCreate("Outlook.Application")
OutApp$Run("dss")
Если ваш макрос предназначен просто для создания книги Excel, почему вы делаете это в Outlook.Application, используйте Excel.Application. Создайте книгу Excel с макросом в модуле и выполните, как показано ниже.
library(RDCOMClient)
#Open a specific workbook in Excel:
xlApp <- COMCreate("Excel.Application")
xlWbk <- xlApp$Workbooks()$Open("C:\\Temp\\macro_template.xlsm")
# this line of code might be necessary if you want to see your spreadsheet:
xlApp[['Visible']] <- TRUE
# Run the macro called "dss":
xlApp$Run("dss")
# Close the workbook and quit the app:
xlWbk$Close(FALSE)
xlApp$Quit()`
Выше немного измененный код от https://stackoverflow.com/a/43222477/5871610
хм, ... прежде всего спасибо за ваши усилия. 1) Выполняется: OutApp$Run("dss") возвращает Error in .COM(x, name, ...) : Cannot locate 0 name(s) Run in COM object (status = -2147352570) , как описано в вопросе. Макрос размещается, как описано в «ThisOutlook ...», и работает правильно, если вызывается в Outlook. Сам макрос является лишь примером. Воспроизведение его в R не было бы вопросом. Спасибо!
os<-OutApp$Session$dss() Попробуйте выполнить процедуру для Outlook.Application.Session, как указано выше.
что возвращает: Error in OutApp$Session$dss : object of type 'closure' is not subsettable. Этот код вам подходит?
As far as I can tell, it's not possible to run macros that are stored in Outlook from other applications. Outlook lacks the Application.Run method that is available in Word and Excel.
Так что оставьте здесь R вне вопроса, я могу заверить, что вы даже не можете выполнить это из самого редактора макросов Outlook, начиная с объекта Application верхнего уровня.
Я перепробовал все возможные комбинации с макросом Outlook, и боюсь, что сейчас это невозможно. Возможно, это было в более старой версии Outlook, например, 2007 года или около того, но не сейчас
Если вы можете заставить это работать в VBScript или Outlook, это будет работать и в R. Но я боюсь, вы не можете заставить его работать нигде
Возможный обходной путь, который вы могли бы сделать, может быть
Вы не можете вызвать Outlook vba из Excel или любого другого приложения