Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Worksheet.CustomProperties

Hello all;

I'm messing around with Visual Studio Tools for Office 2003, particularly
Excel.

Was wondering if the Worksheet.CustomProperties collection has to be indexed
by an integer, or can you use the name of the property you are trying to
access? Since I don't think I can guarantee the order in which the
properties are added, I don't want to use integer indexing (though I could
loop through and check the property Name).

Specifically, this code snippet (which I fire from a CommandBar button)
always throws a Type Mismatch exception (hope you don't mind C#). Note that
the CustomProperty.Count is incrementing as expected; it blows up on the 2nd
line within the Try:

private void TestProperties(Excel.Worksheet activeSheet)
{
try
{
int i = activeSheet.CustomProperties.Count; //just checking if a
property was actually added

Excel.CustomProperty prop = activeSheet.CustomProperties["Test"];

if((bool)prop.Value == true)
{
MessageBox.Show("Test property was true");
}
else
{
MessageBox.Show("Test property was false");
}
}
catch(System.Runtime.InteropServices.COMException e) //property doesn't
exist, add it
{
activeSheet.CustomProperties.Add("Test", true);
//MessageBox.Show(e.Message);
}
}


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Worksheet.CustomProperties

Derrick,

Yes, custom properties can be accessed by name. I don't know C#,
but the following works in VBA:

Debug.Print ThisWorkbook.CustomDocumentProperties("Test").Valu e


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Derrick" wrote in message
...
Hello all;

I'm messing around with Visual Studio Tools for Office 2003,
particularly Excel.

Was wondering if the Worksheet.CustomProperties collection has
to be indexed by an integer, or can you use the name of the
property you are trying to access? Since I don't think I can
guarantee the order in which the properties are added, I don't
want to use integer indexing (though I could loop through and
check the property Name).

Specifically, this code snippet (which I fire from a CommandBar
button) always throws a Type Mismatch exception (hope you don't
mind C#). Note that the CustomProperty.Count is incrementing
as expected; it blows up on the 2nd line within the Try:

private void TestProperties(Excel.Worksheet activeSheet)
{
try
{
int i = activeSheet.CustomProperties.Count; //just
checking if a property was actually added

Excel.CustomProperty prop =
activeSheet.CustomProperties["Test"];

if((bool)prop.Value == true)
{
MessageBox.Show("Test property was true");
}
else
{
MessageBox.Show("Test property was false");
}
}
catch(System.Runtime.InteropServices.COMException e)
//property doesn't exist, add it
{
activeSheet.CustomProperties.Add("Test", true);
//MessageBox.Show(e.Message);
}
}



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Worksheet.CustomProperties

Just to add, worksheets don't have custom properties. Workbooks do. And as
Chip pointed out, they are called customdocumentproperties in the Excel
object model. Can't say for C#.

--
Regards,
Tom Ogilvy

"Derrick" wrote in message
...
Hello all;

I'm messing around with Visual Studio Tools for Office 2003, particularly
Excel.

Was wondering if the Worksheet.CustomProperties collection has to be

indexed
by an integer, or can you use the name of the property you are trying to
access? Since I don't think I can guarantee the order in which the
properties are added, I don't want to use integer indexing (though I could
loop through and check the property Name).

Specifically, this code snippet (which I fire from a CommandBar button)
always throws a Type Mismatch exception (hope you don't mind C#). Note

that
the CustomProperty.Count is incrementing as expected; it blows up on the

2nd
line within the Try:

private void TestProperties(Excel.Worksheet activeSheet)
{
try
{
int i = activeSheet.CustomProperties.Count; //just checking if a
property was actually added

Excel.CustomProperty prop =

activeSheet.CustomProperties["Test"];

if((bool)prop.Value == true)
{
MessageBox.Show("Test property was true");
}
else
{
MessageBox.Show("Test property was false");
}
}
catch(System.Runtime.InteropServices.COMException e) //property

doesn't
exist, add it
{
activeSheet.CustomProperties.Add("Test", true);
//MessageBox.Show(e.Message);
}
}




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8
Default Worksheet.CustomProperties

Actually, in Visual Studio Tools for Office 2003, worksheets do indeed have
CustomProperties. Previous versions did not.

Cheers,

Derrick


"Tom Ogilvy" wrote in message
...
Just to add, worksheets don't have custom properties. Workbooks do. And
as
Chip pointed out, they are called customdocumentproperties in the Excel
object model. Can't say for C#.

--
Regards,
Tom Ogilvy

"Derrick" wrote in message
...
Hello all;

I'm messing around with Visual Studio Tools for Office 2003, particularly
Excel.

Was wondering if the Worksheet.CustomProperties collection has to be

indexed
by an integer, or can you use the name of the property you are trying to
access? Since I don't think I can guarantee the order in which the
properties are added, I don't want to use integer indexing (though I
could
loop through and check the property Name).

Specifically, this code snippet (which I fire from a CommandBar button)
always throws a Type Mismatch exception (hope you don't mind C#). Note

that
the CustomProperty.Count is incrementing as expected; it blows up on the

2nd
line within the Try:

private void TestProperties(Excel.Worksheet activeSheet)
{
try
{
int i = activeSheet.CustomProperties.Count; //just checking if
a
property was actually added

Excel.CustomProperty prop =

activeSheet.CustomProperties["Test"];

if((bool)prop.Value == true)
{
MessageBox.Show("Test property was true");
}
else
{
MessageBox.Show("Test property was false");
}
}
catch(System.Runtime.InteropServices.COMException e) //property

doesn't
exist, add it
{
activeSheet.CustomProperties.Add("Test", true);
//MessageBox.Show(e.Message);
}
}






  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Worksheet.CustomProperties

Yes, apparently we are talking about two different things with similar
names.

anyway, this reference indicates you can refer to them using an index:

http://blogs.msdn.com/eric_carter/ar...18/265787.aspx

--
Regards,
Tom Ogilvy


"Derrick" wrote in message
.. .
Actually, in Visual Studio Tools for Office 2003, worksheets do indeed

have
CustomProperties. Previous versions did not.

Cheers,

Derrick


"Tom Ogilvy" wrote in message
...
Just to add, worksheets don't have custom properties. Workbooks do.

And
as
Chip pointed out, they are called customdocumentproperties in the Excel
object model. Can't say for C#.

--
Regards,
Tom Ogilvy

"Derrick" wrote in message
...
Hello all;

I'm messing around with Visual Studio Tools for Office 2003,

particularly
Excel.

Was wondering if the Worksheet.CustomProperties collection has to be

indexed
by an integer, or can you use the name of the property you are trying

to
access? Since I don't think I can guarantee the order in which the
properties are added, I don't want to use integer indexing (though I
could
loop through and check the property Name).

Specifically, this code snippet (which I fire from a CommandBar button)
always throws a Type Mismatch exception (hope you don't mind C#). Note

that
the CustomProperty.Count is incrementing as expected; it blows up on

the
2nd
line within the Try:

private void TestProperties(Excel.Worksheet activeSheet)
{
try
{
int i = activeSheet.CustomProperties.Count; //just checking

if
a
property was actually added

Excel.CustomProperty prop =

activeSheet.CustomProperties["Test"];

if((bool)prop.Value == true)
{
MessageBox.Show("Test property was true");
}
else
{
MessageBox.Show("Test property was false");
}
}
catch(System.Runtime.InteropServices.COMException e) //property

doesn't
exist, add it
{
activeSheet.CustomProperties.Add("Test", true);
//MessageBox.Show(e.Message);
}
}








Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
automatically appending newly added data on worksheet to a master list worksheet tabylee via OfficeKB.com Links and Linking in Excel 0 December 17th 09 04:24 PM
plot graph from multiple worksheet as embedded chart object on every worksheet [email protected] Excel Discussion (Misc queries) 2 August 24th 06 05:26 PM
Upload multiple text files into 1 excel worksheet + put the filename as the first column in the worksheet Aster Excel Worksheet Functions 3 March 12th 06 09:58 AM
providing a sheet-copy event or copy CustomProperties Carlos Cortes Excel Programming 2 November 11th 04 08:24 AM
Attaching a JET database to an Excel Worksheet OR storing large binary data in a worksheet Ant Waters Excel Programming 1 September 3rd 03 11:34 AM


All times are GMT +1. The time now is 10:10 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"