Would it be possible to subclass a Chart in VBA? - vba

Would it be possible to "subclass" a Chart in Excel to create a modified version of it?
My wish is for an Improved Bubble/XY Chart in Excel. With the native chart, I can create charts of varying X, Y and Bubble Size, such as:
In a recent project, I wanted to classify these bubbles into groups A and B based on some given criteria, and using different colors was the solution I found. I also wanted to label each bubble on a per-row basis. I had to use a simple VBA Macro to color the bubbles and add labels dynamically, but the end result was quite nice:
In the end, I was left wondering. My programming experience is mostly in Python, so naturally I though of subclassing the regular Chart to allow for a more user friendly experience, such as customizable colors, categories and being able to pick labels from a Range. Is that possible in VBA?
Most of the tips for VBA subclassing that I have found online refer to using the Windows API and subclassing UserForms, but that is not exactly what I want.

Related

I want to export my AutoCAD Layers filters to another drawing

I work on drawings prepared by others. At the moment, I XREF the drawings into my own template and I have my Layers and Filters set to my preferences. However, I have to edit the XREF and create my own layers and filters within the other drawing - every time - twice a day. I want to export my filters to the drawing. I use AutoCAD 2014 and the option to export my filters to another drawing is not available. Apparantly, the option was available in earlier versions of AutoCAD but not mine. However, other Autodesk products do have this option (3DCivils, Architecture) so it is possible to export the layer filters.
I have tried to find a VBA method to do this but I have been unable to find the VBA property or method to read the filters. Moving the layers is easy, but not the filters. The forums say there is no method. Therefore, would it be possible to create an add-in that would manipulate the Layer Manager and create my Layer Filters. I would have a button that would run the macro.
I suspect I will have to write a .NET routine but is what I am trying to achieve 'do-able'.
This is definitely 'do-able'. Kean has a very clear article covering this topic. Once you read them you could either serialize them to a file (like XML) for export and have another routine just for populating new drawings or if you have both drawings open, just change the database the layers and filters need to be read/written to.

Picture Transparency Object in PowerPoint VBA

PowerPoint added native capability for picture transparency (without having to create a shape) in late 2018. See that linked article to see what I mean.
I'm trying to figure out what/if an appropriate VBA object exists for it (there's not much online since it's a fairly new feature). I've tried the traditional FillFormat.Transparency object, as well as a few other analogous attempts. (Basically, have been searching the VBA documentation up and down for an hour or two).
Any thoughts?
Currently, there is no way to set the Picture Transparency directly (without using a Shape Fill). You would notice that the Shape properties are arranged somewhat as it appears on the Picture Tools Pane. For example, the Picture settings are on the last tab (where you have Picture Corrections, Color, Transparency and Crop). These are all accessible with the Shape.PictureFormat object. (The .FillFormat is only applicable when you are filling a shape).
You will notice the .PictureFormat has Properties relating to the aforementioned settings, except for Picture Transparency. The .PictureFormat.TransparencyColor cannot be used to set the degree of transparency.
The PowerPoint VBA object model often lags well behind new features that appear in the user interface, so there's nothing available yet to do what you want.
Just a note, when it appears, transparency will be a property, not an object. The current TransparencyColor and TransparentBackground properties are for the old routine that creates a single picture color that is 100% transparent.

Creating Diagram from Excel Using VB

