I would like to do something like add a nice-to-Excel-functions Name property to the WorkBook class. Is there a good way to do this?
More detailed problem: In VBA you can assign a formula to a range in an Excel worksheet. I want to do so, and I want my formula to refer to a second workbook, which is an object called wb in my code. I then use wb.Name in assigning a formula to a range.
The problem arises when wb.Name has a single-quote in it. Then you wind up with something like this:
=MONTH('[Ryan's WB]Sheet1'A1)
in the spreadsheet, which fails because the single-quote in the workbook name matches to the first single-quote.
What I would like is a FunName property for the WorkBook class that replaces all single-quotes in the Name property with two single-quotes and returns that. Then the above formula would properly wind up looking like
=MONTH('[Ryan''s WB]Sheet1'A1)
You don’t need to make a separate class to extend the workbook class. You can add properties to the existing ThisWorkbook class module, like this:
Then you call
ThisWorkbook.FunNameto get your cleaned up name. However, this code has to exist in the workbook at hand. If you want it to work on any workbook, your function is the way to go.