Файлы Excel на Sharepoint - PullRequest
0 голосов
/ 04 июля 2018

У меня вопрос по Excel VBA. У меня есть несколько файлов Excel, расположенных в папке sharepoint. Мне нужен макрос, который объединит эти файлы в один документ и имеет возможности обновления. У меня есть код, который отлично работает, когда файлы Excel находятся на моем диске D :, но я не уверен, как изменить мой код, если файлы теперь находятся в файле на sharepoint. Код имеет ошибку на этапе Имя файла. Кто-нибудь знает, как изменить мой код ниже, если путь к папке теперь является URL? Любая помощь будет здорово! Большое спасибо !!!

    Sub copyOrRefreshSheet(destWb As Workbook, sourceWs As Worksheet)
      Dim ws As Worksheet
      On Error Resume Next
      Set ws = destWb.Worksheets(sourceWs.Name)
      On Error GoTo 0
      If ws Is Nothing Then
        sourceWs.Copy After:=destWb.Worksheets(destWb.Worksheets.Count)
      Else
        ws.Cells.ClearContents
        ws.Range(sourceWs.UsedRange.Address).Value = sourceWs.UsedRange.Value2
      End If
    End Sub

Sub ConslidateWorkbooks()

Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet

Application.ScreenUpdating = False
FolderPath = "D:\Users\jfreds\Desktop\temp folder\"  
Filename = Dir(FolderPath& "*.xls*")                                                             

Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
copyOrRefreshSheet ThisWorkbook, Sheet
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop

End Sub

1 Ответ

0 голосов
/ 04 июля 2018

Если вы открываете книги, которые находятся в одной папке, измените FolderPath на:

FolderPath = ActiveWorkbook.Path & "\"

Я только что проверил это, и он будет открывать файлы в этой папке, даже если они находятся на SharePoint. Он будет работать везде, где находится папка. Другим решением будет синхронизировать эту папку с OneDrive, и тогда у них будет фиксированный путь на вашем компьютере.

Редактировать: я получил это, чтобы открыть и закрыть две другие *.xlsx книги и пропустить книгу с макросом. Я предполагаю, что он был сохранен как *.xlsm рабочая книга и будет взят с *.xls*. У меня также был Debug.Print в неправильном месте.

    Sub ConslidateWorkbooks()

    Dim FolderPath As String, Filename As String, TWB As String
    Dim Sheet As Worksheet

    Application.ScreenUpdating = False

    FolderPath = ThisWorkbook.Path & "\"
    Filename = Dir(FolderPath & "*.xlsx") 'only will open *.xlsx files

Do While Filename <> ""
Debug.Print (Filename & " will open.")
        Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
        Debug.Print(Filename & " is active.")
        For Each Sheet In ActiveWorkbook.Sheets
            copyOrRefreshSheet ThisWorkbook, Sheet
        Next Sheet
        Debug.Print (Filename & " will close.")
        Workbooks(Filename).Close SaveChanges:=False
        Filename = Dir()
Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...