2017-01-30 15 views
2

私は現在スタッフが自動的に入力し、ユーザー入力などに基づいて情報をチェックシートを印刷するプログラムを作成しています。文書を秀でて、文書を検索して特定の単語やフレーズを探し、それをユーザーが生成する変数入力に置き換えたいとします。C#を使用してExcel/Excelの単語/句を置換する方法

例:ユーザーは部屋番号RM:XXXを入力し、プログラムはフレーズ{ルーム番号}を検索してRM:XXXと置き換えます。思い付いた

Microsoft.Office.Interop.Excel.Application replaceWord = new Microsoft.Office.Interop.Excel.Application(); 

Microsoft.Office.Interop.Excel.Workbook wb = default(Microsoft.Office.Interop.Excel.Workbook); 

wb = replaceWord.Workbooks.Open("C:\\test.xlsx"); 

wb.Worksheets("Sheet1").Cells.Replace(What: "{Room Number}", Replacement: "RM:XXX", LookAt: XlLookAt.xlWhole, SearchOrder: XlSearchOrder.xlByRows, MatchCase: false, SearchFormat: true, ReplaceFormat: false); 

問題は、最後の行のwb.Worksheetsにあった:私がいたから、私は解像度を構築することになったのVisual Basic 2017

最も近いソリューションでは動作しませんでしたいくつかの解決策を見つけましたエラー:{"非呼び出し可能メンバWorkBook.Worksheetsはメンバのように使用することはできません"}

wb.Worksheetsが動作していないか、エラーをスローしている理由を誰かが正しい方向に向けることができますか?

+0

'wb.Worksheets ["Sheet1"]' – rene

+0

wb.Worksheets( "Sheet1")のコマンドではありませんCells.Replace(What:= "{Room Number}"、...あなたは= – frostbyte

+0

が欠けていると思う@frostbyte =そこに置かれていれば、無効な表現用語になります。 – Inneshfree

答えて

2

Worksheetsはプロパティではなく、メソッドです。それがエラーメッセージがあなたに伝えようとしているものです。

このプロパティはindexerを実装するSheetsインスタンスを提供し、C#では[]を使用してアクセスします。あなたの最後の行は次のようになります。

wb.Worksheets["Sheet1"] 
    .Cells 
    .Replace(What: "{Room Number}", 
      Replacement: "RM:XXX", 
      LookAt: XlLookAt.xlWhole, 
      SearchOrder: XlSearchOrder.xlByRows, 
      MatchCase: false, 
      SearchFormat: true, 
      ReplaceFormat: false); 

Worksheets["Sheet1"]で角括弧に注意してください。それらは違いを生む。

関連する問題