Copy a worksheet throws "Exception from HRESULT: 0x800A03EC."

G

Guest

Hi,
While iam trying to copy a worksheet from one file to another file in C#,
VS.NET 2003 i get error message saying: "Exception from HRESULT:
0x800A03EC."

The Exact Code i used is:
Excel.Application xlApp1 = new Excel.ApplicationClass();
Excel.Application xlApp2 = new Excel.ApplicationClass();
object missing = Type.Missing;

xlApp1.Workbooks.Open(System.Windows.Forms.Application.StartupPath +
@"\Reports.xls" ,
missing , missing, missing, missing, missing,missing, missing, missing,
missing, missing, missing, missing, missing, missing);
xlApp2.Workbooks.Open(System.Windows.Forms.Application.StartupPath +
@"\Template.xls" ,
missing , missing, missing, missing, missing,missing, missing, missing,
missing, missing, missing, missing, missing, missing);

Excel.Workbook xlSrcBook;
Excel.Workbook xlDestBook;

xlSrcBook = xlApp2.ActiveWorkbook as Workbook;
xlDestBook = xlApp1.ActiveWorkbook as Workbook;

try
{
(xlSrcBook.Sheets[2] as
Worksheet).Copy(missing,xlDestBook.Sheets[xlDestBook.Sheets.Count]);
xlApp2.Visible = true;
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message);
}
finally
{
xlSrcBook.Saved = true;
xlDestBook.Saved = true;
xlSrcBook.Close(missing,missing,missing);
xlDestBook.Close(missing,missing,missing);
xlApp1.Quit();
xlApp1 = null;
xlApp2.Quit();
xlApp2 = null;
}

Can someone please help me in finding out the mistake ?
 
N

NickHK

I've never tried it in VB/VBA, but I'd be surprised if you can copy/move
worksheets between instances of Excel.
Open both workbook in the same instance and you should be OK.

NickHK
 
G

Guest

Can you explain it please ?. Iam not getting it.
if you open in same instance then how will i get two different workbook
and their worksheets ?. ActiveWorkbook will give me only one workbook to
copy ?
 
J

james.billy

As Nick wrote you only require one instance of Excel. To get around
your activeworkbook problem, set the reference when you open the
workbook then open the new one: IE

appxl.workbooks.open ("Filename")
Book1 = Activeworkbook.name
appxl.workbooks.open ("Filename2")
Book2 = Activeworkbook.name

This should then reference the correct books. You can then use
appxl.Windows(Book1).activate to move back to workbook one etc.

James
 
G

Guest

Thank a lot Nick & James. It works great !

As Nick wrote you only require one instance of Excel. To get around
your activeworkbook problem, set the reference when you open the
workbook then open the new one: IE

appxl.workbooks.open ("Filename")
Book1 = Activeworkbook.name
appxl.workbooks.open ("Filename2")
Book2 = Activeworkbook.name

This should then reference the correct books. You can then use
appxl.Windows(Book1).activate to move back to workbook one etc.

James
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top