1
resposta

Endereço sharepoint online no vba

Eu não estou conseguindo informar para o VBA localizar um documento que fica localizado em um grupo sharepoint online. Estou criando um excel que precisa ser compartilhado com mais pessoas e esse excel pega arquivos de uma determinada pasta (sharepoint) e move para outra dentro do sharepoint. Localmente eu consegui mas como vou passar para outras pessoas precisaria ser online. DocOrigem e DocDestino preciso pegar online.

Sub MoverArquivos()

Dim fso Dim DocOrigem As String, DocDestino As String Dim txtFile

DocOrigem = "" DocDestino = ""

Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

If Not fso.FolderExists(DocOrigem) Then MsgBox DocOrigem & " Não é uma pasta válida.", vbInformation, "Office, VBA e VSTO" ElseIf Not fso.FolderExists(DocDestino) Then MsgBox DocDestino & " Não é uma pasta válida.", vbInformation, "Office, VBA e VSTO" Else

For Each txtFile In fso.GetFolder(DocOrigem).Files If fso.FileExists(DocDestino & txtFile.Name) Then fso.deletefile DocDestino & txtFile.Name, True txtFile.Move DocDestino End If Next fso.MoveFile (DocOrigem & "*.pdf"), DocDestino End If

If Err.Number = 53 Then MsgBox "Arquivo não encontrado."

End Sub

1 resposta

Olá, Matheus! Tudo bem?

Pelo que entendi, você está com dificuldades em informar para o VBA o endereço de um documento que está localizado em um grupo SharePoint Online, correto? Você está criando uma planilha do Excel que precisa ser compartilhada com outras pessoas e essa planilha pega arquivos de uma determinada pasta no SharePoint e move para outra pasta dentro do SharePoint.

Para que o VBA consiga localizar os documentos no SharePoint Online, você precisa utilizar o caminho correto para acessar a pasta desejada. No seu código, você precisa preencher as variáveis DocOrigem e DocDestino com os caminhos corretos para as pastas no SharePoint Online.

Por exemplo, se a pasta de origem estiver localizada em um grupo chamado "MeuGrupo" e a pasta de destino estiver em um grupo chamado "OutroGrupo", você pode utilizar o seguinte formato para os caminhos:

DocOrigem = "https://suaempresa.sharepoint.com/sites/MeuGrupo/NomeDaPastaOrigem/"
DocDestino = "https://suaempresa.sharepoint.com/sites/OutroGrupo/NomeDaPastaDestino/"

Certifique-se de substituir "suaempresa" pelo domínio da sua empresa e "NomeDaPastaOrigem" e "NomeDaPastaDestino" pelos nomes corretos das pastas no SharePoint Online.

Além disso, é importante lembrar que o VBA não tem suporte nativo para acessar diretamente o SharePoint Online. Uma alternativa seria utilizar a biblioteca SharePoint Client Object Model (CSOM) para acessar os documentos no SharePoint Online através do VBA. Você precisaria adicionar uma referência à biblioteca Microsoft SharePoint Client Runtime ao seu projeto VBA.

Aqui está um exemplo de como utilizar a CSOM para acessar documentos no SharePoint Online:

Sub MoverArquivos()

    Dim context As New SharePoint.Client.ClientContext("https://suaempresa.sharepoint.com/sites/MeuGrupo")
    Dim web As SharePoint.Client.Web = context.Web
    Dim lista As SharePoint.Client.List = web.Lists.GetByTitle("NomeDaLista")
    Dim caminhoOrigem As String = "NomeDaPastaOrigem"
    Dim caminhoDestino As String = "NomeDaPastaDestino"

    context.Load(lista)
    context.ExecuteQuery()

    Dim caminhoCompletoOrigem As String = lista.RootFolder.ServerRelativeUrl & "/" & caminhoOrigem
    Dim caminhoCompletoDestino As String = lista.RootFolder.ServerRelativeUrl & "/" & caminhoDestino

    Dim folderOrigem As SharePoint.Client.Folder = web.GetFolderByServerRelativeUrl(caminhoCompletoOrigem)
    Dim folderDestino As SharePoint.Client.Folder = web.GetFolderByServerRelativeUrl(caminhoCompletoDestino)

    context.Load(folderOrigem)
    context.Load(folderDestino)
    context.ExecuteQuery()

    ' Restante do seu código para mover os arquivos

End Sub

Nesse exemplo, você precisará substituir "https://suaempresa.sharepoint.com/sites/MeuGrupo" pelo URL do grupo SharePoint Online que contém as pastas, "NomeDaLista" pelo nome da lista que contém as pastas, "NomeDaPastaOrigem" pelo nome da pasta de origem e "NomeDaPastaDestino" pelo nome da pasta de destino.

Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!