Avatar billede steensommer Praktikant
02. november 2003 - 11:31 Der er 24 kommentarer og
1 løsning

Oprettelse af log-fil

Vi har på min arbejdsplads 2 projektmapper der er navngivet med patientens cpr efterfulgt af en extension (obs for observationsskema og opr for patientmappe).
For at kunne dokumentere de ændringer der er foretaget i de 2 mapper har jeg forsøgt at oprette en log-fil baseret på nedenstående vba. Den fungerer sådan set udmærket men det ville være ønskværdigt om de "ændringer" der foretages i de enkelte ark registreres i log-filen og ikke kun AT der er foretaget en ændring - er det muligt eller krævet det meget programmering. Desuden skriver log-filen ikke tiden korrekt - den skriver altid 00:00:00 (uanset klokkeslæt)

vh Steen

Sub LogInformation(LogMessage As String)
Dim sPath As String, LogFileName As String
sPath = "\\srv\faelles\Index Data\Log-filer\"
LogFileName = sPath & Patientliste & ".log"
Dim FileNum As String
    FileNum = FreeFile ' next file number
    Open LogFileName For Append As #FileNum ' creates the file if it doesn't exist
    Print #FileNum, LogMessage ' write information at the end of the text file
    Close #FileNum ' close the file
End Sub

og i Workbook_Open:

LogInformation ThisWorkbook.Name & " åbnet af " & Application.UserName & " " & Format(Date, "dd-mm-yyyy ttttt")
Avatar billede steensommer Praktikant
02. november 2003 - 11:35 #1
Det skal lige nævnes at ovenstående patientliste.xls danner grundlag for de 2 nævnte projektmapper (opstartes fra kommandoknapper i patientliste.xls). Log-filen til de 2 projektmapper skal navngives med cpr (= (Range("D7")) efterfulgt af ectensionen (.log)
Jeg håber at det er til at forstå  :0)
Avatar billede kabbak Professor
02. november 2003 - 12:23 #2
ret denne.

LogInformation ThisWorkbook.Name & " åbnet af " & Application.UserName & " " & Format(Date, "dd-mm-yyyy hh:nn")

Her har vi diskuteret det med log over ændringer i celler

http://www.eksperten.dk/spm/377356
Avatar billede steensommer Praktikant
02. november 2003 - 12:45 #3
Den skriver desværre fortsat 00:00 - mystisk.
Debatten ser spændende ud - det skal selvfølgelig afprøves - indtil videre tak for hjælpen :0)
Avatar billede bak Forsker
02. november 2003 - 12:52 #4
Det er noget den skal gøre , Steen:
Date() giver kun en dato:
Brug Now(), der giver både dato og tid
LogInformation ThisWorkbook.Name & " åbnet af " & Application.UserName & " " & Format(Date, "dd-mm-yyyy hh:mm")
Avatar billede kabbak Professor
02. november 2003 - 12:53 #5
prøv denne, den virker hos mig

LogInformation ThisWorkbook.Name & " åbnet af " & Application.UserName & " " & Now()
Avatar billede bak Forsker
02. november 2003 - 12:53 #6
s'føli
LogInformation ThisWorkbook.Name & " åbnet af " & Application.UserName & " " & Format(Now(), "dd-mm-yyyy hh:mm")
Avatar billede steensommer Praktikant
02. november 2003 - 12:56 #7
Yes den kører - tak for det !!!
Avatar billede bak Forsker
02. november 2003 - 13:51 #8
Det er fint, steen, men hvis du vil bruge application.username, så vær opmærksom på at det er det navn man skriver i excel under "Funktioner / Indstillinger" på fanebladet Standard. Det er ikke alle der har det udfyldt og man kan skrive hvad man har lyst til.

Brug heller det navn de er logget på maskinen med:

Declare Function Get_User_Name Lib "advapi32.dll" Alias _
                "GetUserNameA" (ByVal lpBuffer As String, _
                nSize As Long) As Long


Function GetUserName() As String
    Dim lpBuff As String * 25

    Get_User_Name lpBuff, 25
    GetUserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
   
End Function

LogInformation ThisWorkbook.Name & " åbnet af " & GetUserName & " " & Format(Now(), "dd-mm-yyyy hh:mm")
Avatar billede steensommer Praktikant
02. november 2003 - 15:16 #9
--> Bak jeg har oprettet et log-on i projektmappen og ville jo gerne anvende de log-ons som anvender der i stedet for application.username. Her er koden til FrmAdgang (det ser lidt forvirrende ud - jeg håber at du får noget ud af det):0)

Option Explicit

Private Sub CancelButt_Click()
ThisWorkbook.Close SaveChanges:=False
End Sub

Private Sub CommandButton1_Click()
'ThisWorkbook.Close SaveChanges:=False
    ThisWorkbook.Saved = True
    Application.Quit
End Sub

Private Sub Image1_Click()

End Sub

Private Sub Label1_Click()

End Sub

Private Sub OKButt_Click()
Dim iFoundPass As Integer
On Error Resume Next
With Sheets("Config").Range("UserNames")

  iFoundPass = .Find(What:=UserNameTextBox, After:=.Cells(1, 1), LookIn:=xlValues, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Row
End With
On Error GoTo 0

If iFoundPass = 0 Then
  SomethingWrong
      Exit Sub
End If

If Sheets("Config").Cells(iFoundPass, 2) <> PasswordTextBox Then
  SomethingWrong
      Exit Sub
End If

Sheets("Config").Range("LoggedInAs") = UserNameTextBox
Unload Me


End Sub

Private Sub PasswordTextBox_Change()
OKButt.Enabled = (UserNameTextBox.TextLength > 2 And _
                      PasswordTextBox.TextLength > 2)
End Sub

Private Sub PasswordTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call OKButt_Click

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub

Private Sub UserNameTextBox_Change()
OKButt.Enabled = (UserNameTextBox.TextLength > 2 And _
                      PasswordTextBox.TextLength > 2)
End Sub

Private Sub SomethingWrong()
  MsgBox "Forkert Brugernavn eller kodeord.", vbCritical + vbInformation, "Bla.bla"
End Sub
Avatar billede steensommer Praktikant
03. november 2003 - 14:19 #10
Glem ovenstående kode - jeg fandt en løsning på det.
Jeg har indlagt den kode i blev enige om i Projektmappen (Patient.xls) arket: "Medicin". Den fungerer umiddelbart MEN hvis man ændrer et præparat fra ex: "1-1-1-0" til "" viser den korrekt "" men hvis man siden ændrer fra "" til ex "0-1-1-0" så viser den IKKE at cellen var tom ("") men derimod "1-1-1-0").
Jeg har desuden ændret log-on informationen.
I rækken:  rng.Offset(0, 3) = cell.Address    ville jeg gerne ha' anført værdien i samme række men kolonne a (hvor medicinen navn står anført) så log'en ikke kun er celleadresser.
Jeg har også forsøgt at få log'en til kun at skrive hvis der står anført noget i target-cellen men det resulterede i at Log'en heller ikke blev ført hvis man ændrede fra en værdi til ingenting :0(    - med andre ord er jeg på "skideren"

Kan en eller anden hjælpe??? 

Public Sub Hvem(Target)
Dim rng As Range
Dim A As String
Dim C As String
Dim i As Long
Dim cell As Range
A = ActiveSheet.Name
C = Target.Address
i = 0
For Each cell In Target
  'If Targe <> "" Then
  i = i + 1
  Set rng = Sheets("Log").Range("A65536").End(xlUp).Offset(1, 0)
  rng.Value = Now
  rng.Offset(0, 1) = A
  rng.Offset(0, 2) = cell.Address
  rng.Offset(0, 3) = cell.Address
  rng.Offset(0, 4) = "'" & OldSelection(i).Val
  rng.Offset(0, 5) = "'" & cell.Formula
  rng.Offset(0, 6) = Workbooks("Patientliste.xls").Sheets("Config").Range("C1").Value 'her er anbragt log-in information
  'End If
Next
End Sub
Avatar billede kabbak Professor
03. november 2003 - 21:03 #11
rng.Offset(0, 3) = Cells(cell.row,1).value
Avatar billede steensommer Praktikant
03. november 2003 - 21:13 #12
-->kabbak Tak fordi du kigge forbi. Alt fungerer nu (med kode du tidl. har lavet til mig) pånær den linie du lige har ændret. Nu står der intet i 3 kolonne.
Avatar billede steensommer Praktikant
03. november 2003 - 21:17 #13
undskyld 4 kolonne
Avatar billede kabbak Professor
03. november 2003 - 21:20 #14
ok, nu har jeg jo ikke et opdateret ark, så jeg ved jo ikke hvilken side(Ark), den henter Target fra.

Så jeg ved jo ikke om der er noget i A kolonnen
Avatar billede kabbak Professor
03. november 2003 - 21:28 #15
i Projektmappen (Patient.xls) arket: "Medicin",(hvor medicinen's navn står anført), det står ikke i A men i C kolonnen
Avatar billede kabbak Professor
03. november 2003 - 21:29 #16
så skal det være
rng.Offset(0, 3) = Cells(cell.row,3).value
Avatar billede steensommer Praktikant
03. november 2003 - 21:29 #17
Fy for den ... du har da fuldstændig ret. Hvorledes skal det så anføres?
Avatar billede kabbak Professor
03. november 2003 - 21:34 #18
Steen, hvad er dit arbejde egentlig, EDB eller læge ?.

Man forledes jo til at tro at det er EDB, da du jo er her både morgen og aften. ;-))
Avatar billede steensommer Praktikant
03. november 2003 - 21:35 #19
Nå du nåede det før mig. Nu fungerer det bare. Tak igen, igen......
Svar lige så får du point . eller måske burde jeg fordele med mellem bak og dig?
Avatar billede kabbak Professor
03. november 2003 - 21:36 #20
jeg synes at bak også skal have
Avatar billede steensommer Praktikant
03. november 2003 - 21:37 #21
Det var så en opfordring til bak :0)
Avatar billede steensommer Praktikant
03. november 2003 - 21:40 #22
Læge (Anæstesiolog) er mit arbejde. Edb er min hobby, med vba som noget nyt. Dog fylder edb-stoffet meget på mit arbejde.
Avatar billede steensommer Praktikant
03. november 2003 - 21:41 #23
Vedr morgen og aften - er jeg jo ikke den eneste GUDSKELOV
Avatar billede kabbak Professor
03. november 2003 - 21:42 #24
nej, det kan det jo være noget om ;-))
Avatar billede steensommer Praktikant
06. december 2003 - 14:24 #25
kabbak du fik aldrig dine point og bak svarede ikke - så hermed følger de :0)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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