• 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.

Locatie in een string

Status
Niet open voor verdere reacties.

Corrnelis

Gebruiker
Lid geworden
23 jun 2022
Berichten
59
Beste Mensen,

Toch maar weer even naar jullie expertise vragen.
Ik heb dankzij o.a Edmoor en AD1957 een goed werkend userform gekregen om PDF in te tonen.

En de pdf's worden keurig getoond, maar nu loop ik er tegen aan dat het op verschillende locaties moet draaien.

Dus de harde code van de locatie werkt niet overal.
Kan je dit oplossen met een string?
En zo ja, hoe plaats je deze dan op de plek van de harde codering?

De locatie kan ik gewoon uit 1 cel halen dus dat is geen probleem.
Of nog netter zoals met de aangeleverde join functie.
(Waar ik in mijn verhaal de cellen D2 tot en met D6 samen kan voegen.)

Kortom i.p.v de harde code van de locatie (vet gedrukt) zou ik graag deze in een string willen hebben.
Hopelijk willen jullie mij hiermee helpen.

Gr Cor

Code:
‘Ik zou graag bijvoorbeeld deze “map” willen gebruiken als manier om de locatie in te lezen

Map = Join(Application.Transpose(Range("D2:D6").Value), "\")




Private Sub lstPDF_Change()
    Dim shl As Object
    Set shl = CreateObject("Shell.Application")
    shl.Open (Environ("userprofile") & [B]"\OneDrive - MijnLocatie\Gedeelde documenten\Offertes-PDF\"[/B] & lstPDF.Value)
 
 
End Sub
 
 
Private Sub UserForm_Initialize()
    Dim PDF As String
    PDF = Dir(Environ("userprofile") &[B] "\OneDrive - MijnLocatie\Gedeelde documenten\Offertes-PDF\*.pdf"[/B])
    Do While PDF <> ""
        lstPDF.AddItem PDF
        PDF = Dir
    Loop
End Sub

 
Zo:
Code:
Map = Join(Application.Transpose(Range("D2:D6").Value), "\")
shl.Open (Environ("userprofile") & "\" & Map & "\" & lstPDF.Value)
 
Helemaal top weer, ga ik mee aan de slag..
Maar kan ik dat ook gebruiken in de DIR?
Of moet dat op een andere manier?

Gr Cor
 
Het is gewoon een variabele met een string waarde.
Die kan je gebruiken waar je maar wil.
 
Bedankt maar weer.
Ga het snel proberen.
iedere dag een stapje verder.

Gr Cor

ps Ik zal de vraag op opgelost zetten
 
Ik vraag me alleen af waarom je die gegevens over 5 cellen verspreid hebt en niet in 1 cel hebt staan.
Ook vraag ik me af waarom offertes per persoon in een aparte directory worden opgeslagen; in een organisatie zou ik daarvoor 1 centrale directory gebruiken.
 
Laatst bewerkt:
Beste SNB,

De reden waarom ik ze onder elkaar heb staan en niet in 1 cel komt omdat samenvoegen en VBA niet echt vrinden zijn.
Vandaar deze oplossing.

En in de hoofddir staan verschillende submappen zoals de map offertes PDF en de map Offerte Excel.
Dus wel heb ik 1 hoofdmap met daarin verschillende submappen.
Het liefst zou ik vanaf sharepoint de map Offertes PDF willen openen.
Maar dat gaf allemaal problemen, en mij ontbreekt de kennis om dit op te lossen.
Vandaar dus een andere oplossing gezocht via onedrive.

Maar.... als jij een oplossing weet om gewoon de PDF's en excel bestanden te tonen in een lijst waaruit je er dan 1 kan kiezen vanaf sharepoint zoals mijn voorbeeld.
Dan hou ik mij sterk aanbevolen hoor.
Want dat zou een hoop omwegen/fouten voorkomen.


Gr Cor
 
Je kan dit gewoon in 1 cel zetten:
Code:
\OneDrive - MijnLocatie\Gedeelde documenten\Offertes-PDF\
 
Hoi Edmoor en SNB,

Dat begrijp ik en dat werkt ook.
Maar het zit zo dat er diverse mensen zijn op diverse computers die erbij moete kunnen.
En dat ik er achter ben gekomen dat niet iedereen alles op dezelfde locatie heeft staan.
Dus dat simpel hard te coderen gaat gewoonweg niet.
Ik tracht dat dus op te lossen door bij iedere user te kijken welke locatie op de harde schijf wordt gebruikt.
(dat kijk ik dus zelf even na)
En dan deze locatie d.m.v de join functie en wat simpele {als} functies op te laten halen in een string.
Vandaar mijn vraag hoe je dat in een string kan verpakken.
Beter gezegd hoe je deze dan moet plaatsen in de betreffende 2 Sub Routines die de PDF op moeten halen.
Gewoonweg omdat ik geen oplossing weet om direct alles via sharepoint op te halen.


Gr Cor
 
De informatie die je verstrekt is niet konsistent.
De enige variatie zit in Environ(username).
Hoe komen die gegevens in die 5 cellen dan terecht ? Dat is dan toch ook gewoon 'hard coded?
Tenzij je ons de juiste informatie onthoudt.

Misschien heb je nog iets aan:

Code:
Sub M_snb()
  MsgBox Environ(8)
End Sub
 
Laatst bewerkt:
Hoi SNB,

Als antwoord op je opmerking.
En hopelijk is het begrijpelijk wat ik voor ogen heb.

Er staan verschillende mappen in SharePoint waarvan een map "Offerte-Excel" en "Offerte-PDF".
In de ene (logisch) wordt het Excel bestand opgeslagen en in de andere een pdf versie daarvan.
Nu wil ik via een userform een lijst tonen uit de gekozen optie zodat je daar een file kan selecteren om te tonen/printen (pdf) of te openen (Excel) en te bewerken.

Het liefst had ik dat via SharePoint gedaan, maar daar kom ik gewoonweg niet uit.
En ik heb daar doodeenvoudig te weinig kennis voor in huis.

Dus op zoek naar een andere oplossing dacht ik het zo op te lossen.
Onder elkaar gezien staat er bijvoorbeeld van D2 tot D6 dit.....

C:\Users\
Usernaam
\submap1\
submap2\
PDF\

En ergens in de sheet staan bijvoorbeeld 3 locaties hard gecodeerd van evenveel users met de juiste locaties van die users.
Naar aanleiding van de "user" wordt dan submap1 en/of submap2 gevuld met de gegevens van die user.
En zo krijg ik dan (hopelijk zonder fouten) de juiste locatie van de betreffende user waar de bestanden zijn gesynchroniseerd.
Daar haal ik nu dus de bestanden van op om de betreffende Excel en pdf lijsten te tonen.
(ik merk overigens dat ook het synchroniseren niet altijd gelijk wordt gedaan, dus daar moet ik ook achteraan hoe dat komt)

Maar, zoals je ziet ga ik even van Groningen naar Parijs.
Maar ik weet doodeenvoudig geen andere oplossing.
Liever had ik rechtstreeks via SharePoint alles benaderd zodat dit allemaal niet nodig is.
Dus... als je er een oplossing voor zou weten, dan zou ik dat helemaal geweldig vinden.

Gr Cor
 
Wat ik al eerder zei, dat kan je gewoon in 1 cel zetten.
Daarbij is dit voldoende:
Code:
\submap1\submap2\PDF
In je VBA gebruik je dan, als dat bijvoorbeeld in A1 staat, dit:
Code:
Environ("Userprofile") & Range("A1")

Of gewoon dit:
Code:
Environ("Userprofile") & "\submap1\submap2\PDF\"
 
Laatst bewerkt:
Je kunt een sharepoint library koppelen aan OneDrive. Vervolgens kan je OneDrive benaderen via c:\users\[gebruikersnaam]\OneDrive\SubMappenKomenHier (of welk pad daarvoor op jullie systemen gedefinieerd is).
Via VBA kan je deze map dan benaderen alsof het een "ouderwetse" drive is.
 
Kijk eens of in het hulpscherm 'Open' jouw Sharepointlokaties staan.
Zie de afbeelding: rechtsklik in de kleine cirkel om het overzicht van lokaties te zien.
 

Bijlagen

  • __cherpoint.PNG
    __cherpoint.PNG
    55,9 KB · Weergaven: 18
Beste mensen,

Allemaal reuze bedankt voor het meedenken.
Stel het bijzonder op prijs.

@edmoor
Jazeker heb ik het gelezen dat je het in 1 cel kan zetten.
En dat doe ik ook waar het kan, anders maak ik gebruik van de join functie.
O ja....
En op zeker dat ik wat fout doe, maar wat is voor mij nog even een raadsel.

Code:
'Orgineel is... PDF = Dir(Environ("userprofile") & "\OneDrive - mijnlocatie\Gedeelde documenten\Offertes-PDF\*.pdf")

Dat zou ik willen vervangen voor jouw oplossing, maar daar doe ik wat fout blijkbaar?
[COLOR=#ff0000]PDF = Dir(Environ("userprofile") & range("A1") & *.pdf")[/COLOR]

@SNB
Nee, ik krijg geen FTP te zien wel de locatie waar de bestanden op sharepoint eens zijn opgeslagen.
Ga

@jkpieterse
Ik heb eens de boel ontkoppelt en wederom gekoppeld. Hopelijk lost dat het syn probleem op.
Ondanks alles toch weer even een stapje verder.
 
Dat moet zo zijn:
Code:
PDF = Dir(Environ("userprofile") & range("A1") & "*.pdf")
 
@SNB
Nee, ik krijg geen FTP te zien wel de locatie waar de bestanden op sharepoint eens zijn opgeslagen

Het gaat mij alleen om die sharepointlokaties.
Selekteer die en kijk wat je te zien krijgt.
Neem ondertussen hiervan een macro op en je bent bijna klaar.
 
Beste Edmoor,

Thanks voor de info.
Ga ik erin verwerken eerdaags.

@SNB

Eerlijk gezegd voel ik mij nu behoorlijk dom.
Want, wat voor soort macro moet ik dan opnemen.
En de locatie van sharepoint die heb ik al, want ik kan wel de excel en pdf etc netjes daarin opslaan.
Dat ziet eruit zoals dit

[TABLE="width: 591"]
[TR]
[TD]https://onzesite.sharepoint.com/partijen/Gedeelde documenten/Offertes-PDF/[/TD]
[/TR]
[/TABLE]

Alleen kan ik geen PDF vanuit daar laten zien in de bewuste userform.
Dus het ontgaat mij volledig wat je precies bedoelt en hoe ik dat moet bereiken.

Gr Cor
 
Waarom een userform als je ook hiervan gebruik kunt maken:

Code:
With application.filedialog(1)
  .initialfilename = "https://onzesite.sharepoint.com/partijen/Gedeelde documenten/Offertes-PDF/*.pdf"
  if .show then ....
End with
 
Beste SNB,

Heel fijn dat je wilt meedenken en een oplossing wilt aandragen.
Maar... mijn kennis is gewoonweg nog niet groot genoeg om alles te kunnen bevatten wat er bedoelt wordt.
En hoe je het e.e.a in de juiste volgorde moet plaatsen om het werkend te krijgen.
Dus ja, ik ben echt blij met alle hulp.
Maar ik kom er eerlijk gezegd zo niet veel verder mee.
Ik begrijp het namelijk beter met een werkend script zodat ik kan zlen wat er gebeurt en waarom.
Hopelijk snap je dat mijn kennis ondanks jullie en mijn eigen boeken gewoonweg nog niet toereikend genoeg is.


Gr Cor
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan