02. november 2003 - 11:31Der 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
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
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)
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")
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
--> 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
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
-->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.
kabbak du fik aldrig dine point og bak svarede ikke - så hermed følger de :0)
Synes godt om
Ny brugerNybegynder
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.