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
'source' 카테고리의 다른 글
vimdiff를 사용하여 모든 'gitdiff' 보기 (0) | 2023.07.06 |
---|---|
IIS7 - 요청 필터링 모듈이 요청 내용 길이를 초과하는 요청을 거부하도록 구성되었습니다. (0) | 2023.07.06 |
SQL Server 2000: 저장 프로시저를 종료하는 방법은 무엇입니까? (0) | 2023.07.06 |
Python Pandas에서 데이터 프레임에서 두 값 사이의 행을 선택하는 방법은 무엇입니까? (0) | 2023.07.06 |
"이 작업을 수행하려면 IIS 통합 파이프라인 모드가 필요합니다." (0) | 2023.07.06 |