Avatar billede BIRGER Seniormester
22. juli 2017 - 10:06 Der er 38 kommentarer og
1 løsning

Hvad gør denne kode ?

Nogen der kan forklare mig hvad denne kode gør?

FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH")
Avatar billede claes57 Ekspert
22. juli 2017 - 10:44 #1
start en kommandoprompt, og skriv
set
så kommer en liste med data om bruger og maskine som man kan bruge i programmer
HOMEDRIVE=C:
HOMEPATH=\Users\[dit brugernavn]

så din kode sætter de to sammen til
C:\Users\[dit brugernavn]
Avatar billede BIRGER Seniormester
22. juli 2017 - 11:03 #2
Er du ekspert i VBA?
Avatar billede claes57 Ekspert
22. juli 2017 - 11:22 #3
kan noget - måske 70% ekspert
Avatar billede BIRGER Seniormester
22. juli 2017 - 11:25 #4
Ok ville gerne stille et spørgsmål mere om vba-kode.  Skal jeg lige oprette et?
Avatar billede claes57 Ekspert
22. juli 2017 - 11:44 #5
Bare fortsæt her
Avatar billede BIRGER Seniormester
22. juli 2017 - 11:50 #6
Jeg har en vba kode som kører fint i windows 7, men jeg synes at hvis programmet skal køre i windows 10 virker det ikke rigtigt.
Har du erfaringer med om en opgradering fra windows 7 til windows 10 kan skabe problemer for eksisterende vba programmer.
Avatar billede claes57 Ekspert
22. juli 2017 - 12:19 #7
Der burde ikke være forskel (udover design er de to systemer ret ens).
Men du kan fx ramme problem hvis der på win10 er mapper med mellemrum i navne og uden mellemrum i win7. Kalder du programmer/dos så skal sti/filnanve være med " før og efter for at dos læser det som et.
Avatar billede BIRGER Seniormester
22. juli 2017 - 12:28 #8
Jeg prøver lige at vedlægge et eksempel,  er en kode der overfører data til word fra en database:

Sub Kunde()

kundenr = InputBox("indtast kundenr")


If kundenr = "" Or Not IsNumeric(kundenr) Then
Application.ScreenUpdating = False
Selection.GoTo What:=wdGoToBookmark, Name:="kvantum"
ActiveWindow.ActivePane.VerticalPercentScrolled = 0

Else

