source

SharePoint 사이트에서 Excel 파일 열기

lovecheck 2023. 7. 6. 22:20
반응형

SharePoint 사이트에서 Excel 파일 열기

쉐어포인트에서 VBA를 사용하여 엑셀 파일을 열려고 합니다.매크로를 실행할 때마다 찾고 있는 파일이 다를 수 있으므로 SharePoint 폴더를 보고 필요한 파일을 선택할 수 있어야 합니다.

아래 코드는 네트워크 드라이브에서 파일을 찾고자 할 때 잘 작동하지만 SharePoint 주소로 바꾸면 "run-time error 76: Path not found"가 표시됩니다.

Sub Update_monthly_summary()

Dim SummaryWB As Workbook
Dim SummaryFileName As Variant

ChDir  "http://sharepoint/my/file/path"
SummaryFileName = Application.GetOpenFilename("Excel-files,*.xls", _
1, "Select monthly summary file", , False)
If SummaryFileName = False Then Exit Sub

Set SummaryWB = Workbooks.Open(SummaryFileName)

End Sub

이 주소를 Windows 탐색기에 붙여넣으면 SharePoint 폴더에 액세스하는 데 문제가 없으므로 경로가 올바른지 확인합니다.

왜 VBA가 싫어할까요?

다음 코드를 사용하여 쉐어포인트 사이트에서 파일을 선택합니다.

Dim SummaryWB As Workbook
Dim vrtSelectedItem As Variant

With Application.FileDialog(msoFileDialogOpen)
    .InitialFileName = "https://sharepoint.com/team/folder" & "\"
    .AllowMultiSelect = False
    .Show
    For Each vrtSelectedItem In .SelectedItems
        Set SummaryWB = Workbooks.Open(vrtSelectedItem)
    Next
End With

If SummaryWB Is Nothing then Exit Sub

내 기억이 맞다면,Microsoft Scripting Runtime참조를 사용하도록 설정해야 합니다.또한, 당신의 사이트는 백슬래시를 사용할 수 있고, 내 사이트는 포워드슬래시를 사용할 수 있습니다.

제가 만든 다음 함수를 사용하여 URL을 WebDAV 주소로 변환합니다.또한 이 함수는 일반 시스템 경로와 UNC 경로를 손상 없이 반환합니다.

의 모듈에 하고 VBA 프로추고다가음입력다호이니출합함를수여를 입력하여 호출합니다.MyNewPathString = Parse_Resource(myFileDialogStringVariable)파일 대화 상자 명령 바로 뒤와 파일 대화 상자에서 선택한 경로를 사용하기 전입니다.그런 다음 대상 파일 위치를 사용할 때 "MyNewPathString"을 참조합니다.

 Public Function Parse_Resource(URL As String)
 'Uncomment the below line to test locally without calling the function & remove argument above
 'Dim URL As String
 Dim SplitURL() As String
 Dim i As Integer
 Dim WebDAVURI As String


 'Check for a double forward slash in the resource path. This will indicate a URL
 If Not InStr(1, URL, "//", vbBinaryCompare) = 0 Then

     'Split the URL into an array so it can be analyzed & reused
     SplitURL = Split(URL, "/", , vbBinaryCompare)

     'URL has been found so prep the WebDAVURI string
     WebDAVURI = "\\"

     'Check if the URL is secure
     If SplitURL(0) = "https:" Then
         'The code iterates through the array excluding unneeded components of the URL
         For i = 0 To UBound(SplitURL)
             If Not SplitURL(i) = "" Then
                 Select Case i
                     Case 0
                         'Do nothing because we do not need the HTTPS element
                     Case 1
                         'Do nothing because this array slot is empty
                     Case 2
                     'This should be the root URL of the site. Add @ssl to the WebDAVURI
                         WebDAVURI = WebDAVURI & SplitURL(i) & "@ssl"
                     Case Else
                         'Append URI components and build string
                         WebDAVURI = WebDAVURI & "\" & SplitURL(i)
                 End Select
             End If
         Next i

     Else
     'URL is not secure
         For i = 0 To UBound(SplitURL)

            'The code iterates through the array excluding unneeded components of the URL
             If Not SplitURL(i) = "" Then
                 Select Case i
                     Case 0
                         'Do nothing because we do not need the HTTPS element
                     Case 1
                         'Do nothing because this array slot is empty
                         Case 2
                     'This should be the root URL of the site. Does not require an additional slash
                         WebDAVURI = WebDAVURI & SplitURL(i)
                     Case Else
                         'Append URI components and build string
                         WebDAVURI = WebDAVURI & "\" & SplitURL(i)
                 End Select
             End If
         Next i
     End If
  'Set the Parse_Resource value to WebDAVURI
  Parse_Resource = WebDAVURI
 Else
 'There was no double forward slash so return system path as is
     Parse_Resource = URL
 End If


 End Function

