I was recently working with a set of excel spreadsheets that have macros to consolidate data from multiple diffrent files into a single consolidated file. I needed to move these to sharepoint online, and it took me a long time to find the correct URL format to pass to the Workbooks.Open Filename parameter in order to open the sharepoint URL. What worked for me was the following URL format:
\\tenant.sharepoint.com@SSL\sitename\path\filename
You can find the correct URL for a specific file by opening \\tenant.sharepoint.com@SSL\ in an explorer window and browsing.
The code to open a file and copy and paste is as follows:
Sub ClearBI()
'Quick search in destination for last non blank row
Sheets("BI").Select
Skiprows = 32768
ThisRow = 2
Do While Skiprows >= 1 And Cells(ThisRow, 1) <> ""
If Cells(ThisRow + Skiprows, 1) <> "" Then
ThisRow = ThisRow + Skiprows
Else
Skiprows = Skiprows / 2
End If
Loop
Range(Cells(2, 1), Cells(ThisRow, 4)).Select
Selection.ClearContents
End Sub
Sub CopyData()
ConsolidatedWindowName = Application.ThisWorkbook.Name
Windows(ConsolidatedWindowName).Activate
ClearBI
ActiveWorkbook.PrecisionAsDisplayed = False
Application.ScreenUpdating = False
Row_Counter = 12
Windows(ConsolidatedWindowName).Activate
Do While Sheets("FileNames").Cells(Row_Counter, 1) <> ""
Windows(ConsolidatedWindowName).Activate
ThisFileName = Sheets("FileNames").Cells(Row_Counter, 2)
'Show active file name in status bar (so you can see progress)
Application.StatusBar = "Transferring Data from " & ThisFileName & "...Please be patient..."
OpenFileName = Sheets("FileNames").Cells(Row_Counter, 3)
PathName = OpenFileName
Workbooks.Open Filename:=PathName, UpdateLinks:=0
' Copy 1st set of Data from each location source file
Windows(ConsolidatedWindowName).Activate
Sheets("Dbase").Select
PositionCell_1
' Copy the BI data from source
Windows(ThisFileName).Activate
Sheets("BI").Select
Skiprows = 32768
ThisRow = 2
'Quick search for first non blank row
Do While Skiprows >= 1 And Cells(ThisRow, 1) <> ""
If Cells(ThisRow + Skiprows, 1) <> "" Then
ThisRow = ThisRow + Skiprows
Else
Skiprows = Skiprows / 2
End If
Loop
Range(Cells(2, 1), Cells(ThisRow, 4)).Select
Selection.Copy
SourceRows = ThisRow - 1
'Quick search in destination for last non blank row
Windows(ConsolidatedWindowName).Activate
Sheets("BI").Select
Skiprows = 32768
ThisRow = 2
'If there is data, find the first blank row
If Cells(ThisRow, 1) <> "" Then
Do While Skiprows >= 1 And Cells(ThisRow, 1) <> ""
If Cells(ThisRow + Skiprows, 1) <> "" Then
ThisRow = ThisRow + Skiprows
Else
Skiprows = Skiprows / 2
End If
Loop
'Increment to the first blank row
ThisRow = ThisRow + 1
End If
Application.Goto ("R" & ThisRow & "C1")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
' Close Source File
Windows(ThisFileName).Activate
Application.CutCopyMode = False
Workbooks(ThisFileName).Close SaveChanges:=False
Row_Counter = Row_Counter + 1
Loop
MsgBox ("Consolidation Complete!")
Sheets("FileNames").Select
Range("B6").Select
End Sub