Opening Excel file from Sharepoint as Read-Write - excel

I automatically open, edit, save and close several Excel workbooks from a Sharepoint location. The following code opens the workbooks (path loops through a list to hit each workbook name):
Workbooks.Open Filename:=path, ReadOnly:=False, Editable:=True
The files open in Read-Only mode, and the yellow dialogue option to Enable Editing does not appear.
I edit these workbooks manually and through a macro, but I am unable to save the files back onto the Sharepoint afterwards without saving as a new file.
I am using Excel 2013. This was working as intended about a year ago, but I believe there may have been updates to Office 365. I checked all of the Excel workbook security options, and nothing is set to open by default as Read-Only.
Is there any way to open the file in an editable mode through the macro, or at the very least allow the Enable Editing option to appear for each workbook?

I have been trying to fix the same problem for my files, and eventually did! So I felt that I could maybe let others know. And this old-ish thread came up near the top of my google search.
What fixed it for me was to edit the link.
from:
https://Company.sharepoint.com/:x:/r/teams/TeamNo/Shared%20Documents/Example/CoolFolder/TheBestExcelFile.xlsm
To:
https://Company.sharepoint.com/teams/TeamNo/Shared%20Documents/Example/CoolFolder/TheBestExcelFile.xlsm
Note that I only used replace to get rid of :x:/r/. I feel like I should have noticed this before but I didn't and no amount of meddling with the Workbook.Open parameters got me anywhere. It just seems odd that the default link copy thing gives you one with special commands in it. For our company most folders have spaces so the link has tons of "%20" in there so I simply read over the ":x:/r/".
Hope it helps someone.
Just for clarity, try this:
Sub Example()
'1.) Get filepath from somewhere
FilePath = Replace("https://Company.sharepoint.com/:x:/r/teams/TeamNo/Shared%20Documents/Example/CoolFolder/TheBestExcelFile.xlsm", ":x:/r/", "")
'2.) Open the file
Set StatisticsFile = Workbooks.Open(FileName:=FilePath, Password:="123")
'3.) Do things
'4.) Close the Sheet, save the changes. I simply like it this way, could be done in a single line.
StatisticsFile.Save
StatisticsFile.Close savechanges:=False
End Sub
I noticed this solution because I could still save the .xlsx file manually with the same name if I navigated to SaveAs. So if you guys can still do that after opening the file via macro, try a similar solution.

The interaction designed for Excel-OneDrive-SharePoint is new in 2016 apps and that version is a requisite to properly work.
The version 2013 may work by tweaking the OnDrive “Account” settings regarding Office co-authoring configuration which is specifically applied to Excel and Word
Right click the OneDrive icon in the taskbar to reach settings
Good luck!

I know your query was posted long ago but I have found the solution to remove the Read-Only blocker and update the excel document via Macro:
If you add "ActiveWorkbook.LockServerFile" after the code of opening the file, then it removes the Read-only and updates the excel as normal.

Related

Corrupt VBA Project Module Not Found Error