이 기능은 파일 경로가 URL인지 여부와 보안(HTTP) 여부를 확인합니다.URL인 경우 쉐어포인트에서 대상 파일에 직접 연결할 수 있도록 적절한 WebDAV 문자열을 작성합니다.

파일을 열 때마다 사용자에게 자격 증명을 묻는 메시지가 표시될 수 있습니다. 특히 SharePoint 팜과 동일한 도메인에 있지 않은 경우에는 더욱 그렇습니다.

참고:나는 http 사이트에서 이것을 테스트하지 않았지만, 그것이 작동할 것이라고 확신합니다.

는 사자스에사안을 사용하지 .http://sharepoint/my/file 오히려 길로가아오히려니라.\\sharepoint\my\file그 다음에는 효과가 있어야 합니다.이것은 C#으로 수행된 제 프로그램에 적용됩니다.

SharePoint 폴더를 네트워크 드라이브로 매핑하는 방법을 사용할 수 있습니다.그러면 지금까지와 같이 진행하시면 됩니다.

여러 SharePoint 폴더에서 Excel VBA 업로드/다운로드

은 그다음파탐수있습다니도색할런일을▁with▁files다▁through▁browse있▁the▁then▁also▁you로 파일을 찾아볼 수도 있습니다.Dir System 는 파일 시스템 개체입니다.

초기 코드에 오타가 있습니다.

MyNewPathString = ParseResource(myFileDialogStringVariable)

로 대체되어야 합니다.

MyNewPathString = Parse_Resource(myFileDialogStringVariable)

밑줄이 없습니다.

OP가 파일 대화 상자를 열어야 하는 경우에는 이 방법이 정확하게 작동하지 않을 수도 있지만, SharePoint/Teams를 통해 저장된 워크북을 여는 방법은 제목과 일치하며 아마도 많은 사람들이 여기서 찾게 될 것입니다.

"Copy Link"를 누르고 "ObjectURL" 뒤와 "baseURL" 앞에 필요한 부분을 제거하여 URL을 가져옵니다.

Sub Test()
Dim URL As String
'Get URL By Coping Link and getting between "ObjectUrl" and "&baseUrl"
'Eg: objectUrl=https%3A%2F%2Fdomain.sharepoint.com%2Fsites%2FName_Teams%2FShared%20Documents%2FGeneral%2FDocuName.xlsx&baseUrl
URL = "https%3A%2F%2Fdomain.sharepoint.com%2Fsites%2FName_Teams%2FShared%20Documents%2FGeneral%2FDocuName.xlsx"
URLDecoded = URLDecode(URL)
'Debug.Print URLDecoded
Set WB = Workbooks.Open(URLDecoded)
End Sub

Public Function URLDecode(StringToDecode As String) As String

Dim TempAns As String
Dim CurChr As Integer

CurChr = 1

Do Until CurChr - 1 = Len(StringToDecode)
  Select Case Mid(StringToDecode, CurChr, 1)
    Case "+"
      TempAns = TempAns & " "
    Case "%"
      TempAns = TempAns & Chr(Val("&h" & _
         Mid(StringToDecode, CurChr + 1, 2)))
       CurChr = CurChr + 2
    Case Else
      TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
  End Select

CurChr = CurChr + 1
Loop

URLDecode = TempAns
End Function

다음과 같은 방법을 사용해 보십시오.

Shell ("C:\Program Files\Internet Explorer\iexplore.exe http://sharepoint/my/file/path")

그것은 나에게 효과가 있었다.

언급URL : https://stackoverflow.com/questions/19505513/open-an-excel-file-from-sharepoint-site

반응형