Can I insert a file into Excel without creating a reference? - excel

Is there a way to insert a pdf file into Excel such that when I send the excel to another PC, they can still open the pdf file?
To do this I understand that I can't create a reference to the file because that file is saved on my computer but not on the other person's computer. What I need is to embed the file, correct? How can I do this without using a reference to an object, like a link? Again, what I want is this file put directly into my Excel.
Is this even possible? Would it maybe work on an excel that has sharing enabled so multiple users can access the excel at once?
If it helps, I ask because I'm creating a program that automatically creates files and needs to somehow connect them to this shared excel.

Related

Is there a way you could pull from sharepoint using VBA?

I have coded a macro that takes data from current document (excel) to another document (Excel) from a specific file folder.
Now the company is moving to share point. Is there a way to do that?
Now my VBA code is in an excel that:
Opening different -file path- excel file.
Copying and pasting data from one excel to other excel.
Can I access share point for the specific file path?
I have tried
‘’’ActiveWorkbook.FollowHyperlink Address= “link” ‘’’
But this will not allow me to continue in the macro since it does not open the excel in the app. Rather it opens the direct internet url hyperlink.
Yes you can access Sharepoint with a specific file path. If you sync the relevant Sharepoint folder, it will appear in your File Explorer and you can copy that file path to use in the VBA code.
https://support.microsoft.com/en-us/office/sync-sharepoint-files-and-folders-87a96948-4dd7-43e4-aca1-53f3e18bea9b

Insert Data into Shared Excel file

I have a Shared Excel file stored on a NAS, and i want to insert some data from a csv into the Excel without the excel being unshared.
can i maybe share the excel file programmatically ?
I tried reading the excel with py pandas and then overwriting with the new inserted data,
but then the file isn't shared anymore, so my users that are still using the file won't notice the change and maybe they are going to save their current changes which would overwrite the inserted data,
i also tried using VBS but it didn't work because the excel is shared.
I'm looking for a solution which would allow my users to modify the file without overwriting the new inserted data.
is that possible ?
Thanks for your attention. I’m looking forward to any reply.

How to open Excel macro files (xlsm) in separate instances of Excel 2016/win10

Does anyone know what registry keys need to be modified in order to open macro enabled excel files in a separate instance of Excel (ie: separate windows)?
I followed the instructions on the following pages Microsoft How-To (if you want to open *.xlsx files in separate instances of excel)
and relation between registry folders and file extensions. The 'Microsoft How-To' link worked nicely and did exactly what it was supposed to do. However, I need xlsm files to open in separate windows and for the xlsx files to continue to open the default way (all in the same window/excel-instance).
I thought if i modified the Excel.SheetMacroEnabled.12\shell\open data (similar to what is described in the first link) the *.xlsm files would then always open in a new window each time.
Instead of this working successfully, now when I try to open an *.xlsm file, a blank excel window comes up with no workbook in it (after this failed attempt I imported the original settigs back so everything was restored).
Figure: I believe one of the folders shown in the image below has the key which needs to be changed in order to open excel macro files in separate windows.
You also need to delete the command REG_MULTI_SZ (the one with the seemingly gibberish-cryptographic value). Backup it in case it goes wrong!
Then, the XLSM files will open in a separate Excel program (notice the brief splash screen, which only appears when a new instance of Excel is created).
But be careful! In my tests, the order in which you open the file types make a big difference!
For example, if there is an Excel instance with a XLSM file open, and you open a XLSX file, it will try to reuse the existing Excel instance, because the registry associated to Excel.Sheet.12 tells it to do it no matter the file type already open. Only XLSM files opened after an existing Excel instance is running will create its own instance of Excel.
I will search for a workaround, but I think this is enough for you to start the tests in your computer.

Save logfile within Excel file using VBA

I am trying to develop a manner in VBA to track changes in a document without having to hide the contents in an extra sheet within a workbook.
I understand that if you change the extension of an Excel file to ".zip", you can access the Excel document as components sorted into directories. Is there a way to save and write to a text file within one of these directories so that I can access it every time the document is opened, without having to have the user drag a log file along with the Excel document?
Some facts:
When Excel opens the file, the file is blocked by Excel. There is no possibility to write to that file within VBA
You can store additional data into that file externally or after the Excel workbook has been closed
You would need to have code externally from the workbook to accomplish writing to that file after it has been closed. You may want to use VSTO or an oldschool Excel Addin.
you have to ensure that Excel will not destroy your changes when restructuring or repairing the file.
In the first run, your idea sounds very natural, to not use sheets from a programmer's point of view. You only have full control on Excel files when
you use external libraries (e.g. Spreadsheet Gear) or
you remote control Excel via automation.
you use openxml SDK for Excel
you use VBA
You could insert additonal information and take care that this information is not skipped by Excel.
When you want to do the tracking this way, I would suggest you to use an Excel Addin. There is actually no need for installation when using this kind of Addin. Attach to open workbook and close workbook events and ensure that all changes are written to the Excel Workbook after it has been closed. Certainly you would have to attach to all kind of other events to track all changes to the workbook. You may need to have in mind that there can be more than one workbook opened at a time.
Actually there are alternatives.
write your logging code in VBA or whatever fits
abstract away how your persist the code (e.g. use a data provider)
think about these two alternatives to store logging data:
You can save logging data in cells of excel. When using a "newer" version of excel, you have a limit of 1 million rows. You may want to implement a rolling mechanism that ensures that you never go over the border of 1 million records. (you may be dont want to track a million changes)
You can use the document properties to store you information as xml.
Last but not least, the most obvious: Why not using Excel's functionality of tracking changes? Understand track changes in Excel 2013

SSIS - Can't open Excel file in protected view

I'm running into a strange issue when trying to load excel spreadsheets into my database through SSIS (2012).
I'm getting the spreadsheets (which are xlsx files) via email, and then I manually save them to my local drive (C:\temp). When I try to use the excel file as a source in SSIS, I am not able to pick any excel sheets in the book.
The file is not corrupted, not open on my machine, and not password protected. It is, however, opening in Protected View. So I go into Excel and turned off all the Protected View options, but no cigar. The only way I am able to use the file as an excel source in SSIS is by opening it, and saving over it.
Does anyone have a similar experience? Other than opening and saving all of the files manually, is there a better solution?
It's a known issue with xml based excel (xlsx). If you can save them as xls, that will solve the problem. If for some reason that's not possible you may need to use OLE source to read them.

Resources