I have a workbook that was saved yesterday afternoon, and was working perfectly. I have opened it this morning, and none of the modules in the VBE are 'found'. Visually I can see them all sitting there.
When trying to open any of these modules to edit the code, the windows are greyed out, as below.
When I try exporting the code modules, I get the 'Module Not Found' errror.
Does anyone know a) why this has happened, and b) how can I fix this?
I thought initially it was the instance of my Excel, so have restarted the PC.
Any help is appreciated!
I managed to find a workaround to this problem, so sharing the solution in the event that someone else comes across a similar problem.
It seems that the VBA Project got corrupt somehow. Below, find some suggestions and workarounds in trying to solve something similar in the future.
This is what worked for me. Convert the .xlsm file to a .xls file. You can do this by changing the file extension when renaming the file.
You can also try to convert to .zip file type, and then convert back to .xlsm. Note: convert COPIES of your original, just in case.
Other suggestions (as Chris Nelisen suggested) are:
Export your VBA modules regularly
Save different versions as you are building
My workaround, works perfectly:
Open Excel in safe mode (pressing and holding Ctrl while you start
the program, or by using the /safe switch (excel.exe /safe) when you
start the program from the command line)
Open corrupted workbook (from safe mode, File->Open-> navigate)
Do not enable macro if asked
Make sure macro is present (Alt+F11) - not necessary
Save as new workbook
Close safe mode excel
Open saved workbook as usual
This is a well-described issue, and it exactly matches what I have just experienced (even including the fact that I haven't been versioning recently).
My file has an xlsb suffix. Resaving with a different suffix did not work for me on the same PC, but I emailed the file to another PC, opened it, saved as xlsm, sent it back to the original machine and it now works fine again. I can even re-save with my preferred xlsb suffix and it still works.
I've also run this script to make a backup of my modules:
Sub ExportVbaModules()
'Acknowledgements to Andy Pope [ozgrid thread 60787]
Dim objMyProj As VBProject 'if error, go to VBA editor - tools - References - Microsoft Visual Basic-Extensibility5.3
Dim objVBComp As VBComponent
Set objMyProj = Application.ActiveWorkbook.VBProject
For Each objVBComp In objMyProj.VBComponents
If objVBComp.Type = vbext_ct_StdModule And objVBComp.Name <> "" Then
objVBComp.Export "C:\Users\MyName\VbaBackups\" & objVBComp.Name & ".txt"
End If
Next
End Sub
The And objVBComp.Name <> "" stops it from erroring when it encounters a corrupted module but turned out not to be necessary as the 'fixed' file contained no corrupted modules.
Since that export routine is so fast (40 modules / 100kb saved in <1s) I will be assigning it to a button on the ribbon with a better naming convention for the files it creates.
I copied my .xslm file from my PC to my OneDrive account.
I open the file on my iPad OneDrive account and then export to Excel for iOS. The file opens and says links and macros are disabled. I then save a copy of the file back to the OneDrive account. I go back to my PC and open the file from OneDrive. I re-establish the links.
The macros are from a backup. This is an issue if you aren't backing up your macros.
Do you have this file on OneDrive?
If yes, I was facing that issue, and resolved restoring the last save. If you open OneDrive site (onedrive.live.com), find the file, and select Version History. Download the penultimate.
When this happens on 64 bit Excel, I simply open the exact same file in 32 bit Excel and the macros re-appear.
When this happens on 32 bit Excel, I simply open the exact file in 64 bit Excel and the macros re-appear.
Try to open the excel file in repair mode and save as the file one more time.
Open and Repair
I tried everything suggested and nothing worked. I could only see the module when I opened my VB editor. It was not available through the view macros ribbon shortcut. I was unable to export the module or copy it to a new workbook.
What finally worked for me was emailing it to myself, downloading it through my 365 outlook account via a web browser, and then the code was there.

Why does the VBA Excel Addin code disappears and doesn't function after I close Excel and open a new Excel file?

I created a simple vba addin that colors cells based on their value, and I created a function that calls it with a shortcut then I saved it as an Excel addin and added it to Excel.
The problem is the addin works fine when I add it the first time, but when I open a new Excel file, I need to disable and enable the addin for it to work.
Update: I tried it on another computer and it works, but it shows an error that when I ignore it works fine. I am adding screenshots for the error and code
Error Message
Code
Sometimes, Excel will open workbooks in another Excel Application. This second application can sometimes face some issues with addins. You should double-check that the new file is opened in the same Excel Application. By looking at the task manager:
In this example, I'm using Window 10 and you can see that Book3.xlsx is in a different Excel Application than Book2.xlsx and Book1.xlsx
EDIT:
This question could also be of interest to you. The accepted answer reads:
This problem results from security patch in KB31152, released in July 2016. According to private communication with Microsoft software engineers:
"With this update, we changed the behavior of Excel so that it will
not load certain file types (including .xlam) when they are untrusted.
The easiest workaround is to find the add-in that is causing you
trouble, right-clicking on it in Windows Explorer, and checking
Unblock"
An easier approach is to simply place the add-in in a Trusted Location
(in Excel, go to File > Options > Trust Center > Trust Center Settings
Trusted Locations), such as the following folder, and load it from there:
C:\Users\%USER NAME%\AppData\Roaming\Microsoft\Excel\XLSTART
EDIT2:
And don't forget the option of just restarting your computer just to make sure that the problem is still there.

PERSONAL.XLAM is being opened as read-only

I've been using a PERSONAL.XLAM file for years in Excel 2013(?) with no issue. I am now using Excel for Office 365 and am having a problem using the same file.
I used to be able to open a workbook, PERSONAL.XLAM would open along with it, and I could go into Developer > Visual Basic, and change VBA code and save. Perfect.
Now, with Office 365, I get an error saying I can't save because PERSONAL.XLAM is read-only. I checked the Windows file attributes, and the Read-only checkbox is not checked, so I'm not sure why it would be opening as read-only.
In addition to now using Office 365, I'm also on an entirely new PC, so there might be something I'm missing, but I don't know what to do.
Edit: I think I found a new wrinkle. I moved the Personal file from my XLSTART folder to my desktop. If I open the Personal file directly from there, I get an error that says, "Sorry, Excel can't open two workbooks with the same name at the same time." Does that mean it is open somewhere else already?
I figured it out. I actually had code in Workbook_Open that looked at the Application.UserName. If it wasn't a match for what it checked against, it made the Personal file read-only. And as I mentioned before, I got a new computer and my name was set to something different. After I changed my username back to what I used to use, everything is back to the way it was.
If it wasn't for that "security check," I wouldn't have had any issues. In other words, you can have the XLAM file in the XLSTART folder and make changes to it while you have it open, which is what I wanted.
This is obviously a self-imposed, yet accidental, issue. I'll mark it as answered, but if it would be better to close it, that's fine too.

Is default open mode for ExCel (Office 365) configurable?

I googled around and found no answer for what I think should be an obvious question/problem, so I'll ask here.
I have an ExCel spreadsheet that I want to share with a couple other guys. Version, as far as I can tell, is "Office 365 ProPlus" (sorry if that's wrong, I'm a linux guy). I do the vast majority of the writing/editing, the other guys mostly just read it. I put it on a shared drive. But when they open it, it opens in edit mode and I'm locked out because one of the other guys (who just wanted to read it) opened it and the default open mode is edit.
I want to change the default open mode to be read_only. If I want to open for edit, I don't mind clicking a few times to get to that point. But what I can't have is being locked out because the read_only guys have it locked. If they have it locked because they're making changes, that's fine. But for the 95% of the time, where I write and they read, I don't want them to unintentionally lock the thing when all they want to do is read.
Is this sort of thing possible ? Can I configure this ?
You may save your document as "Read-only recommended" and get your friends to open it read-only whenever they do not need to edit the document:
For the new versions (2013 & 2016), while Saving or Saving As your file press Browse button, go to Tools | General Options and select the Read-only recommended check box. If you want you may enter a password too. After this, the users will be recommended to open the document as read only; if they want, they may still open the file in edit mode.
In addition you may use the shared workbook feature of Excel which allows multi users to edit the document at the same time. And using this way you may track which changes are made when and by whom too.This feature can be activated using Review / Share Workbook button. If you have a newer version of Excel, this button is hidden, you may unhide it using the instructions here: unhide shared workbook
Old post but I just had the same question and landed here. I was also suspecting the Office version but it turns out that's not it. I figured it out that instead of going to the File-Properties you have to go to the "Save As..." dialog box, and there, next to the Save / Cancel buttons, is the Tools... dialog where you can set a "Read-only recommended" check mark.
I think the implication is that it's not a document property, it's a windows file property - that's why it's not in the File-Options menu.
After I found it, I remembered that this is how I always used to do it in old versions of Excel many years ago, so it's really unchanged.

Personal Macro Workbook has gone missing (AGAIN)!

I don´t understand why, but it´s the second or third time I've lost my Personal Workbook with all my macro copies. The only different thing that I've done was editing a macro but, when excel was closing, I haven't saved the changes. Next time I've opened excel, surprise, surprise, no Personal Workbook! Has anyone had the same problem? Does anyone know why it happens? I have already searched in (I believe so) all possible folders where It could be stored.
Thanks!
the file can be found for 2007/2010 users in :
C:\Users\User ID\AppData\Roaming\Microsoft\Excel\XLSTART
or somewhere similar for others.
Hope this helps
The folder where the personal macros are saved can be found by using the command:
?Application.StartupPath (without "" sign) in VBA.
Open VBA (ALT+F11) and enter the command in the field on the bottom.
Hope this helped
Using Microsoft office 365. Lost Excel and Word Macros during last update. Had an Excel File that I had copied to my laptop (Windows 10) which had not been updated. Brought it up on my desktop. Was able to see modules but no content. Was unable to remove modules. Uninstalled Office 365. After reinstall, was able to see and use macros from that file. Word macro not retrieved. Hope it helps someone.
Mine went missing completely and was not in the xlstart folder. I finally discovered it was because I'm on a work server, files are all network storage based, and I had just changed my network password. I think the mis-match caused my links to personal files to be temporarily broken. I logged out completely, and back in, and everything was back where it should be.
In short: I tried turning it off and turning it back on again.
For those using MacOS / OSX (El Capitan) with Excel 2016 I located my copy of Personal Macro Workbook.xlsb, which I had previously unhidden in Excel, then closed, in the following location:
~/Library/Containers/com.microsoft.Excel/Data/Application Support/User/Personal Macro Workbook.xlsb
Please note that I used multiple search functions within OSX which did not return this file in the search results for some reason.

Resources