Transfer pictures from one workbook to another - excel

I would like to build two workbooks. Workbook A contains a list of animals and pictures as raw data; Workbook B contains a list of animals, and could automatically get their corresponding pictures from Workbook A.
If they were numbers or texts rather than pictures, we could connect the two workbooks by external links (to ranges or names), or by Power Query. But it seems that external links or Power Query don't work with pictures?
Does anyone know how connect two workbooks to achieve this? Does anyone know if it is possible to assign a picture to a cell?

You can use a vlookup-type of setup where the picture changes based on the value entered into a cell. There is an explanation here: https://exceloffthegrid.com/automatically-change-picture/
You'll have to use paste as link or link to picture. I personally cannot test this because Office 365 has paste as link disable right now.
EDIT:
I figured out how to work around Excel.
Insert a Pic
Size it down to the desired cell height/width
Don't click on the pic with the mouse, but move the directional keys with the keyboard (i.e., the green selection [] box) to the cell behind the pic.
Control + C to copy, not the mouse
Pastespecial as linked picture

So, I can't see how you can link them directly but you can use VBA to copy the picture from one workbook to another. You may not like that approach but it's plausible in theory.
Your question regarding whether or not a picture is linked to a cell is a firm yes.
A picture in Excel is classed as a shape. You can loop through each shape and determine if it's a picture or not and then from there, you can copy it from one workbook to another into any cell you care to specify.
The cell the picture resides in can be determined from the TopLeftCell property of the shape itself.
You can test that via this (sandboxed) code below.
Public Sub CopyPictures()
Dim objShape As Shape, objFromSheet As Worksheet, objToSheet As Worksheet
Set objFromSheet = ThisWorkbook.Worksheets("From")
Set objToSheet = ThisWorkbook.Worksheets("To")
For Each objShape In objFromSheet.Shapes
If objShape.Type = msoPicture Then
objShape.CopyPicture
objToSheet.Range(objShape.TopLeftCell.Address).PasteSpecial
End If
Next
End Sub
Open a new workbook and create two sheets, name them "From" and "To".
Copy a few pictures into the "From" sheet and then run the macro.
If you're happy using VBA then the above code will give you a starting point of getting the image from one workbook to another. You just have to fill in the gaps and write the logic around it.
Is it straight forward? Depending the desired outcome, it may very well not be. All possible though with time and effort.

I know that it's not perfect method, but this might help you.
In Workbook A images should be put on specific cell and perfectly located. e.g. C2:
In Workbook B you need to put an image, you can paste any image, then select the picture and put the link to cell of Workbook A as a formula: =[Book1]Sheet1!$C$2

Related

Is possible to mirror a chart in another place?

I have a chart on one excel worksheet, and I want to show it in another worksheet without moving the original chart.
I do not want to copy and paste it, because if I modify the original chart (for example, changing his format), it will not be reproduced in the copy.
Is possible to hack it to show the chart in another page? Maybe a picture whose image is automatically taken from the original chart?
I frequently modify the original chart, and I have another worksheet where I watch many charts at once.
This can be done with a dynamic image, without VBA.
It will work best if the original chart is perfectly aligned with a range of cells.
select the range of cells behind the chart, for example A1:D10. You may want to give that range a name with the Name Manager, i.e. myChart, for convenience
on the Home ribbon, click the Copy dropdown and select "Copy as Picture"
accept the defaults "as shown on screen" and "picture" and hit OK
in the target worksheet (in the SAME workbook), select a cell and paste from the clipboard
select the pasted image and click into the formula bar. Enter the cell range you copied it from into the formula bar, e.g. =Sheet1!$A$1:$D$10, or, if you have set up a name, use that, like =myChart
The image is now dynamic and will reflect whatever content is showing in the specified cell range. If you resize the original cells, the dynamic image will distort.
Be aware that you are not creating an image of the actual chart, but only of the cells that the chart covers. If you move the chart away from the range, then it will not be visible in the dynamic image.
That's why this technique works best if the chart is perfectly aligned with a range of cells.
More details about this technique, using it to create combination Sparklines is in this article written in 2011, but everything still applies.

Is there a way to make Conditional Formatting ignore the FollowedHyperlink flag?

I have a table of contents in Excel 365. In the table, column 2 contains the names of worksheets and column 3 contains the names of tables and/or named ranges in the associated worksheet. I used the HYPERLINK function to link each cell to its specific component: hyperlinks for the worksheet column go to cell A1 on the associated worksheet; hyperlinks in the table/named range column go to that specific table or named range.
Since this results in several repeats of worksheet names, I used conditional formatting to change the text to white when the worksheet name is a repeat of the one directly above it. This makes it look more like an outline. It works like a charm up until the point that I click on the link in a repeated cell, making it a FollowedHyperlink. When I return to the table, this is no longer whited out. Is there a way to make these stay white, even after they've been followed?
Here's the formula I used for the conditional formatting rule applied it throughout the range =$C$6:$C$24:
=C5=C6
Here's what it looks like before I click one of the whited-out cells:
Here's what it looks like after I click one of the whited-out cells:
Urdearboy posted a link showing how to change the style of a followed link.
https://superuser.com/questions/728825/how-do-i-prevent-excel-from-changing-the-color-of-a-clicked-link/819931#819931
It is probably the best solution without using VBA.
But if you want some not control over it, if for example, you may want all links in a table if contents to be uniform color regardless if they were taken or not, but you want links in the rest of the book to change. That's as easy as a single line of VBA in the worksheet's SheetFollowHyperlink event:
Target.Range.Font.Color = vbBlue
And if you wanted to apply it to the entire workbook instead of a single sheet you would put it in the workbook's SheetFollowHyperlink event.
But if you want to be a little creative...
You could make the link disappear by blending it with the background color:
Target.Range.Font.Color = Target.Range.Interior.Color
Or you can draw attention to it, by changing the back color:
Target.Range.Interior.Color = vbYellow
Really, your imagination is the only limit. You can do just about anything you'd ever want to do ( and a lot more of things you would never want to do).

