У меня есть бизнес-аккаунт, который создал папку документов SharePoint, из которой я локально синхронизировал ее с моими компьютерами через OneDrive (на диске D, доступен локально).
В VBA из Excel я знаюесть способ вызвать локальное расположение OneDrive с помощью
environ("OneDrive")
Однако я не знаю, как указать это в своем файле Excel, чтобы найти локальный файл, который хранится в SharePoint.
Причина, по которой это важно, заключается в том, что мне нужно использовать VBA для выполнения слияния, и я обнаружил, что хранимый в SharePoint XLSM не может быть правильно подключен.Вот код:
Private Sub InvitationLetter_Click()
Dim WordApp As New Word.Application, ActionFormDocument As Word.Document, WorksheetName As String
Dim OSPFullPath As String: OSPFullPath = ThisWorkbook.FullName
WorksheetName = ActiveWorkbook.Sheets("Guest Speakers").Name
With WordApp
.DisplayAlerts = wdAlertsNone
Set ActionFormDocument = .Documents.Open(ThisWorkbook.Path & "\1.2 - Guest Speaker\02 - Guest Speaker Invitation Letter.docx", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentfiles:=False)
With ActionFormDocument
With .MailMerge
.MainDocumentType = wdFormLetters
.SuppressBlankLines = False
.OpenDataSource Name:=OSPFullPath, ReadOnly:=False, _
LinkToSource:=True, AddToRecentfiles:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
"User ID=Admin;Data Source=OSPFullPath;" & _
"Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
SQLStatement:="SELECT * FROM`" & WorksheetName & "$`" & "WHERE `Status` = 'Pending' And `Nomination Details Alert` LIKE '%Urgent%'", _
SubType:=wdMergeSubTypeAccess
.ViewMailMergeFieldCodes = 0
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
End With
End With
.DisplayAlerts = wdAlertsAll
.Visible = True
.Activate
End With
Unload Me
End Sub
Мне нужно указать OSPFullPath локально (например, D: \ One Drive \ Excel.xlsm).Я не могу использовать функцию 'полное имя'.
Какой-либо код окружения, который я могу использовать, или в любом случае, чтобы определить местоположение файла?