我正在尝试将Excel工作簿或工作表传递给C ++ DLL。 我目前的方法是使C ++函数类似于以下内容:
int __stdcall myfunction(Excel::_WorksheetPtr dest_pSheet){
//some stuff to edit the worksheet ass:
dest_pSheet->Cells->Item[1][1] = 1;
}
在我的def文件中,我有:
LIBRARY "MyDll"
EXPORTS
test
在Excel中,我发出以下声明并致电:
Private Declare PtrSafe Sub test Lib "PathToDll/My.dll" _
(ByRef destSheet As Worksheet) As Long
Sub CallTest()
test ThisWorkbook.Worksheets("sheetname"))
End Sub
我使用的是Windows 7(64位),Excel和Visual Studio 2010。
编辑:这种方法有时可行,但并不总是
edit2:将(ByVal destSheet As Long)改为(ByRef destSheet As Worksheet)
PD:看到收到的论据,我注意到参数不完全适合。导致读数并不总是正确的。