Variabele bestandnamen met iedere extensie openen

Status
Niet open voor verdere reacties.

Bergsma1

Gebruiker
Lid geworden
7 feb 2012
Berichten
40
Hoi allemaal,

In access is een database gebouwd waarin ik via een formulier doorzoek naar een machinebesturingsprogramma.

Het volgende script krijg ik werkend om met variabele bestandnamen in variabele folders bestanden met de extentie .opt te openen in Notepad.
Ik zoek echter een functionaliteit waarmee ik ook files kan openen zonder extentie!
Shell.
De files kennen geen extentie en moeten deze ook niet krijgen, de files worden namelijk door andere software uitgelezen.


Code:
Private Sub Programmanummer_DblClick(Cancel As Integer)

DoCmd.OpenForm "TekeningProgrammaSubFrm"


A = Programmanummer.Text

X = ProgrammanummerIdMachineData

B = DLookup("Machinenummer", "MachinesTabel", "IdMachineData=" & X)

C = "Q:\"

E = ".opt"


D = C & B & "\" & A & E
G = C & B & "\" & A & F


Shell ("""notepad.exe"" """ & D & """"), vbNormalFocus



End Sub
 
Ik snap je niet helemaal; op basis van extensies kun je bepaalde bestanden (types) koppelen aan programma's en openen met dat programma. Daarvoor moet je dus een extensie hebben. Een bestand zonder extensie is uiteraard dan nooit te koppelen, want wat er niet is, kan niet gekoppeld. Lijkt mij duidelijk :).
Wat je wellicht wél kan doen, is dat programma openen met een parameter die het bestand inleest. Dat zou je in de documentatie van dat bestand moeten kunnen terugvinden. Dat zou je dan met het Shell commando wel voor elkaar moeten kunnen krijgen. Bestanden zonder extensies koppelen aan een programma? Lijkt mij stug dat dat lukt, want dan zou er op de hele wereld maar een programma mogen zijn dat zo werkt. Heb je er toevallig twee, dan zit je al in de drek, want met welke van de twee programma's zou je dan dat bestand automatisch geopend willen hebben? Laat staan als je drie programma's gebruikt op die manier. De droefenis wordt alleen maar groter :d
 
Op dit moment dwing ik met het script af dat een bestand dat eindigd op de extentie .opt wordt geopend met notepad.
Er zitten echter in ook files tussen die geen extentie hebben.
Files zonder extentie wil ik ook openen met notepad.

De files hebben geen extentie omdat ze op in een interface zitten van machines lopen waarop geen extenties in het protocol zitten.
Toch zijn de files goed leesbaar als ze te openen zijn in notepad, daarom zou ik graag een aanpassing willen waarbij, voor .opt of zonder extentie de file wordt geopend.
De progamma's onderscheid je wel door een unieke naam, maar het is inderdaad op z'n minst merkwaardig dat deze geen extentie hebben.
 
Laatst bewerkt:
Als je zoiets van maakt dan gaat het goed

Code:
Sub VenA()
  c00 = "E:\temp\test\bsod2" 'D = C & B & "\" & A
  If Dir(c00 & ".opt") = "" Then c01 = c00 Else c01 = c00 & ".opt"
  If Dir(c01) <> "" Then Shell ("""notepad.exe"" """ & c01 & """"), vbNormalFocus
End Sub
 
Bedankt! Oplossing werkt, met een kleine aanpassing

Option Compare Database



Code:
Private Sub Programmanummer_DblClick(Cancel As Integer)

DoCmd.OpenForm "TekeningProgrammaSubFrm"


A = Programmanummer.Text

X = ProgrammanummerIdMachineData

B = DLookup("Machinenummer", "MachinesTabel", "IdMachineData=" & X)
    

C = "Q:\"



  c00 = C & B & "\" & A
  If Dir(c00 & ".opt") = "" Then c01 = c00 Else c01 = c00 & ".opt"
  If Dir(c01) <> "" Then Shell ("""notepad.exe"" """ & c01 & """"), vbNormalFocus






End Sub
 
Da's mooi. en mag je de vraag op opgelost zetten.

Als je zoveel variabelen gebruikt dan zou ik ze in een logische volgorde zetten. Ontzettend veel witregels zou ik ook weglaten.
 
Wonderlijke code, als je het mij vraagt, en een beetje link ook.
Code:
DoCmd.OpenForm "TekeningProgrammaSubFrm"
A = Programmanummer.Text
Een formulier met de naam f TekeningProgrammaSubFrm suggereert dat het formulier een subformulier is. Een subformulier is niets anders dan een formulier dat op een ander formulier staat en daar is gekoppeld. Subformulieren worden dus nooit zelfstandig geopend, dat gebeurt via het hoofdformulier. Dus ik vind de naam heel onhandig op zijn minst.

En als je een waarde middels zo’n procedure uitleest, gebruik dan altijd Value en niet .Text. Text kun je alleen gebruiken als het object de focus heeft. Zo niet, dan krijg je een foutmelding. Ik gebruik .Text dus alleen bij een gebeurtenis als OnChange, waarbij je binnen een tekstvak aan het redigeren bent.
 
Wonderlijke code, als je het mij vraagt, en een beetje link ook.
Code:
DoCmd.OpenForm "TekeningProgrammaSubFrm"
A = Programmanummer.Text
Een formulier met de naam f TekeningProgrammaSubFrm suggereert dat het formulier een subformulier is. Een subformulier is niets anders dan een formulier dat op een ander formulier staat en daar is gekoppeld. Subformulieren worden dus nooit zelfstandig geopend, dat gebeurt via het hoofdformulier. Dus ik vind de naam heel onhandig op zijn minst.

En als je een waarde middels zo’n procedure uitleest, gebruik dan altijd Value en niet .Text. Text kun je alleen gebruiken als het object de focus heeft. Zo niet, dan krijg je een foutmelding. Ik gebruik .Text dus alleen bij een gebeurtenis als OnChange, waarbij je binnen een tekstvak aan het redigeren bent.

Bedankt voor de tips! Ik heb .text vervangen door .value.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan