externe map openen

Status
Niet open voor verdere reacties.

steve3

Gebruiker
Lid geworden
26 nov 2017
Berichten
27
Ik ben op zoek naar een code om een specifieke map te openen op mijn computer vanuit een 'form' in ms access.
(ben niet zo'n kei in programmeren)

Ik kan intussen al wel een specifieke file openen (.txt) , maar hier moet ik enkel de cliëntenmap openen, zodat ik de files kan zien die erin zitten.

Hier is mijn probeersel:
-----------------------------------------------------------------------------------------
Code:
Private Sub Command282_Click()
On Error GoTo Err_Knop282_Click

Dim Foldername As String
Dim stnaamfile As String
stnaamfile = Me.ACHTERNAAM & "" & Me.VOORNAAM
Dim LResult As String
LResult = LCase("stnaamfile")
Foldername = "\\server\c:\Users\eigenaar\Documents" & stnaamfile & ""


Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus


Exit_Knop282_Click:
    Exit Sub

Err_Knop282_Click:
    MsgBox Err.Description
    Resume Exit_Knop282_Click

End Sub
---------------
Het resultaat is dat enkel de map 'documents' wordt geopend. Verder gaat het niet.
ik zoek naar een oplossing om ook' stnaamfile' te openen.
de string 'stnaamfile' wordt gevormd door de tabelnamen ACHTERNAAM EN VOORNAAM te combineren.


Heeft iemand een suggestie?

Alvast bedankt

Steve
 
Laatst bewerkt door een moderator:
Voor het openen van een folder met Explorer moet je wel op de juiste plekken een "\" teken invoegen.
Voor het openen van een bestand kan je Application.FollowHyperlink gebruiken.
 
Laatst bewerkt:
Dit:
Code:
stnaamfile = Me.ACHTERNAAM & "" & Me.VOORNAAM
Is natuurlijk een beetje onzinnige samenvoeging. Lijkt mij dat je beter zoiets kunt doen:
Code:
stnaamfile = Me.ACHTERNAAM & ", " & Me.VOORNAAM
Of zonder de komma. Maar & "" & slaat nergens op. En je doet dat verderop dus ook.
Code:
Foldername = "\\server\c:\Users\eigenaar\Documents\" & stnaamfile
 
oplossing (deels)

Met trial and error (en een franse site) denk ik de oplossing gevonden te hebben
(althans gedeeltelijk)

------------------------------------
Private Sub Command282_Click()
On Error GoTo Err_Knop282_Click

Dim Foldername As String
Dim stnaamfile As String
stnaamfile = Me.ACHTERNAAM & "" & Me.VOORNAAM
Dim LResult As String
LResult = LCase("stnaamfile")
If Nz(stnaamfile, "") = "" Then
Foldername = "c:\Users\eigenaar\Documents"
Else
Foldername = "c:\Users\eigenaar\Documents" & stnaamfile
End If
Shell "C:\Windows\explorer.exe """ & Foldername & "", vbNormalFocus


Exit_Knop282_Click:
Exit Sub

Err_Knop282_Click:
MsgBox Err.Description
Resume Exit_Knop282_Click

End Sub

----------------------------------------
Ik dacht ook een commando te hebben om- indien niet bestaand - de map automatisch te creëren. Dat doet het dus nog niet.
Mocht er iemand daar nog een oplossing voor hebben, altijd welkom.

Ter info: de Me.Achternaam en Me.Voornaam structuur komt louter omdat Pieters Jan gewoon het dossier pietersjan heeft. (dus zonder spatie)
Het oorspronkelijke programma bestaat intussen ook al 20 jaar, en veel heb ik er destijds niet over nagedacht (kan het nu ook niet meer
rechtzetten). Ik copieer overigens ook wel eens dingen zonder ze echt te begrijpen, dus je mag me altijd corrigeren.

Nog eens bedankt voor de goede raad!
 
Maar er is dus geen enkele reden om een lege string er tussen te plakken. Dit:
Code:
stnaamfile = Me.ACHTERNAAM & "" & Me.VOORNAAM
Is exact hetzelfde als dit:
Code:
stnaamfile = Me.ACHTERNAAM & Me.VOORNAAM
Dus waarom laat je dat er tussen staan? Of heb je mijn opmerking daarover niet begrepen?
 
Octafish: Ik ben even van het forum geweest, dus ik had nog geen tijd om te reageren.
Bedankt voor je opmerkingen (ik wist het overigens niet, omdat het weer te lang geleden is dat ik
nog iets geprogrammeerd heb. Ik kan overigens niet echt programmeren, ik doorzoek de oplossingen
van fora als dit, copieer vervolgens de codes en probeer ze aan te passen naar mijn behoeften. Maar
dat je al wel begrepen denk ik...)
Intussen heb ik wel alle folders aangepast met een spatie tussen de achternaam en de voornaam, dus
had ik het uiteindelijk toch nodig.

Ik heb intussen toch de gecombineerde code gevonden, zij het nog met een foutje erin:

--------------------------------------------------------------------------------------------


Private Sub Command278_Click()
'Creates or opens a text file in existing Folder
'If folder does not exist first creates one
'If Text File does not exist creates one


On Error GoTo Err_Knop278_Click


Dim shlApp As String
Dim stDocName As String
Dim stnaamfile As String
stDocName = "bezoekrapport"
stnaamfile = Me.ACHTERNAAM & " " & Me.VOORNAAM
Dim LResult As String
Dim Foldername As String
LResult = LCase("stnaamfile")
Foldername = "c:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen" & stnaamfile
shlApp = "notepad.exe c:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen" & stnaamfile & "" & stDocName & ".txt"

Call Shell(shlApp, vbMaximizedFocus)

On Error Resume Next
MkDir Foldername
Shell "C:\Windows\explorer.exe """ & Foldername & "", vbNormalFocus

Call Shell(shlApp, vbMaximizedFocus)

Exit_Knop278_Click:
Exit Sub

Err_Knop278_Click:
MsgBox Err.Description
Resume Exit_Knop278_Click
End Sub

-------------------------
Het doet perfect wat ik wil, behoudens één ding:

Stel dat er nog niets bestaat: geen folder en geen text file.
Dan opent het commando eerst een nieuwe folder(map). Ok dus. Maar de
folder blijft daarna open staan.
Op de achtergrond wordt dan ook de vraag gesteld of er een nieuwe textfile
moet gecreëerd worden. Dat is dus ok.
Nu kan ik natuurlijk wel manueel mijn nieuw gecreëerde folder sluiten, maar
dat had ik natuurlijk ook graag geautomatiseerd.

Is er een eenvoudig 'close' commando, en zo ja waar moet ik die dan juist zetten om
geen conflicten te bekomen?

Alvast bedankt

Steve
 
Behalve dat je ‘vergeten’ bent hoe je code in CODE tags te zetten, heb je ook niet goed uitgelegd wat de bedoeling nou eigenlijk is. Mijn gevoel zegt dat je een totaal verkeerde techniek gebruikt en dat het allemaal vele malen simpeler moet kunnen wat je wilt doen. Alleen weet ik dus niet wat dat nu is...
 
Je prima adviezen worden helaas maar slecht gelezen door TS.
Ik denk dat 'ie dit bedoelt:
Code:
Private Sub Command278_Click()
[COLOR="#008000"]    'Creates or opens a text file in existing Folder
    'If folder does not exist first creates one
    'If Text File does not exist creates one[/COLOR]
    
    stDocName = "bezoekrapport.txt"
    Foldername = "C:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen\" & LCase(Me.ACHTERNAAM & " " & Me.VOORNAAM)
    
    If Dir(Foldername, vbDirectory) = "" Then MkDir Foldername
    If Dir(Foldername & "\" & stDocName) = "" Then
        Open Foldername & "\" & stDocName For Output As #1
        Close #1
    End If
    Shell ("Notepad " & Foldername & "\" & stDocName), vbNormalFocus
End Sub
 
Hey Ed, bedankt. Dit is inderdaad de code die ik zocht. Ik had het zelf al opgelost, maar blijkbaar veel te ingewikkeld.
Ik lees overigens best wel de adviezen, maar ik heb niet veel kaas gegeten van programmeren, dus ik moet veel googlen om tot een oplossing te komen.
Weer wat bijgeleerd dus....


------------------

Private Sub Command278_Click()
'Creates or opens a text file in existing Folder
'If folder does not exist first creates one
'If Text File does not exist creates one

Dim stDocname As String
Dim Foldername As String
stDocName = "bezoekrapport.txt"
Foldername = "C:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen" & LCase(Me.ACHTERNAAM & " " & Me.VOORNAAM)

If Dir(Foldername, vbDirectory) = "" Then MkDir Foldername
If Dir(Foldername & "" & stDocName) = "" Then
Open Foldername & "" & stDocName For Output As #1
Close #1
End If
Shell ("Notepad " & Foldername & "" & stDocName), vbNormalFocus
End Sub

----------------------

Ter vergelijking: de lange versie die ik zelf had gevonden:

-----------------------------------------------------------------------------
Private Sub Command278_Click()
'Creates or opens a text file in existing Folder
'If folder does not exist first creates one
'If Text File does not exist creates one


Dim vPID As String
Dim shlApp As String
Dim stDocName As String
stDocName = "bezoekrapport"
Dim Foldername As String
Dim stnaamfile As String
stnaamfile = Me.ACHTERNAAM & " " & Me.VOORNAAM
Dim LResult As String
LResult = LCase("stnaamfile")
Foldername = "C:\USERS\eigenaar\Documents\BEHEER\beheerklantenm appen" & stnaamfile
vPID = Shell("C:\Windows\explorer.exe "" & Foldername""")


On Error Resume Next
MkDir Foldername
Shell "C:\Windows\explorer.exe """ & Foldername & "", vbNormalFocus
On Error GoTo 0

Call Shell("TaskKill /F /PID " & CStr(vPID), vbHide)


shlApp = "notepad.exe c:\Users\eigenaar\Documents\BEHEER\beheerklantenma ppen" & stnaamfile & "" & stDocName & ".txt"
Call Shell(shlApp, vbMaximizedFocus)


Exit_Knop278_Click:
Exit Sub

Err_Knop278_Click:
MsgBox Err.Description
Resume Exit_Knop298_Click

End Sub
----------------------

Nog eens bedankt, hier mag een slotje op
 
Ok dan.
Plaats nog even codetags in je bericht in #9.
Daarin zijn nu \ tekens weg gevallen.
 
Laatst bewerkt:
Hier de verbeterde versie:



Private Sub Command278_Click()
'Creates or opens a text file in existing Folder
'If folder does not exist first creates one
'If Text File does not exist creates one

Dim stDocname As String
Dim Foldername As String
stDocName = "bezoekrapport.txt"
Foldername = "C:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen" & LCase(Me.ACHTERNAAM & " " & Me.VOORNAAM)

If Dir(Foldername, vbDirectory) = "" Then MkDir Foldername
If Dir(Foldername & "" & stDocName) = "" Then
Open Foldername & "" & stDocName For Output As #1
Close #1
End If
Shell ("Notepad " & Foldername & "" & stDocName), vbNormalFocus
End Sub

-------------------Ter vergelijking: de lange versie die ik zelf had gevonden:

-----------------------------------------------------------------------------
Private Sub Command278_Click()
'Creates or opens a text file in existing Folder
'If folder does not exist first creates one
'If Text File does not exist creates one


Dim vPID As String
Dim shlApp As String
Dim stDocName As String
stDocName = "bezoekrapport"
Dim Foldername As String
Dim stnaamfile As String
stnaamfile = Me.ACHTERNAAM & " " & Me.VOORNAAM
Dim LResult As String
LResult = LCase("stnaamfile")
Foldername = "C:\USERS\eigenaar\Documents\BEHEER\beheerklantenm appen" & stnaamfile
vPID = Shell("C:\Windows\explorer.exe "" & Foldername""")


On Error Resume Next
MkDir Foldername
Shell "C:\Windows\explorer.exe """ & Foldername & "", vbNormalFocus
On Error GoTo 0

Call Shell("TaskKill /F /PID " & CStr(vPID), vbHide)


shlApp = "notepad.exe c:\Users\eigenaar\Documents\BEHEER\beheerklantenma ppe\\n" & stnaamfile & "" & stDocName & ".txt"
Call Shell(shlApp, vbMaximizedFocus)


Exit_Knop278_Click:
Exit Sub

Err_Knop278_Click:
MsgBox Err.Description
Resume Exit_Knop298_Click

End Sub
 
oeps, blijkbaar niet goed gegaan. Ik corrigeer het later wel.
(vervelend met die '\\' die wegvallen)
 
Als je de code tussen codetags plaatst vallen die tekens niet weg.
 
Ik heb meteen de code .LOG op de eerste lijn van de gecreëerde Txt.file geplaatst.
Zo wordt er bij opening telkens de datum en het uur toegevoegd.

En ik heb het item van de codetags gelezen. Sorry for that, hoop dat het zo werkt.
-----------------------------------------------------------------------------------------------



Code:
Private Sub Command299_Click()

    'Creates or opens a text file in existing Folder
    'If folder does not exist first creates one
    'If Text File does not exist creates one
    
    Dim stDocname As String
    Dim Foldername As String
    
        stDocname = "bezoekrapport.txt"
    Foldername = "C:\Users\eigenaar\Documents\BEHEER\beheerklantenmappen\" & LCase(Me.ACHTERNAAM & " " & Me.VOORNAAM)
    
    If Dir(Foldername, vbDirectory) = "" Then MkDir Foldername
    If Dir(Foldername & "\" & stDocname) = "" Then
        Open Foldername & "\" & stDocname For Append As #1
        Print #1, ".LOG"
        
        Close #1
    End If
    Shell ("Notepad " & Foldername & "\" & stDocname), vbNormalFocus

End Sub
 
Alleen bij de eerste aanmaak van het bestand.
 
de datum en tijd wordt elke keer opnieuw ingelezen:

Code:
.LOG

19:59 21-11-2017
gesproken over.....
20:00 21-11-2017
gesproken over....
20:00 21-11-2017
mkmk

enzoverder
 
Je wilt een log bijhouden vanuit je database. En je gebruikt daarvoor een los tekstbestand? Onbegrijpelijke oplossing als je het mij vraagt. Héb je een database, gebruik je hem niet...
 
Ik begrijp je opmerking wel. Normaliter zit ook al wat ik heb in mijn database. Ik heb 1000 typebrieven en wettelijke documenten die ik kan openen zonder dat er een ander programma aan te pas komt.
Maar hier wilde ik gewoon één txt.file waar alles chronologisch op staat. Zodanig dat als mijn collega (of ik) een klant aan de lijn heeft, dat hij gewoon maar op die toets hoeft te drukken en zo kan inkijken wat er in het verleden met klant besproken is.
Ook voor het ministerie moeten we dat kunnen laten zien.
En ja, dat zal ook wel kunnen in de database zelf, maar ik kan het niet. (wat nog niet wil zeggen dat ik het niet wil leren...)
 
Het lijkt mij juist essentieel dat je dit in de database bijhoudt/opslaat. En niet in een extern bestand. En het maken van zo'n oplossing is vermoedelijk een stuk simpeler, of in ieder geval net zo simpel, als wat je aan andere zaken in je db hebt gebouwd. Dus we zullen het maar op onwetendheid houden. Want het bijhouden van acties/mutaties is best makkelijk, omdat je alles in één tabel kan zetten. En dan is het een heel stuk makkelijker bij te houden, en terug te zoeken. Want hoe simpel is het denk je om in je tekstbestanden de activiteiten van één bepaalde medewerker terug te vinden, in vergelijking met een formulier Medewerker en een gekoppeld subformulier waarop je alle acties en mutaties van diezelfde medewerker in één oogopslag kan zien? (geldt uiteraard ook voor klant-acties)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan