Excel自动化。 需要从范围中select多个项目

我有代码,让我select一个单一的项目在一个范围内:

COleVariant vItems = cstrAddr; hr = AutoWrap( DISPATCH_PROPERTYGET, &vCell, irange, L"Item", 2, COleVariant((short)(1)), COleVariant((short)(1))); if (FAILED(hr)) return hr; // Use the dispatch interface to select the cell COleVariant result; hr = AutoWrap( DISPATCH_METHOD, &result, vCell.pdispVal, L"Select", 0); if (FAILED(hr)) return hr; 

这工作正常。 不过,我需要select范围内的所有单元格,但是我一直无法在Item属性的“get”调用中find指定此方法的方法。 尝试使用-1,-1 …尝试在2个变种中传递一对bstr,指定冒号分隔的列和一系列行; 也尝试传入一个范围指定的string的单个参数。 没有工作。

更新 :我也试过了

 hr = iRange->Select(vResult); 

这确实返回S_OK,但它不select范围。 通常,我不能直接调用iRange结构中的函数; 结果是gpf或访问冲突 – 所以我必须使用autowrap函数(驱动一个Invoke调用)。 我不惊讶,这个电话不起作用。 希望我能得到这个工作….这是这个项目的最后一块。

不熟悉这种types的代码(在VB中,它更容易实现自动化)我想在你的例子中,你使用Item属性和Select方法从一个范围中select一个单元格。 正确?

所以在VB中

 Dim oRange as Range Dim oCell as Range Set oRange = WorkSheet.Range("A1:A10") '<-- get range Set oCell = oRange.Item(1) '<-- returns first cell in range oCell.Select '<-- selects first cell 

问题是Item属性只返回一个单元格 – 您必须将Select方法应用于原始范围。

 Dim oRange as Range Set oRange = WorkSheet.Range("A1:A10") '<-- get range oRange.Select '<-- Selects the range 

我find了这个问题的答案。 这在DSOFRAMER示例(Microsoft KB 311765)中使用时似乎只是一个问题。 DSOFramer是用于embeddedMS Office文档的通用ActiveX控件。 这个问题也只发生在一个debugging版本中; 发布版本没问题。

我还发现了一个解决方法,可以在发布或debugging版本上工作:获取范围内的任何单元格(使用get_Item),然后调用该项目的select,然后再次select取消select它。 一旦完成,可以在范围内调用select。 显然,如果已经select了一个单元格(或者如果select状态是未定义的),则不能在该范围上调用select。