Deleting a worksheet - impossible!

L

luvic.vangool

Hello,

I have been stuck on this for some time now... no matter what I do, I
can't seem to programmatically delete a worksheet from a spreadsheet!
I've tried many different approaches, and none of them seem to work.
There must be something staring me in the face, but I just can't see
it!

Below is a stripped down app to delete a sheet (not working) - can
anyone identify why? or give me some pointers as to how to approach
this?

Many many thanks for your help
Luvic.

static void Main(string[] args)
{
Microsoft.Office.Interop.Excel.Application ExcelApp = new
ApplicationClass();
Workbook workbook = null;
try
{
workbook =
ExcelApp.Workbooks.Open(path,0,true,5,"","",true,XlPlatform.xlWindows,"",false,false,0,false,null,null);
ExcelApp.Visible = true;
ExcelApp.DisplayAlerts = false;
((Worksheet)workbook.Sheets["Sheet1"]).Delete();
}
catch { }
finally
{
NAR(workbook);
ExcelApp.Quit();
NAR(ExcelApp);
}
}

private static void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch { }
finally
{
o = null;
}
}
 
N

NickHK

Couldn't tell you about non-VB code but;
Are you using "workbook" as the name of a variable of type Workbook ?
Not sure if matters for you, but may not a good idea to use a word from the
object model, WB would be better.

((Worksheet)workbook.Sheets["Sheet1"]).Delete();
would be
WB.Sheets("Sheet1").Delete
assuming it is not the last sheet in the WB.

NikcHK
 
L

luvic.vangool

Thanks Nick.

I don't think that is the issue.

The code is written in C# which is a case sensitive language.
Therefore the word "workbook" is safe to use, and does not conflict
with the class "Workbook".
If there was an error there, it would be picked up at design time by
the compiler.
It's got to be something else!

Ps. I am able to edit the data in the spreadsheet and save it, so I
don't think it is a permissions problem.

Luvic.

Couldn't tell you about non-VB code but;
Are you using "workbook" as the name of a variable of type Workbook ?
Not sure if matters for you, but may not a good idea to use a word from the
object model, WB would be better.

((Worksheet)workbook.Sheets["Sheet1"]).Delete();
would be
WB.Sheets("Sheet1").Delete
assuming it is not the last sheet in the WB.

NikcHK

Hello,

I have been stuck on this for some time now... no matter what I do, I
can't seem to programmatically delete a worksheet from a spreadsheet!
I've tried many different approaches, and none of them seem to work.
There must be something staring me in the face, but I just can't see
it!

Below is a stripped down app to delete a sheet (not working) - can
anyone identify why? or give me some pointers as to how to approach
this?

Many many thanks for your help
Luvic.

static void Main(string[] args)
{
Microsoft.Office.Interop.Excel.Application ExcelApp = new
ApplicationClass();
Workbook workbook = null;
try
{
workbook =
ExcelApp.Workbooks.Open(path,0,true,5,"","",true,XlPlatform.xlWindows,"",fal
se,false,0,false,null,null);
ExcelApp.Visible = true;
ExcelApp.DisplayAlerts = false;
((Worksheet)workbook.Sheets["Sheet1"]).Delete();
}
catch { }
finally
{
NAR(workbook);
ExcelApp.Quit();
NAR(ExcelApp);
}
}

private static void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch { }
finally
{
o = null;
}
}
 
N

NickHK

Which error are you getting ?

NickHK

Thanks Nick.

I don't think that is the issue.

The code is written in C# which is a case sensitive language.
Therefore the word "workbook" is safe to use, and does not conflict
with the class "Workbook".
If there was an error there, it would be picked up at design time by
the compiler.
It's got to be something else!

Ps. I am able to edit the data in the spreadsheet and save it, so I
don't think it is a permissions problem.

Luvic.

Couldn't tell you about non-VB code but;
Are you using "workbook" as the name of a variable of type Workbook ?
Not sure if matters for you, but may not a good idea to use a word from the
object model, WB would be better.

((Worksheet)workbook.Sheets["Sheet1"]).Delete();
would be
WB.Sheets("Sheet1").Delete
assuming it is not the last sheet in the WB.

NikcHK

Hello,

I have been stuck on this for some time now... no matter what I do, I
can't seem to programmatically delete a worksheet from a spreadsheet!
I've tried many different approaches, and none of them seem to work.
There must be something staring me in the face, but I just can't see
it!

Below is a stripped down app to delete a sheet (not working) - can
anyone identify why? or give me some pointers as to how to approach
this?

Many many thanks for your help
Luvic.

static void Main(string[] args)
{
Microsoft.Office.Interop.Excel.Application ExcelApp = new
ApplicationClass();
Workbook workbook = null;
try
{
workbook =
ExcelApp.Workbooks.Open(path,0,true,5,"","",true,XlPlatform.xlWindows,"",fal
se,false,0,false,null,null);
ExcelApp.Visible = true;
ExcelApp.DisplayAlerts = false;
((Worksheet)workbook.Sheets["Sheet1"]).Delete();
}
catch { }
finally
{
NAR(workbook);
ExcelApp.Quit();
NAR(ExcelApp);
}
}

private static void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch { }
finally
{
o = null;
}
}
 
L

luvic.vangool

I've modified the code to use "Application" instead of
"ApplicationClass" and that seems to be working.
halelujah!

Thanks for the help Nick.

Regards,
Luvic

Which error are you getting ?

NickHK

Thanks Nick.

I don't think that is the issue.

The code is written in C# which is a case sensitive language.
Therefore the word "workbook" is safe to use, and does not conflict
with the class "Workbook".
If there was an error there, it would be picked up at design time by
the compiler.
It's got to be something else!

Ps. I am able to edit the data in the spreadsheet and save it, so I
don't think it is a permissions problem.

Luvic.

Couldn't tell you about non-VB code but;
Are you using "workbook" as the name of a variable of type Workbook ?
Not sure if matters for you, but may not a good idea to use a word from the
object model, WB would be better.

((Worksheet)workbook.Sheets["Sheet1"]).Delete();
would be
WB.Sheets("Sheet1").Delete
assuming it is not the last sheet in the WB.

NikcHK

Hello,

I have been stuck on this for some time now... no matter what I do, I
can't seem to programmatically delete a worksheet from a spreadsheet!
I've tried many different approaches, and none of them seem to work.
There must be something staring me in the face, but I just can't see
it!

Below is a stripped down app to delete a sheet (not working) - can
anyone identify why? or give me some pointers as to how to approach
this?

Many many thanks for your help
Luvic.

static void Main(string[] args)
{
Microsoft.Office.Interop.Excel.Application ExcelApp = new
ApplicationClass();
Workbook workbook = null;
try
{
workbook =

ExcelApp.Workbooks.Open(path,0,true,5,"","",true,XlPlatform.xlWindows,"",fal
se,false,0,false,null,null);
ExcelApp.Visible = true;
ExcelApp.DisplayAlerts = false;
((Worksheet)workbook.Sheets["Sheet1"]).Delete();
}
catch { }
finally
{
NAR(workbook);
ExcelApp.Quit();
NAR(ExcelApp);
}
}

private static void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch { }
finally
{
o = null;
}
}
 

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