• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Hyperlink vanuit Excel naar onedrive

Status
Niet open voor verdere reacties.

grietsenwijma

Gebruiker
Lid geworden
25 jun 2013
Berichten
241
goedenavond,

Ik ben in Excel redelijk thuis maar maak met Onedrive net kennis.

Wat ik probeer in te richten is een fotopool van uiteindelijk 1000-1500 foto's en documenten in een onedrive map.
Aan die map geef ik een tiental personen toegang.

In excel maak ik een index met de inhoud/beschrijving van al die documenten.
Mijn gebruikers kunnen dan in excel selecteren en vervolgens enkele documenten uit de onedrive map oproepen.

Dit dacht ik met hyperlinks te doen, de link naar de map, aangevuld met het documentnummer (foto 530 zou dan de specifieke onedrivemap link zijn, uitgebreid met \530)
Helaas krijg ik dit niet voor elkaar, de link brengt mij óók met de toevoeging niet verder dan het openen van de specifieke onedrive map (en dan zouden mijn gebruikers alsnog met de hand nr 530 op moeten zoeken.

Enige alternatief zou zijn alle foto's stuk voor stuk te delen en stuk voor stuk te linken.
…...dan ben ik in 2020 nog wel even zoet!

Wie heeft een nuttige suggestie voor mij?

Alvast dank!

Grietsen Wijma
 
Geef je het wel de juiste extensie mee?

Bv.
\530.jpg
 
.....Helaas, die had ik om te beginnen al geprobeerd, zou te makkelijk zijn.
 
Laatst bewerkt door een moderator:
Dat zou kunnen, maar als jij het vergeet te vermelden kan je zo'n reactie verwachten.
 
Met in A1 het pad en in B1 de bestandsnaam inclusief extensie dan werkt dit ook met Onedrive
Code:
=HYPERLINK(A1&IF(RIGHT(A1;1)="\";"";"\")&B1;B1)
 
je doet moeite om de "Backslash" er in alle gevallen tussen te krijgen. Dat deel heb ik van te voren al uitgesloten dat dat altijd goed gaat.
Blijft dan over
Code:
=HYPERLINK(A1&B1;B1)
Dit lijkt mij een niet kloppend verhaal, ook omdat Excel dit niet accepteert.
Code:
=HYPERLINK(A1&B1)
had ik zelf eerder al geprobeerd, maar leidt slechts tot het openen van de map en niet tot het vinden van het document ook al wordt dit compleet met extensie in de hyperlink benoemd.
...of mis ik ergens iets?

Duidelijker dan onderstaand kan ik het niet stellen.
ik heb een nietszeggende map toegankelijk gemaakt met daarin 2 nietszeggende foto 's. 1.JPG en 2.JPG
De link naar de map is https://1drv.ms/u/s!Amsiv5wsH6bvew49HhymZ60r9rI?e=iG2aqe

Met het hieraan toevoegen van \1.jpg krijg ik slechts de map geopend, maar de foto niet
 
Laatst bewerkt door een moderator:
Klik op de foto in de nietszeggende map.
Je kan dan uit de browser de URL kopieeren.

1.jpg
Code:
https://onedrive.live.com/?authkey=%21AA49HhymZ60r9rI&cid=EFA61F2C9CBF226B&id=EFA61F2C9CBF226B%2112[COLOR="#FF0000"]6[/COLOR]&parId=EFA61F2C9CBF226B%21123&o=OneUp
2.jpg
Code:
https://onedrive.live.com/?authkey=%21AA49HhymZ60r9rI&cid=EFA61F2C9CBF226B&id=EFA61F2C9CBF226B%2112[COLOR="#FF0000"]5[/COLOR]&parId=EFA61F2C9CBF226B%21123&o=OneUp

Hier kan je in excel een hyperlink van maken.

In de URL van de mappen en de foto's zit een structuur waar de kinderen naar de ouders verwijzen en de ouders naar de kinderen.
 
Laatst bewerkt:
Zou inderdaad een mogelijkheid zijn, maar dat houdt in dat ik dat voor alle 1500-2000 documenten één voor één zou moeten uitpuzzelen en weer invoeren in mijn index in excel.
Dit is precies wat ik nou juist probeer te voorkomen want er zijn zoveel leukere dingen te doen in dit leven :)
 
Laatst bewerkt door een moderator:
Zou inderdaad een mogelijkheid zijn, maar dat houdt in dat ik dat voor alle 1500-2000 documenten één voor één zou moeten uitpuzzelen en weer invoeren in mijn index in excel.
Die 1500 documenten, staan die allemaal naast en onder elkaar in één map? of zijn ze verdeeld over meerdere pagina's in de map?
 
Hieronder een mogelijke aanpak met webscraping technieken
Maar het heeft de voorkeur om het met een API (Application Programming Interface / alleen maar de data) te doen.
Maar daar kan ik je niet mee helpen omdat je authentificatie met wachtwoorden nodig hebt.

Deze code maakt contact met je onedrive, en laat in een messagebox je de URL en de naam zien.
Code:
Option Explicit

Public Sub OneDriveOnlineDocuments()

    Dim objA As Object
    Dim objAs As Object
    Dim strAuthkey As String
    Dim strHref As String
    Dim strURLHref As String
    Dim strId As String
    Dim strName As String
    Dim strURLBase As String
    Dim strURLRedir As String

    strId = "EFA61F2C9CBF226B!123"    'id !change
    strAuthkey = "!AA49HhymZ60r9rI"    'authkey !change

    strURLBase = "https://onedrive.live.com"
    strURLRedir = strURLBase & "/redir?resid=" & strId & "&authkey=" & strAuthkey 'am_2019

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate strURLRedir
        Application.Wait DateAdd("s", 20, Now)    'wait 20 seconds, change timevalue if necessary
        Do While .ReadyState <> 4 Or .Busy = True
            DoEvents
        Loop
        Set objAs = .Document.getelementsbytagname("a")
        For Each objA In objAs
            strHref = objA.getAttribute("href")
            If Left(strHref, 9) = "#authkey=" Then
                strURLHref = strURLBase & "/?" & Mid(strHref, 2)
                strName = objA.getelementsbytagname("span")(0).innertext
                MsgBox "URL : " & vbCrLf & strURLHref & vbCrLf & vbCrLf & "Name: " & vbCrLf & strName
            End If
        Next
    End With
End Sub
Getest met https://onedrive.live.com/?authkey=!AA49HhymZ60r9rI&id=EFA61F2C9CBF226B!123&cid=EFA61F2C9CBF226B
 
Laatst bewerkt:
dank voor de code
Ik krijg hem (nog) niet werkend, ik vermoed dat het komt omdat ik DuckDuckGo als vaste zoekmachine heb geinstalleerd.
Moet ik nog wat mee experimenteren.

….maar ik bedacht mij het volgende:
Al die 1500-2000 documenten staan samen in 1 map.
Als het mogelijk zou zijn om de urls van al die documenten samen met de documentnamen te dumpen in een Excel lijst zou ik daar vervolgens heel simpel een zoekfunctie op los kunnen laten en dan is het geregeld.
…...of is dat veel moeilijker uit te voeren dan te bedenken?

Vast dank voor je meedenken!

Grietsen
 
Hier de code in een bestandje die de gegevens naar cellen schrijft.
Schuif naar rechts om de hyperlinks te zien.
Kijk in de code om die hier en daar aan de omstandigheden aan te passen.

Ik heb ook DuckDuckGo als zoekmachine, maar de zoekmachine heeft geen invloed op de code.
 

Bijlagen

Laatst bewerkt:
Aha!

Zo ziet het er uit als iets waar ik wat mee kan!
Ik ga hier een poosje mee stoeien en dan laat ik van me horen.

Bedankt!
 
Kijk maar,
Ik weet niet als het ook zo makkelijk gaat met folders die niet openbaar zijn.
 
Ik ben een poosje aan het stoeien gewest met je code

Aangepast naar de definitieve situatie met andere urls.
Dit belooft misschien goed te gaan werken, alleen ik blijf op dit punt steeds hangen (zie knipsel)
ik heb geen idee waar ik de oplossing zou moeten zoeken

Graag een suggestie?

Alvast dank!
 

Bijlagen

  • Knipsel Codefout.PNG
    Knipsel Codefout.PNG
    10,2 KB · Weergaven: 68
Code:
Application.Wait DateAdd("s", 20, Now)    'wait 20 seconds, change timevalue if necessary
Een pagina inladen met 1500 documenten zal wel wat langer duren dan 20seconden.
Probeer eens met een flink grotere waarde
 
Ik heb het geprobeerd met 200 seconden. Zou met (nu nog maar) ±20 documenten moeten volstaan.

Nu ontdek ik dat in zowel het originele document/code als in het document waar ik de code probeer aan te passen de bewerking eindigt met de volgende messagebox:

Fout 462 tijdens uitvoering
de externe servercomputer bestaat niet of is niet beschikbaar.

Terwijl dit eerst geen probleem was
Zou dit er mee kunnen hebben te maken dat we inmiddels in 2020 leven in plaats van 2019 (een opmerking in de code lijkt daarover te gaan)

Alvast dank voor de support!
 
200seconden voor 20 documenten zou voldoende moeten zijn.

Ik weet het niet zeker, maar het kan zijn dat de code niet helemaal failproof is.
Het kan zijn dat deze melding komt wanneer er twee vensters met internet explorer open staan.
Kan je alle vensters met internet explorer sluiten en dan de code laten lopen.
Misschien kan je ook in de taakmanager (CTRL+SHIFT+ESC) nakijken als er geen processen met internet explorer lopen.

Maar het kan ook zijn dat van een openbare naar een prive-site bent gegaan en moet inloggen.

De opmerking in de code met 2019 is een commentaar in de code, een watermerkje van mij.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan