在 Excel 加载项中从另一个工作簿插入 Sheet
Inserting Sheet from another Workbook in Excel Add-in
我正在尝试从现有的 Excel 工作簿中复制 sheet,然后使用 Excel 加载项将其粘贴到当前工作簿中。我正在使用以下代码,但它抛出异常:
private void insertSamplingWksht_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlApp = new
Microsoft.Office.Interop.Excel.Application();
Workbook templateWorkbook = xlApp.Workbooks.Open(templatePath);
Worksheet from = (templateWorkbook.Sheets[1] as Worksheet); // Get first sheet
Worksheet to = (Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet as Worksheet);
from.Copy(to, Type.Missing); // Throws System.Runtime.InteropServices.COMException: 'No such interface supported'
}
我也尝试了以下方法,但也没有用。
private void insertSamplingWksht_Click(object sender, RibbonControlEventArgs e)
{
string templatePath = @"path to file";
Microsoft.Office.Interop.Excel.Application xlApp = Globals.ThisAddIn.Application;
var activeWkbName = xlApp.ActiveWorkbook.Name;
int beforeCount = xlApp.Workbooks.Count; // 1
var templateWorkbook = xlApp.Workbooks.Open(templatePath);
var from = (templateWorkbook.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet);
int afterCount = xlApp.Workbooks.Count; // also 1
xlApp.Workbooks[activeWkbName].Activate(); // COMException: 'Invalid index.
from.Copy(xlApp.ActiveWorkbook.ActiveSheet, Type.Missing);
}
试试这个
// no need to open another Excel instance
Microsoft.Office.Interop.Excel.Application xlApp = Globals.ThisAddIn.Application;
// get the name of the active workbook to be able to return back
var activeWkbName = xlApp.ActiveWorkbook.Name;
// open the template workbook - which will become active then
var templateWorkbook = xlApp.Workbooks.Open(templatePath);
var from = (templateWorkbook.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet);
// active the original one
xlApp.Workbooks[activeWkbName].Activate();
from.Copy(xlApp.ActiveWorkbook.ActiveSheet, Type.Missing);
这是一个奇怪的 Excel 问题。我们通过位于 HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\General\DisableBootToOfficeStart 的注册表项禁用了 Excel 欢迎页面。由于某些奇怪的原因,这使这段代码无法按预期工作。
我正在尝试从现有的 Excel 工作簿中复制 sheet,然后使用 Excel 加载项将其粘贴到当前工作簿中。我正在使用以下代码,但它抛出异常:
private void insertSamplingWksht_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlApp = new
Microsoft.Office.Interop.Excel.Application();
Workbook templateWorkbook = xlApp.Workbooks.Open(templatePath);
Worksheet from = (templateWorkbook.Sheets[1] as Worksheet); // Get first sheet
Worksheet to = (Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet as Worksheet);
from.Copy(to, Type.Missing); // Throws System.Runtime.InteropServices.COMException: 'No such interface supported'
}
我也尝试了以下方法,但也没有用。
private void insertSamplingWksht_Click(object sender, RibbonControlEventArgs e)
{
string templatePath = @"path to file";
Microsoft.Office.Interop.Excel.Application xlApp = Globals.ThisAddIn.Application;
var activeWkbName = xlApp.ActiveWorkbook.Name;
int beforeCount = xlApp.Workbooks.Count; // 1
var templateWorkbook = xlApp.Workbooks.Open(templatePath);
var from = (templateWorkbook.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet);
int afterCount = xlApp.Workbooks.Count; // also 1
xlApp.Workbooks[activeWkbName].Activate(); // COMException: 'Invalid index.
from.Copy(xlApp.ActiveWorkbook.ActiveSheet, Type.Missing);
}
试试这个
// no need to open another Excel instance
Microsoft.Office.Interop.Excel.Application xlApp = Globals.ThisAddIn.Application;
// get the name of the active workbook to be able to return back
var activeWkbName = xlApp.ActiveWorkbook.Name;
// open the template workbook - which will become active then
var templateWorkbook = xlApp.Workbooks.Open(templatePath);
var from = (templateWorkbook.Sheets[1] as Microsoft.Office.Interop.Excel.Worksheet);
// active the original one
xlApp.Workbooks[activeWkbName].Activate();
from.Copy(xlApp.ActiveWorkbook.ActiveSheet, Type.Missing);
这是一个奇怪的 Excel 问题。我们通过位于 HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\General\DisableBootToOfficeStart 的注册表项禁用了 Excel 欢迎页面。由于某些奇怪的原因,这使这段代码无法按预期工作。