Saving VBA code within Powerpoint embedded Excel Workbook - excel

The VBA created in an Excel sheet that is embedded in a Powepoint presentation is not saved.
I have a Powerpoint file, in which I have Inserted a Chart, thus creating an embedded Excel Workbook.
I have tried adding some VBA to said embedded Excel Workbook. IT all worked fine and my VBA worked as expected.
Until I closed the embedded Excel file and tried reopening it (by right clicking on the Powerpoint Chart and clicking on Edit Data). After reopening it, all of my VB was gone.
I suspect it has something to do with the embedded Excel file not being Macro enabled, but I can't figure out how to change this.
(Happy to provide a sample file if required)

Related

Can I use VBA to tell if my spreadsheet was opened by a user vs. a linked document?

The Problem
I have an Excel workbook that prompts the user for some actions every time it is opened.
This same workbook contains charts that are linked in a PowerPoint file. These links were created by copying the charts in Excel and then, in the PowerPoint file, clicking "Paste Special", choosing "Paste Link", and selecting "Microsoft Excel Worksheet (code) Object" as the link type.
Every time the PowerPoint file is opened, I am prompted to update the links in the document.
The trouble is that, while PowerPoint is updating links, the Excel prompts that are intended for the user are shown and have to be clicked (multiple times) during the link update process.
Is it possible for my VBA code to detect when it's being opened for the purposes of updating links so I can skip the user prompts? I should note, in case it matters, that I'm using Microsoft Office 365 on Windows 10.
What I've Tried
I've tried monitoring the value of ThisWorkbook.ReadOnly, Application.Interactive, and Application.IsSandboxed during startup, but they all appear to have the same values regardless of whether the workbook is opened for the purposes of updating links or not. I'm not familiar enough with how link updating works to know what else to check for.
I've identified a couple of possible work-arounds:
First, if the Excel workbook is opened before PowerPoint is opened and the link update process starts, then the prompts don't appear. This will work, if there's no better solution.
Second, I could create a second "shadow" Excel workbook with charts generated from data in the first spreadsheet, but without user prompts. If PowerPoint links to the charts in the "shadow" workbook, then links are updated without issue. This is far from ideal because of the need to keep the two workbooks in sync.
I'm hoping for an elegant automated solution.

How to avoid opening the original macro file?

I have created VBA coding in a workbook and created a macro button so that the vba code will be available to other workbooks.
But while running the vba code using macro button in other workbooks the original file opens again.
Is there a way to avoid opening the original file?

Editing excel online and in workbook

I have a vba code in my .xlsm excel file. When i edit it online, my code does not work. But it works when i have been editing it in Work book.
Why is this so?
The vba code contains a code for stoping duplicate value entry for a column in excel
Short answer is that you can open workbooks containing macros online but you can't do anything with the code.
Work with macros in Excel Online
Although you can't work with macros in Excel Online, you can open a
workbook that contains macros—though you won't be able to see the
macros. You can edit the worksheets and save a workbook containing
macros in Excel Online. The macros will remain in the workbook, and
you open the workbook in the Excel desktop application to view and
edit the macros.
Bottom line: Use Excel desktop application to work with macros.
You can vote for it as a feature here:
Developer tab, macros, custom add-ins for online Excel

Enabling macros in chart data sources in Powerpoint

I have a Powerpoint file with many charts that I expect many different users to use with their own data. I'm trying to make this Powerpoint as easy to use as possible by writing VBA into each data source (by data source, I mean the default Excel sheet that is embedded in Powerpoint when you select "Insert" > "Chart"). My goal is to allow them to click the chart, select "Edit data," paste info from a PivotTable into the Excel window that pops up, and let the macro does the rest. The code I can write myself, but I have a different problem:
I've tried writing macros in these embedded Excel files but they do not save once they are closed (I assume they must be .xls or similar and not .xlsm). How can I get these macros to save? I've tried drag and dropping .xlsm files into Powerpoint, but it shows the actual charts on the slide and it's difficult to work with. I'd like the Excel files to be hidden from Powerpoint view and easily accessed using the "Edit data" option.
I hope this description makes sense, if not I can explain further / answer any questions.
Thanks!
Can't you just provide PowerPoint charts, and have them paste data into each chart's DataSheet in PowerPoint?
Of late, PPT does its best to convert pasted charts into PowerPoint charts (same basic engine as Excel charts but they're not Excel objects). You can get round this if you copy the chart from XL, switch to PPT and on the Home tab, click the downward pointing arrow below Paste, pick Paste Special and choose to paste as embedded Excel chart object.
You can then doubleclick the pasted object and Excel will launch for in-place editing.
Or you can right-click, choose "Macro enabled worksheet object" or whatever, and then opt to Open or Edit. Edit gives you in-place editing within the PPT window, Open launches the embedded data in a full copy of Excel.

VBA Excel Chart to powerpoint - saving file as multiple outputs

I have a template in excel, and a powerpoint template.
in the powerpoint template I have several charts linked to the excel template.
I want to make a loop that changes something in excel, so that the chart updates, "saveas" for both the excel and powerpoint file, so I have eg. 100 different excel files and 100 different powerpoint files, all build on the templates. I want to be able to manually alter some data in those 100 excelfiles, with the link to powerpoint still intact, so they are updated too if needed.
however, when I open the powerpoint templates, right click on a chart and select "edit data", then the chart is still linked to the excel template, not the saveas version of the excel file?
how do I change the link of a chart in powerpoint, to a different excel filename? the structure in the two excel files are identical.
the chart is created in excel and copy/pasted as "keep source formatting and chain data" (translated from danish)
any help would be greatly appreciated.
I have also tried a solution where the copy/paste is done via vba into an empty powerpoint template, but that is more time consuming, and powerpoint often crashes.
Assuming you have a reference to the shape represented by the linked chart in oSh, this will show you the link:
Debug.Print oSh.LinkFormat.SourceFullName
And this will change it to some other file:
oSh.LinkFormat.SourceFullName = "c:\some\path\yourfile.xls"
Most likely there will also be a !chartname or the like after yourfile.xls ... you'll need to include that.
And save the Excel files first, THEN change the link in the PPT to point to them. If you change the link to point to a non-existent file, PPT won't throw any errors; it'll simply leave the link unchanged.

Resources