【发布时间】:2021-03-30 11:01:19
【问题描述】:
如何在 OLE 中将以下 VBA 代码转换为 c++ builder?谢谢。
Range("A10:B28").Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$10:$B$28")
ActiveSheet.Shapes("test1").IncrementLeft -288.5293700787
ActiveSheet.Shapes("test1").IncrementTop -39.7059055118
我试过下面的代码,c++ builder在最后一行崩溃
#include <excel_2k.h>
outXL = Variant::CreateObject("excel.application");
outXL.OlePropertySet("Visible", true);
outWorkbooks = outXL.OlePropertyGet("Workbooks");
outWorkbook = outWorkbooks.OleFunction("Open", "D:\\test.xls");
outWorkSheets = outWorkbook.OlePropertyGet("Worksheets");
outActiveSheet = outWorkbook.OlePropertyGet("Worksheets", 0);
outActiveSheet.OlePropertyGet("Activate");
Range=outActiveSheet.OlePropertyGet("Range",
outActiveSheet.OlePropertyGet("Cells",5,1),
outActiveSheet.OlePropertyGet("Cells",20,2));
Chart = outActiveSheet.OlePropertyGet("Shapes").OleFunction("AddChart2");
//=========This line Dump ERROR=========
Chart.OlePropertySet("ChartType",xlXYScatter);
【问题讨论】:
-
究竟以什么方式崩溃?实际的错误信息是什么?
-
在您的 VBA 中,
AddChart2()有两个参数,240和xlXYScatter。在您的 C++ 中,您对AddChart2()的调用只有一个参数,即xlXYScatter。也许那里有什么? -
@JosephWillcoxson 可能吧,不过不知道怎么修改代码,网上的OLE资源不够用。。。
-
@RemyLebeau 显示 Eolesyserror 未声明的标识符
标签: vba c++builder ole