Sorry I can't embed images, I have the links instead (... I can only post two links. I have removed the http:// substring from some of the links).
I am looking to take an .csv file (really, any file, as I am generating this myself), and create a Visio (2010) diagram out of it. I have successfully imported the excel sheet to Visio, and can create some rough diagrams, but they are not enough. This is what I'm trying to create. Here are the following tactics I have tried, I prefer the VB method, but whatever works works:
Data Graphics: This is the closest I've gotten to a solution. Basically you create shapes and you can put data in it. Problem is, the style of display available are limited, as we can see here (imgur.com/clTLcxk). After importing the excel sheet, all I had to do was drag and drop to create these shapes. The closest I have gotten is here. However, I really need the outside box (or container, for aesthetic reasons). (Some information here [support.office.com/en-us/article/Enhance-your-data-with-data-graphics-45af64a4-1dcb-4463-9a7e-67709786181c])
VB: I have been using this (msdn.microsoft.com/en-us/library/office/ff959245%28v=office.14%29.aspx). I have ran some of the example code, but I am really lost. I have run some of the example code but the only one I have really gotten to work are useless to me. Also, I don't see any API methods that actually add data to these diagrams!
So how is this done?
I would approach this problem by first defining or finding Visio masters that would the data I'm drawing to the page. In your case it looks like you'd want a master for your Foo items, and one for your Bar items.
So then you'd step through your Bars, then within each Bar you'd have one or more Foos. For each Foo, you would drop that master out, and set the text of the shape to what you want in the blue Foo section (maybe a grouped sub-shape for the Foo master), and then text in the white body.
When stepping through all the Bars, you'd obviously have to drop out a Bar shape and position/size it to contain all the Foos.

Can one use VBA to create a new chart type in PowerPoint?

I don't believe this is possible, but I would love to have confirmation from PowerPoint VBA experts.
I am trying to make a chart in PowerPoint that is essentially a bar graph whose bars have a variable width (i.e. the width of each bar is an input into the chart, as opposed to your classic bar chart, which has a set width for each bar). This is of course not possible in PowerPoint as there is no such chart type for this.
Is it possible to use VBA code to create something like this? I have a hunch that it is not and that I am limited to interacting with the PowerPoint library and the set chart types.
Any insight into this will be greatly appreciated. I am struggling to think of a solution for displaying my data in this particular manner.
Something like the chart in this tutorial: Variable Width Column Charts (Cascade Charts)? It's probably easier to do in Excel, because the data isn't a layer further removed from the chart, but you could follow the same protocol in PowerPoint. This is a manual protocol; I've written VBA to do it in Excel, and I'm going to do the same for PowerPoint when I get a chance.

Create table / grid in a Wireframe Visio 2010 diagram

I'm loving the added Wireframe template and corresponding shapes in Visio 2010. One thing I can't seem to find though (not in Visio, Office help or using Google) is a good way to draw tabular controls.
The only built-in shape that comes close is a List Box of which I can link several together. However this has several disadvantages as this leaves me without "rows" in my table.
Does anyone have a good suggestion on how to do this? I'd prefer a shape that is aware of the Visio2010 'theme' stuff, but at this point any quick way to draw a grid in a wireframe would be much appreciated.
PS. Searching for shapes on "table" gives me lovely picnic-table-shapes but no usable grids. Searching for "grid" gives me one or two shapes which aren't particularly helpful either.
I find Excel a good way to manage grids in Visio. You can easily add and remove columns, manage formating etc.
In Visio 2010 go to Insert -> Object -> Microsoft Excel Worksheet.
Is was looking for the same and found a way:
http://office.microsoft.com/en-us/visio-help/using-shapes-to-create-tables-in-visio-HA001182242.aspx
So you have to search in the stencils "Charting shapes" to find the grid.
Still not that intuitive to work with, but will do.
Insert->Shapes->More Shapes->Charting Shapes->Grid
If we are looking for Visio Stencils for Grid/Table, a great resource can be downloaded here:
http://developer.yahoo.com/ypatterns/about/stencils/
Too bad no one had a solution. I'll mark this response as an answer to my own question then.
The answer to my problem (for so far I could find) in fact then seems to be that you have to work around this omission in Visio by either:
using linked "List box" shapes
use one of the (rather crappy) table shapes you can search for and find online
use a screenshot (or something alike) from another program
If anyone ever lands at this question with a better workaround or even a real solution please be sure to add it.
I use Visio to design wireframes. When I need datagrids or tabular data, I end up using Excel to design a grid with some data and formatting (fonts, size, border, etc.) Then I select the grid in Excel, copy it to clipboard and then Paste Special in Visio and select Image. Not perfect but works for me.
Create the desired table in Excel. Simply copy and paste special as Microsoft Excel Worksheet, and you can then click into it and do whatever you want.
Tip: Color your grid before copying it so that you don't see the Visio gridlines. Looks much nicer on-screen!