How to find out which cells are pulling data from another sheet

I want to find out exactly which cells in my excel workbook are pulling data from another sheet inside the same workbook. Is there a way to do this?
Yes, there is an easy way to do it if you don't have a lot of cells.
Click the cell you want to check, then go to "Formulas" -> "Trace Precedents". [you need to do it for each cell :(, so that's the disadvantage]. You might need to click several times for each cell.
Notice the difference in my picture. The cells in the range B5:B13 has a formula linked to an external source (another worksheet or another workbook, shown as a little mini table), while the cell B15 who has a blue arrow, is linked to cell E14 on the same worksheet!
If you want to know which linkage (which source cell it's linked to), klick on the arrow and you should see this window;
If there are a massive amount of cells, I would give this VBA code a try:
VBA to list all external links together with the cells containing the links

Exporting Excel data into a PowerPoint presentation

I am trying to write an add-in for Powerpoint, the user should be able to select cells in an Excel worksheet and then go to the Powerpoint slide he would like to paste that table in, after starting the Add-in, a macro should create a table and copy cell by cell. Afterwards the macro will format the PowerPoint table according to our formatting guidelines. I am running into some issues now:
1) How can I go through the cells within a selected range in Excel, I tried to loop through the cells within the selected range, but neither this nor counting the rows/columns with in the selected range works (I am rather unfamiliar with Excel VBA)
2) What is the best way to copy data from Excel to Powerpoint? I have seen some suggestions that use a string array, that reads in all the data first; some users re-use one variable to copy the data and some do it directly from a XL to a PPT reference, what are the advantages of the different approaches?
Thanks a lot
s
For your first question, here is a snippet of code that works (yet, it depends on what you intend to do):
Dim C As Range
For Each C In Range("A1:A100")
'do stuff
Next C
For your second point, it depends on the results you expect :
a PowerPoint formatted array
an Excel Object embedded into PowerPoint
copy-paste the values inside the slide content
Once you have chosen, it's easy to find ressources on the web to do what you want.

How to crack an Excel workbook that looks up values?

Alright I know this isn't 100% related to programming (the Excel book in question doesn't use VBA at all) but I'm hoping someone can help me out with this or point me in the right direction.
My boss got a spreadsheet from a vendor that has a combobox/dropdown list with various part numbers; when you select one it populates the rest of the form with a lookup containing additional items. I've been tasked with "cracking" this and finding the list that they're using to populate so we can make use of it.
The thing is... there's no VBA code, no macros, no data connections, and only one Worksheet displayed in Excel while the lookup code references a Sheet1. I've tried to display hidden worksheets and it says there are none... so where on earth could this list be kept? My boss is getting impatient and is asking me if I've broken it yet. It's not a big deal if it can't be done, I just have no clue where to continue looking for it and I don't know what to tell my boss when he asks me if I'm done.
Can anyone help?
It's possible to hide a worksheet using VBA so that it can't be unhidden from the UI.
Try the method for un-hiding all hidden workhseets outlined here:
http://www.automateexcel.com/2004/12/14/excel_vba_unhide_all_worksheets/
My guess is that it is a Data Validation list which references a constant list of values or a range on a "Very Hidden" sheet. In Excel 2007, select one of the cells with the drop-down, click on the "Data" tab in the Ribbon, click on "Data Validation" in the Ribbon and see what you have. In Excel 2003 it is the Data -> Validation... command.
Another possibility if you know the name of the worksheet is "Sheet1" is to add a new worksheet, enter "=Sheet1!A1" into cell A1 of the new worksheet, and copy this cell down and to the right for as large of an area as you need to see the data you are interested in.
If you can post a URL to download the workbook (assuming it is not a trade secret) you would be more likely to get an accurate answer.
Could it be some data stored on the same sheet.
Possibly in columns which are either hidden, or which are far off the actual page?
Isn't this just data from the worksheet only?
Column header dropdown lists acts as filters, they show distinct values of a column.
This is a feature of Excel.
The items could be cached from a currently unavailable resource. Try saving it out to xml and searching for a known string.
Click on the cell that display a drop down list when selected
From the menubar select data>validation
In the dialog box copy the content of the source text box
Now paste the content on any empty cell on your worksheet
Select a drag it down to see the values populating the list
Chris
------
Convert your Excel spreadsheet into an online calculator.
http://www.spreadsheetconverter.com
I am assuming that you have broken this by now, but just in case you havent. This is certainly a case of data validation using a named range which is house on another sheet that was designated "very Hidden" from the vba console. You will need to open up the VBA project of this worksheet and designated the "very Hidden" sheet to just Hidden and then you will be able to unhide it, or the other setting at which point it will be viewable.

Resources