0

ワークブックのすべてのワークシートに特定のフッターを貼り付ける Excel アドインを作成するように言われました。

Excel.Interop 名前空間のドキュメントを読んだ後、次のジャンキーなコードに行き着きました。

 public partial class Ribbon1
{
    Excel.Application _excelApp;
    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
    {
        _excelApp = new Excel.Application();
    }

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        var filename = _excelApp.GetSaveAsFilename();
        Excel._Worksheet worksheet = (Excel._Worksheet)_excelApp.ActiveSheet;
        worksheet.PageSetup.CenterFooter = filename;
    }
}

アクティブなワークシートの固定に問題があります。このオブジェクトを実際に使用するにはどうすればよいですか? - 現在は null です。このトピックに関連する msdn の記事は、まったくばかげていると思います。

4

2 に答える 2

2

やっと探していた情報を見つけました: VSTO

まず、次の 2 行を設定します。

using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Tools.Excel;

2 番目のステップとして、ワークブックが null でないかどうか、次にワークシートが null でないかどうかを確認します。この場合は、フッターをドキュメントに設定します。きれいではありませんが、明日オフィスで仕上げることができます。

Excel.Workbook Workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
        if (Workbook != null)
        {
            Office.Workbook vstoWorkbook = Globals.Factory.GetVstoObject(Workbook);

            Excel.Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;
            if (worksheet != null)
            {
                Office.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet);
                vstoSheet.PageSetup.CenterFooter = "testing the footer";
            }
        }
于 2013-01-22T19:24:06.443 に答える
0

いくつかのメモ。まず、アクティブなシートが作成されていないため、アクティブなシートがありません。Excelはデフォルトでシートを作成しません。

ボタンクリックイベントハンドラーで(簡略化された)コードを試してください。

Excel.Workbook workbook = _excelApp.Workbooks.Add();
Excel.Worksheet worksheet = workbook.Worksheets[0];
worksheet.PageSetup.CenterFooter = filename;
// Do remaining work here

また、ライン

var filename = _excelApp.GetSaveAsFilename();

ユーザーが選択したファイル名のみを返します。実際にはファイルを保存しません。あなたはそれをフォローアップする必要があります:

workbook.SaveAs(Filename: filename);
于 2013-01-22T15:30:37.317 に答える