ActiveDocument.Unprotect
    Dim objConn As ADODB.Connection
    Dim objRs As ADODB.Recordset
    Dim strConnString As String
    Dim strSQL As String
   
    Set objConn = New ADODB.Connection
    Set objRs = New ADODB.Recordset
   
    FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\SharePoint\Kunder - bilag mv. - Dokumenter\Kartoteker.MDb"

    If Dir(FilogSti) = "" Then ' tjekker om databasen er der
        MsgBox "Filen """ & FilogSti & """ eksisterer ikke"
        Exit Sub
    End If

strConnString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & FilogSti
    objConn.Open strConnString
 
   
    strSQL = "SELECT Kundenr,Navn1,navn2, Adresse, postnr,by,tlfnr,mobilnr,sælgernr FROM kundekartotek WHERE Kundenr = " & kundenr
    objRs.Open strSQL, objConn
Avatar billede claes57 Ekspert
22. juli 2017 - 12:53 #9
hvis det er mellemrum så ret
Kunder - bilag mv. - Dokumenter
i linjen
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\SharePoint\Kunder - bilag mv. - Dokumenter\Kartoteker.MDb"
til
KUNDER~1
så du bruger
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\SharePoint\KUNDER~1\Kartoteker.MDb"
Avatar billede BIRGER Seniormester
22. juli 2017 - 13:02 #10
ok KUNDER~1..... i stedet for.... Kunder - bilag mv. - Dokumenter

Hvad gør det ~1¨?
Avatar billede claes57 Ekspert
22. juli 2017 - 13:27 #11
Kunder - bilag mv. - Dokumenter
er den lange form, som tillader mellemrum i mappenavne.
KUNDER~1
er den korte dos-form som systemet gemmer til hvis man har noget kode, der virker bedst uden mellemrum (på den originale 8.3 form i dos)
Du kan se den, hvis du i kommandoprompt skiver
cd \Users\[dit brugernavn]\SharePoint
dir /x
så vil der være en linje med
KUNDER~1    Kunder - bilag mv. - Dokumenter
så du ser kort og lang form
hvis der er flere mapper, der starter med 'kunder - ' så vil de have ~2 ~3 osv
Avatar billede BIRGER Seniormester
22. juli 2017 - 13:49 #12
Mange tak  jeg prøver
Avatar billede BIRGER Seniormester
16. maj 2019 - 16:08 #13
Hej

Du hjalp mig med denne.

Ved du om en nyere verson af windows 10 kan indvirke på denne.

Jeg får en fejlmeddelelse nu her.

Har ellers virket perfekt!
Avatar billede claes57 Ekspert
16. maj 2019 - 16:27 #14
det burde ikke have ændret noget. Hvad er fejlkode? og evt linjen, den laver fejl i?
Avatar billede BIRGER Seniormester
16. maj 2019 - 16:46 #15
siger:
Filen C\users\bji\DLG\kunder~1.-DO\kartotekter.MDb eksisterer ikke
Avatar billede claes57 Ekspert
16. maj 2019 - 17:19 #16
kunder~1.-DO
er forkert
det er sikkert kun
kunder~1

C\users\bji\DLG\kunder~1\kartotekter.MDb
prøv at starte en kommandoprompt/powershell ved at højreklikke på windows-start ikon og skriv
dir C\users\bji\DLG\kunder~1\kartotekter.MDb
den skal vise filen - ellers prøv med
C\users\bji\DLG\kunder~2\kartotekter.MDb
til den vises, og ret så kunder~1.-DO i koden til fx kunder~1 eller hvilket nummer, der nu viser filen.
Avatar billede BIRGER Seniormester
17. maj 2019 - 11:10 #17
Programmet kører fint på en computer, men ikke på anden som har en nyere version af windows 10.
Derfor troede jeg at det måske var derfor.
Men fejlmeddelsen siger vel at programmet ikke kan finde kartoteket?
Avatar billede claes57 Ekspert
17. maj 2019 - 11:31 #18
har lige set på min - win10 har opdateret powershell, og den vil ikke med filnavne i kort form. Du kan snyde og tvinge win10 til at bruge cmd.exe
Så højreklik på Start, og vælg Kør, skriv
cmd.exe
og du er i den gamle 'dos-boks' hvor din rutine skal virke.
lav evt en genvej på skrivebord, der kalder cmd.exe
Avatar billede BIRGER Seniormester
17. maj 2019 - 13:01 #19
Den virker så indtil computeren slukkes?
Kan det kald til cmd.exe ligges ind i programmet?
Avatar billede claes57 Ekspert
17. maj 2019 - 13:21 #20
kun en gang:
du laver en genvej, hvor cmd.exe startes
højreklik på genvejen og vælg egenskaber
Destination skal være C:\Windows\System32\cmd.exe
Start i skal være mappen, hvor du har dit vbs-script
og det er så det. Når du vil køre din rutine, så klik på genvejen, og i det sorte 'dos' vindue skriver du navnet på rutinen (inkl .vbs)

Den kan desværre ikke kaldes samtidig med cmd, da den så bare suser igennem, og du kan ikke nå at se evt fejl før den lukker igen
Avatar billede BIRGER Seniormester
17. maj 2019 - 13:35 #21
Så vidt jeg kan se kører den i W10 ver. 1709 og ikke i ver.1803.
Kan man skrive sig ud af det i programmet.
Er det KUNDER~1 i programmet den ikke forstår?
Avatar billede claes57 Ekspert
17. maj 2019 - 13:59 #22
lav en fil i notesbog på tre linjer

cd \stientilvbs
mitscript.vbs
pause

og gem den som mitscript.bat i samme mappe som scriptet
i din genvej til cmd retter du, så kaldet er med
C:\Windows\System32\cmd.exe "c:\stientilvbs\mitscript.bat"

ret selv stientilvbs, mitscript.bat og mitscript.vbs til...
ved at sætte " omkring sti og navn på bat-filen, så kan mellemrum tillades.
Jeg kender ikke noget videre til powershell, og ved ikke, hvad der er ændret.
Avatar billede BIRGER Seniormester
20. maj 2019 - 07:40 #23
Skulle jeg kunne kalde vba koden fra word, hvis jeg bruger cmd.exe først?
Avatar billede claes57 Ekspert
20. maj 2019 - 08:22 #24
Ville det være umuligt, at omdøbe mappen
\Kunder - bilag mv. - Dokumenter
til noget uden mellemrum og punktum, fx
\KunderBilagDok
(husk at rette kunder~1 til også)
hvis det virker, så er det powershell, der generer.
Det kan være, det er ok bare du fjerner . i mv. så test også gerne
\Kunder - bilag mv - Dokumenter
hvis mappen skal hedde det.
Avatar billede BIRGER Seniormester
20. maj 2019 - 11:23 #25
Hvis jeg ændrer mappens navn til Salgs-Administration

Hvad skal der så stå i denne kode?

FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\Kunder~1.-DO\Kartoteker.MDb"
Avatar billede claes57 Ekspert
20. maj 2019 - 11:41 #26
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\Salgs-Administration\Kartoteker.MDb"
Avatar billede BIRGER Seniormester
20. maj 2019 - 13:09 #27
Det fik jeg heller ikke at virke.......er en hård nød at knække
Avatar billede claes57 Ekspert
20. maj 2019 - 13:23 #28
i stifinder - gå til mappen, hvor databasen ligger - klik i mappen-linjen og kopier den
erstat nu
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\Salgs-Administration\Kartoteker.MDb"
med
FilogSti = "(det du har kopieret)\Kartoteker.MDb"
Avatar billede BIRGER Seniormester
21. maj 2019 - 07:50 #29
Nu lagde jeg kartoteket i en ny mappe:
Salgs-Administration - Salgs-Administration
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\SALGS-~1\Kartoteker.MDb"
Det virker fint i gamle windows version, med ikke i den nye !

Ved ikke om det siger noget?
Avatar billede claes57 Ekspert
21. maj 2019 - 08:48 #30
hvorfor ikke bruge
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\Salgs-Administration\Kartoteker.MDb"
der er ingen mellemrum og ingen punktummer, så det virker vel?
Og nærlæs teksten i den msgbox, der dukker op - er det den 100% korrekte sti og filnavn?
Avatar billede BIRGER Seniormester
21. maj 2019 - 10:20 #31
lykkes ikke rigtig, hvordan skal koden se ud hvis kartoteket ligger på skrivebordet?

FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\DLG\SALGS-~1\ADM\Kartoteker.MDb"
Avatar billede claes57 Ekspert
21. maj 2019 - 10:48 #32
hvorfor piller du ved mappenavn? SALGS-~1\ADM er forkert.
hvis du ikke taster det jeg skriver, så får du aldring en løsning.
Hvis du placerer databasen på skrivebord (og ikke kun en genvej!), så
FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\Desktop\Kartoteker.MDb"
Avatar billede BIRGER Seniormester
21. maj 2019 - 13:00 #33
Billedet er det samme....kører på den gamle og ikke på den nye version.

FilogSti = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\Desktop\Kartoteker.MDb"

Der burde vel ikke være noget i denne kode som generer den
Avatar billede claes57 Ekspert
21. maj 2019 - 13:20 #34
der skulle så komme en msgbox op, hvor du kan se den samlede sti, og det skulle være
c:\users\(dit brugernavn)\Desktop\Kartoteker.mdb
hvis der ikke kommer en msgbox op, så ligger fejlen i en anden linje i koden

evt på win10, Indstillinger / Start / Processlinje der er en
Erstat kommandoprompt med powershell... Slå den fra og test igen
Avatar billede BIRGER Seniormester
22. maj 2019 - 09:43 #35
Jeg prøvede med proceslinjen på den nye version, men der ier ngen reaktion.

Gjorde det også på den gamle version, men det bevirkede bare at jeg ikke længere kan få kontakt til kartoteket
Avatar billede BIRGER Seniormester
23. maj 2019 - 16:36 #36
Tror du at det kan beatle sig at stille spørgsmålet herinde?
Avatar billede claes57 Ekspert
23. maj 2019 - 17:00 #37
hvis du omformulerer spørgsmål, og skriver præcist, hvad problemet er, og evt linket til denne tråd, så kan andre kigge på det. Evt, hvis der er nogle, der kan få adgang til din pc pr fjernkontrol, så de kan se, hvad der sker (hvis du fx har teamviewer på).
Jeg er så ikke til fjernadgang, da jeg så kan beskyldes for alle ulykker på maskinen.
Avatar billede BIRGER Seniormester
23. maj 2019 - 17:24 #38
Skal jeg ikke vise kaldet på på kartoteket.  og skrive hvad version det lykkes i og hvad version det ikke lykkes i?
Avatar billede claes57 Ekspert
23. maj 2019 - 20:00 #39
Alt, hvad der er med til en løsning, skal med. Så jo, skriv, hvad der lykkes, og hvor det går galt. Hvad der sker på win10, når den ikke viser det ønskede (fejlkoder, msgbox osv). Det er jo ikke en gættekonkurrence, men et håb om at finde en årsag til en fejl.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester