这是Excel模板的VBA代码,我正在尝试将其转换为正在工作的VSTO项目中的C#.顺便说一下,这是一个VSTO加载项:
Dim addedShapes() As Variant
ReDim addedShapes(1)
addedShapes(1) = aBracket.Name
ReDim Preserve addedShapes(UBound(addedShapes) + 1)
addedShapes(UBound(addedShapes)) = "unique2"
Set tmpShape = Me.Shapes.Range(addedShapes).Group
在这一点上,我被addedShapes()迷住了,不确定这是怎么回事.
更新:Matti提到addedShapes()表示VBA中的一个变体数组.所以现在我想知道addedShapes()的内容应该是什么.这是在C#中调用Shapes.Range()的正确方法吗?
List<string> addedShapes = new List<string>();
...
Shape tmpShape = worksheet.Shapes.get_Range
(addedShapes.Cast<object>().ToArray()).Group();
感谢与VBA和C#合作并且愿意对我的问题和评论发表评论的任何人.问题!
解决方法:
我不知道您的实际问题应该是什么,但是addShapes是一个数组.在VB及其变体中,使用()而不是[]声明和访问数组.
另外,您的代码看起来只是一个漫长的过程:
object[] addedShapes = new object[] { aBracket.Name, "unique2" };
Shape tmpShape = worksheet.Shapes.get_Range(addedShapes).Group();
最后一部分可能是
Shape tmpShape = worksheet.Shapes[addedShapes].Group();
看看哪个可行.我真的不知道哪个MSDN建议.
标签:c,excel,vba,excel-vba,vsto 来源: https://codeday.me/bug/20191106/1999889.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。