Automate Save As File with IUIAutomation in Internet Explorer 9+ - excel

There are 63 entries on Stack Overflow related to "IE VBA Save-as" topic.
That is to automate the Download Notification Bar of IE 9+.
Several methods are recommended to automate this process.
Method 1. using XMLHttp (example link, applied to sites that show the direct url of to-be-downloaded file)
Method 2. using autoitx.dll to send hotkeys (example link, not so stable based on my experience)
Method 3. using IUIAutomation (blogspot link )
I think Method 3 is suitable for most of these situations.
However, I have NOT successfully tried this method, because
1) I can't add reference to UIAutomationCore.dll
I get this dll under C:\Windows\SysWOW64 and the project(*.xlsm) folder
Question1:Please tell me how to add reference to UIAutomationCore.dll.
2) Subroutine Download_Save_As in the page (blogspot link ) uses sending shortkeys to navigate to the save-as window.
I don't thinks this is stable enough as I tried the AutoitX way.
Question2:Is it possible to click the save-as option by using purely IUIAutomation way? and how to?

You have to find the file in reference library and move it where it is looking. You can hover on a reference to see where they are kept. I don't know why this particular reference's location is different.

Related

VBA - where are "available references" stored?

In Excel (or other MS Office apps), when you go to the VBA IDE, the Tools, References list shows you currently selected assemblies as well as a list of others you can add by checkmarking them. You can also hit Browse to navigate to a folder containing a .TLB file of your own making.
But there's a problem. Let's say you you browse to C:\Fubar\PumpHandle.tlb and add it. Everything works fine. A week later, you uncheckmark the reference, because you don't need it in the VBA project your are working on. No problem: PumpHandle is still on the Available References list -- it's just not checkmarked.
A week after that, you delete C:\Fubar\PumpHandle.tlb. Now go into the VBA IDE, Tools, References, and PumpHandle is still on the list, with no way to remove it. Waaaaaah! If you checkmark it, you will of course get an error message, because the PumpHandle.tlb file does not exist. How can you remove it from the Available References list? I have tried searching the Registry and deleting all references to PumpHandle.tlb, but it still shows up in the Available References list. I have tried searching everywhere in %APPDATA%, but I can not find PumpHandle anywhere in there either. Finally, I have looked inside the .xls? --> .zip file of Personal.xlsb, and can't find it in there.
So -- where does the machine store that (obsolete and unusable but highly confusing) reference? How can I get rid of it?
This list is loaded from the registry. The information is put into the registry when you run a command line regsvr32.exe (plain ol' COM) or regasm.exe (.NET COM). This usually happens at installation time and is cleaned up at uninstallation time. Deleting the file won't remove it from the list.
There are a few locations where it could exist in the registry, depending on whether it's a 32-bit or 64-bit type library and upon whether it's registered for all users or only the current user. The list below is (roughly) in order of most common to least common.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes\TypeLib
HKEY_CURRENT_USER\Software\Classes\TypeLib
I don't know where they are stored. Maybe this will get you where you want to go, however.
' You need to add a reference to Microsoft Visual Basic for Applications Extensibilty
Sub ZapReference()
Dim VBAEditor As VBE, VBProj As VBProject, VBRef As Reference
Set VBAEditor = Application.VBE
Set VBProj = ActiveWorkbook.VBProject
For Each VBRef In VBProj.References
If VBRef.IsBroken Then
Debug.Print "Removing: ", VBRef.Name, VBRef.FullPath
VBProj.References.Remove VBRef
End If
Next VBRef
End Sub

Change SharePoint Library URL

How do you change the URI of a SharePoint library? Based on Google searching, most people say that changing the name of a library in Designer (via right click->rename) will result in the URI change, but it is only changing the name for me.
I am using SharePoint 2010 Foundation and these are the steps I am following:
In Designer, navigate to List and Libraries
Right click library -> rename
Notice that name changes
Notice that URI does not change
This is one of the resources I found claiming that this works:
change URL spelling/case on sharepoint library
In SharePoint Designer just navigate to All Files navigation node (not List and Libraries node), find your document library there -> right-click library -> rename.
The URI would change then.
Edit:
At least at SharePoint 2010 it is possible to change library URL, without using SharePoint Designer.
Just go to a library trough 'All Site Content'. When inside the library choose on the ribbon 'Library' tab. Then select 'Open with Explorer'. That will open your SharePoint's library in Windows Explorer window. Navigate one folder up and you will see list of your libraries as folders. Rename required library's folder name as you want the URL to look like.
SOLUTION:
Thank you! I found the suggested SharePoint Designer solution above to work beautifully!
Here are the steps that I took:
Follow the instructions above by opening the List in SharePoint Designer, selecting All Files under the navigation node (near the bottom)
A bunch of folders appeared - I selected the folder named 'Lists'.
From here, it will show the list names and the display names. Change the actual name of the list (first column) by right-clicking on it, rename. This will update the url. You may wish to match this to your display name.
When you return to your site, the navigation link for the list may still go to the old URL. To update this, enter in the new url in your browser, go to List Settings > Title, Description and Navigation. Simply hit the save button without making any changes. The navigation link is now updated.
Please note: If you are updating list urls and names of a project site (from Project Server), do not rename the Risks, Issues lists. These must remain for Project Server to function properly.
Thanks for this solution. I only have Designer permissions but was still able to change a List URL within the browser (not Sharepoint Designer, and must be IE to have Open in Explorer enabled). Steps:
Go to Site Contents and open a Document Library in the site
Click on Library ribbon tab and select Open In Explorer option
Click up one level in the directory structure - there should be a
Dir called 'Lists' - open
Your List should be there to right click and rename.
I was surprised that the system let me do this (it didn't let me delete a document in the same DL that I need to get rid of), but after testing for some time the URL change seems to have held.
Finally - you might have to re-Resolve some views and overlays, as these might not automatically cascade with the new List location.
Cheers,
Ross
I have changed the library URL from SharePoint Designer 2010, in the "Site Object" section --> "All files" option. Then I selected the right library in left pane and press F2 (to change name, like in windows) and worked for me. I hope that helps someone.
You cannot change Document Library URL , only name.
If you want to have a new URL :
Create a new document library with good URL
Batch import all docs from old to new document library
warning :
all new imported doc will be flagged with username used in the import process
all datetime fields will be reinitialized
I don't have Sharepoint Developper installed and can't install it.
I needed to change the address of a List and not a library, so the "Open in Explorer" doesn't work for me (only get "Open in Access" and "Open in Project").
I managed to do it by opening Explorer by myself and paste the URL "http://MyServer/MySite/" (can be also "http://MyServer/MySite/MyPage/").
I got the "All Files" you get through Sharepoint Designer.
In my case I had to go to "Lists" and change the name of the folder for the list I wanted to change the name.
Next I had to change the name of the list from the "List properties" (to change back the visible name of the list)
I am only a Site Collection Administrator for a SharePoint online platform. The powershell and sharepoint designer usage are not within my access so the only option I have is the "Open in Explorer". I tried the steps seen online but didn't get the result. When I saw ragmaxone's step, I got an idea. Then I took the following steps:
I copied my url without the document library eg "http://MyServer/MySite/MyDocLib/ is the URL of the document library but I copied "http://MyServer/MySite/ instead.
Next I opened the document library in classic SPOnline because I use modern SPonline.
Then I replaced the pathway address with the copied URL and saw all my document libraries as folders.
With right clicking on the document library of interest, and renaming like is done in windows, I went back to my document library and saw page not found.(Don't worry! Something had changed already).
Then I went to the homepage of the platformand navigated to the document library in question to see that it has been renamed and the URL also corresponds to the new name.
Thanks for all your answers and help.
In Designer go to "All Files" -> then search for "List" folder ther you can find your List right click it rename it and boom.
By going to Lists and Libraries tab from left menu will only change the title of list. So go to All files and follow the steps.

SharePoint 2007: How to upload multiple files to a List Item?

I know that a Document Library in SharePoint 2007 has a multi-file uploader (an ActiveX control that -- and only if you have Office 2003+ installed) but how would I use this same feature with a normal (non-document-library) List item?
Uploading files to a normal List item involves clicking the "upload" link and browsing/uploading files one by one. Is there a better way than this? Surely there must be.
Jake
There is an approach I use, but there is no UI support for it. You may find it a bit tedious for onsey-twosey uploads, but it saved me hours once for serious bulk uploads.
The same WebDAV functionality that we get when using "Open with Windows Explorer" on a document library is available for a list.
Say I have a list at http://myorg.com/sites/Widgets/Lists/MyList.
I can open the list in Windows Explorer by going to the address \\myorg.com\sites\Widgets\Lists\MyList.
Attachments are stored in the sub-folder Attachments, which contains folders with numeric names (1, 2, 3, ... and so on). The numbers correspond to the item ID of the list item. Pick (or create) a folder with the ID corresponding to the item you want to upload to, and it's drag-and-drop from there.
Short of writing your own mulit-file upload web part I think you are going to be stuck with either one at a time (i.e. an attachment to the list item) or switch to a document library. Don't forget that you can customise your library to behave much like a list.
Why is it a problem to use a document library?
I seem to be making a habit of answering my own questions. Not sure if that's a good thing or not.
What I ended up doing was adding an "Upload Multiple Files" button to the toolbar which pointed to a custom ASPX page in the _layouts folder. This page displayed the ActiveX component used by a Document Library and the "post to" URL for it was the ASPX page itself. When posted to it looked for files uploaded and attached them all to the List Item referenced via URL parameters passed to it from the toolbar button.
It's discussed here:
http://weblogs.asp.net/nathanyorke/archive/2007/12/05/uploading-multiple-files-via-the-web.aspx
If I get round to blogging and fuller explanation on my own site I'll try and remember to post a link back here.
Jake

How do I "Create a Reference To a Different Workbook" that supports closed workbooks

I want to do something like this:
Create a Reference To a Different Workbook (look for this section in the page).
However, the instruction says that the documents must be opened for the INDIRECT function to work.
How can I make it work even if the documents are closed?
Any other solutions / alternatives?
I don't want to open each file and link it manually.
I want to be able to input the filename only, assuming the files are all in the same folder.
There is a UDF version of INDIRECT (INDIRECT.EXT) available from http://xcell05.free.fr/morefunc/english/ that allows access to external workbooks even when they are closed
EDIT
Just checked the page and the download link doesn't work, but the download files can be found here, including the download for MoreFunc version 5.06 which contains the INDIRECT.EXT function

Possible to create thumbnails of MS Office files?

Have anybody ever tried to create thumbnails/previews of MS Office files? I do not mean extract saved preview images inside the file, but actually create them. Would this even be doable?
Could one print to an image/pdf directly in code?
In a general VB/C# application, add the MSword/MSexcel component and call the component to open the file you want. Then call one of the print functions with the parameters corresponding to first page etc.
This link shows how to open a .xls from C#

Resources