0

我尝试在 VBA 中调用我创建的 R 函数时遇到问题。问题不是来自 VBA 和 R 之间的连接,而是当我的 R 代码必须调用我自己的函数时,程序停止了。为了更清楚,这里是 R 代码:

args = commandArgs(trailingOnly=T)
sink('Y:/Documents/BC10.txt', append=F, type = "output",split=TRUE)
source("Y:/Documents/myfunction.R")
cat('TEST !!')
simul = args[1]
level = args[2]
spd1 = args[3]
spd2 = args[4]
spd3 = args[5]
date_valo = toString(args[6])
swap_rate = args[7]
l1 = 0
u1 = 0.03
rho2 = 0.5
cat('\nparameters are: ', simul,  level, spd1 , spd2, spd3, date_valo, swap_rate)

PV_eq=PV_eq=myfunction(l1,u1,spd1,rho2,simul,level, date_valo, swap_rate)
cat(PV_eq)
sink()

当我运行我的 VBA 代码时,程序在显示文本文件“BC10.txt”中的参数方面做得很好,但它不显示 PV_eq。所以,我认为程序无法调用我的用户定义函数“myfunction”。

有人知道我遇到的问题吗?也许,我必须在我的 VBA 代码(或 R 代码)中添加一些东西,以便 VBA 考虑用户定义的函数?

4

1 回答 1

0

感谢您的回答。

我不认为问题来自我的 R 代码,因为当我在 R 中运行函数“myfuntion”时,它可以工作。

我正在使用 Rexcel 来执行我的 R 代码。这是VBA代码:

子计算_BC()

将 shell 调暗为对象 Set shell = VBA.CreateObject("WScript.Shell") 将 waitTillComplete 调暗为布尔值:waitTillComplete = True 将样式调为整数:样式 = 1 将错误代码调暗为整数 将路径调暗为字符串

Dim simul, level As Variant
Dim spd1, spd2, spd3, swap_rate As Variant
Dim date_valo As String

simul = BC.Range("B6").Value

level = BC.Range("B4").Value

spd1 = BC.Range("B13").Value

spd2 = BC.Range("C13").Value

spd3 = BC.Range("D13").Value

date_valo = BC.Range("B1").Value

swap_rate = BC.Range("B5").Value

path = """" & Cells.Range("RhomeDir") & """ """ & Cells.Range("MyRscript") & """" & " " & simul & " " & level & " " & spd1 & " " & spd2 & " " & spd3 & " " & date_valo & " " & swap_rate

errorCode = shell.Run(路径、样式、waitTillComplete)

结束子

Rmq:我用一个简单的 R 文件测试了这个 VBA 代码,它工作正常。问题出现在我的 R 文件中,调用了我定义的函数。

于 2016-08-18T08:52:09.767 回答