C#将每个循环的VBA转换为C#,但会产生编译错误

ib11

我将Word VBA宏转换为C#中的插件。

到目前为止,我已经成功地重构了C#中的所有语句,方法和属性,但这给我带来了很大的困难:

For Each l In Application.Languages
    If InStr(LCase(l.NameLocal), LCase(Language)) > 0 Then
        Selection.LanguageID = l.ID
        Exit For
    End If
Next l

我已经在C#中将上述内容转换如下:

using Microsoft.Office;
using Microsoft.Office.Interop;
using Word = Microsoft.Office.Interop.Word;

Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();
var Selection = oWordDoc.ActiveWindow.Selection;
string strTgtLanguage = "Hungarian";

foreach (var item in oWord.Application.Languages)
{
          if (item.NameLocal.IndexOf(strTgtLanguage)>-1) 
//The error is  ---^  here on 'NameLocal'.
          {
              Selection.LanguageID = item.ID
//And here on 'ID' -----------------------^
              break;
          }
}

这两个实例的编译器错误是:

'object'不包含'NameLocal'的定义,找不到扩展方法'NameLocal'接受类型为'object'的第一个参数(是否缺少using指令或程序集引用?)

我在这里做错了什么?我认为该foreach声明正确地声明object了集合中的。

提前致谢。

丹尼尔·杜谢克(DanielDušek)

替换var item为类型名称。

foreach (var item in oWord.Application.Languages) 用。。。来代替 foreach (Word.Language item in oWord.Languages)

在第一种情况下,var变量item的类型为System.Object

使用Linq的完整for-each可能是这样的:

foreach (Word.Language item in oWord.Languages.Cast<Word.Language>()
.Where(item => item.NameLocal.IndexOf(strTgtLanguage, StringComparison.Ordinal) > -1))
{
    selection.LanguageID = item.ID;
    break;
}

或者for-​​each可以替换为例如FirstOrDefault

Word.Language hungarian =
oWord.Languages.Cast<Word.Language>()
.FirstOrDefault(item => item.NameLocal.IndexOf(strTgtLanguage, StringComparison.Ordinal) > -1);

if (hungarian != null)
    selection.LanguageID = hungarian.ID;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Objective-C代码转换为Java会产生编译错误

来自分类Dev

强制函数返回值并产生编译错误C#

来自分类Dev

将 PHP 循环转换为 C#

来自分类Dev

将VBA HTML转换为C#

来自分类Dev

有没有办法限制C ++编译时的数据大小并产生编译错误?

来自分类Dev

C ++ VS2010中“每个”循环的编译错误

来自分类Dev

我的 C 程序有问题:发生编译错误

来自分类Dev

如何在隐式长到双转换上产生编译错误?

来自分类Dev

处理2个将C#转换为F#的编译器错误

来自分类Dev

处理2个将C#转换为F#的编译器错误

来自分类Dev

在c#中,引用不使用的命名空间时会产生编译惩罚吗?

来自分类Dev

无法将“卡片”转换为“int”-C++ 编译错误

来自分类Dev

valarrays产生奇怪的C ++编译错误

来自分类Dev

设置委托会产生编译错误

来自分类Dev

为什么#region会产生编译错误?

来自分类Dev

与varargs()匹配会产生编译错误

来自分类Dev

std :: bind在libstdc ++中产生编译错误

来自分类Dev

Fortran读取语句不产生编译错误

来自分类Dev

较少转换为SASS时发生编译错误

来自分类Dev

在Java中将数组转换为Set时发生编译错误

来自分类Dev

较少转换为sass时发生编译错误

来自分类Dev

将for循环从C#转换为python(ironpython)

来自分类Dev

将VBA宏转换为C#时,Document.Close()上出现C#模糊性错误

来自分类Dev

在C#中检查VB.NET对象是否为null会产生意外的编译错误

来自分类Dev

LINQ和动态继承导致C#编译错误

来自分类Dev

从编译错误中停止C#暂停调试

来自分类Dev

生成的节俭文件给我编译错误-C#

来自分类Dev

C#:jwplayer中的条件编译错误

来自分类Dev

C#可为空的整数-编译错误

Related 相关文章

热门标签

归档