BCB中怎样使用OLE操作EXCEL中的BarCodeCtrl1控件

njquzhan2010 2012-09-18 10:10:11
各位大虾:
小弟在做一个打印条码的工具软件,功能要求是在软件中输入起始条码字符串例如“abcd123456”和条码个数10,然后将生成的10个条码(128码)通过OLE输出的EXCEL中,我在网上看到有使用MS BarCodeCtrl1控件的,就是在Excel中里有个“控件工具箱”里面有“Microsoft BarCode Control 9.0”用这个控件是可以在Excel中生成条码的,小弟不知道怎样在BCB程序中操作这个控件,从而实现我打印条码的功能,请大虾们指点,谢谢!
...全文
558 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我在BCB里执行下面代码到最后一句时发生意外
sRange.sprintf("%c%ld:%c%ld",'A'+(i%countperrow)*5,lExcelX,'B'+(i%countperrow)*5,lExcelX) ;
ExSheet.OlePropertyGet("Range", sRange.c_str()).OleProcedure("Select");
ExSheet.Ol……
[/Quote]

你先不用瞎写呢,按我说的代码,一步步来。
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
OLE专业户来也!!!
Variant vObj = vExcelApp.OlePropertyGet("ActiveSheet").OleFunction("OLEObjects").OleFunction("Add",
WideString("BARCODE.BarCodeCtrl.1"), // ClassType
WideString(""), // Filename
false, // Link
false, // DisplayAsIcon
WideString(""), // IconFileName
0, // IconIndex
WideString(""), // IconLabel
98.25, // Left
7.5, // Top
127.5, // Width
84.75 // Height
);
vObj.OleProcedure("Select");


大概是这个样子,未测试。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我在BCB里执行下面代码到最后一句时发生意外
sRange.sprintf("%c%ld:%c%ld",'A'+(i%countperrow)*5,lExcelX,'B'+(i%countperrow)*5,lExcelX) ;
ExSheet.OlePropertyGet("Range", sRange.c_str()).OleProcedure("Select");
ExSheet.OlePropertyGet("OLEObjects").OleFunction("Add","ClassType:=""BARCODE.BarCodeCtrl.1""").OleFunction("Select");
我之前没写过加载控件的OLE,不知道是错在哪?
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我就是不知道ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", Link:=False 这个代码怎么在BCB中用OlePropertyGet,OleFunction等等这些命令翻译它
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
Range("B2").Select
Application.CommandBars("Control Toolbox").Visible = True
ActiveWindow.SmallScroll Down:=-6
ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", Link:=False _
, DisplayAsIcon:=False, Left:=98.25, Top:=7.5, Width:=127.5, Height:= _
84.75).Select
Selection.ShapeRange.IncrementLeft -51.75
Selection.ShapeRange.IncrementTop 32.25
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
你在Excel中录制一个宏,然后把宏代码贴上来。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
可能vObj真不是个对象,我按下面的代码试过了,可以改变这两个值了,因为我看到生成的Excel表格中这个控件的名字是“BarCodeCtrl1”,所以我就试了下面的代码
ExSheet.OlePropertyGet("BarCodeCtrl1").OlePropertySet("Style",7);
ExSheet.OlePropertyGet("BarCodeCtrl1").OlePropertySet("Value","abcdef1234567");
好吧,今天受益匪浅,呵呵,等我彻底实现了就结贴啊
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
see不到图,你的硬盘图只有你能看到。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我在Excel里面试过这个控件,就在Excel中工具栏上面点右键,里面有个"控件工具箱",打开工具箱后点击最右面的“其它控件”图标,里面有个Microsoft barcodecontrol 9.0,就是这个控件,在这个大控件里可以看到他的属性
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
你确认vObj是一个 BARCODE.BarCodeCtrl.1 对象么?

如果确认,需要找资料参考一下 BARCODE 类的对象和方法,光猜不行。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
试过了,提示我Style是未知名称,是不是这个Style和Value是控件里面的属性,他获得不了这个属性名呢,还是需要在Style前面加什么
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
vObj.OlePropertySet("Style", 7);
vObj.OlePropertySet("Value", WideString("abcd123456"));

这样试吧。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
这个方法能够把BarCodeCtrl控件加到Excel表中,但还有个问题是,怎么修改条码的值和条码控件里面的属性值呢,我要把控件中的Style属性改为7,然后把属性值Value赋值为“abcd123456”这个样子,录制宏好像录不断宏代码呢

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