Gå til innhold

Macro for autooppdatering i Excel?


Anbefalte innlegg

Case: Et regneark som jeg skriver og som andre har tilgang til å lese via nettverk. Det er en arbeidsoversikt for ansatte.

 

Når dette regnearket blir åpnet av andre i nettverket vil jeg at det skal oppdatere seg selv jevnlig, slik at tilføyde arbeidsoppgaver kommer frem. Altså, som jeg har skrevet til filen i tiden etter at den ble åpnet.

 

Slik vil jeg at ansatte skal slippe å lukke og åpne excel hele tiden.

 

Grunnen til at jeg skriver her er fordi når jeg vil prøve å skrive en macro for dette, havner jeg i VB, som jeg ærlig talt kan ingenting om.

 

Kan noen gi forslag, og evnt. kan lage en slik (enkel?) macro?

 

Takk.

Lenke til kommentar
Videoannonse
Annonse
*bump*

thihi, posten lå jo øverst i listen :p

 

Hvordan du skal kunne lukke excel og åpne på nytt vet jeg ikke, men her er en kode for å sjekke om filen er blitt endret:

Dim Path As String
Dim Buff As String

Private Sub Form_Load()

Path = "C:\htmfil.htm"

Timer1.Interval = 1000
Timer1.Enabled = True

Buff = LoadFile(Path)

End Sub

Private Sub Timer1_Timer()

If Not Buff = LoadFile(Path) Then
   
   MsgBox "Filen har endret seg!", vbInformation, "Excel"
   Buff = LoadFile(Path)
   
End If

End Sub

Public Function LoadFile(filename1 As String) As String
If Dir(filename1) = "" Then GoTo feil

Open filename1 For Binary As #1

   LoadFile = Input(FileLen(filename1), #1)

Close #1

feil:
End Function

Edit: Eneste du trenger er å legge til en timer.

Endret av Jonas
Lenke til kommentar

Hvis det er relativt store filer det er snakk om, eller du ønsker å spare nett-trafikk, kan du heller sjekke om den relevante filen har en nye redigerings-dato (Date modified):

 

Option Explicit

Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As Currency, lpLastAccessTime As Currency, lpLastWriteTime As Currency) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Const OFS_MAXPATHNAME = 128
Const OF_READ = &H0

Private Type OFSTRUCT
   cBytes As Byte
   fFixedDisk As Byte
   nErrCode As Integer
   Reserved1 As Integer
   Reserved2 As Integer
   szPathName(OFS_MAXPATHNAME) As Byte
End Type

Dim Path As String
Dim LastTime As Currency

Private Sub Form_Load()

Path = "C:\Test.txt"
LastTime = FileTime(Path)

Timer1.Interval = 1000
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

If LastTime <> FileTime(Path) Then
  
  MsgBox "Filen har endret seg!", vbInformation, "Excel"
  LastTime = FileTime(Path)
  
  ' # Todo: Legg inn kode for å åpne filen på nytt her #
End If

End Sub

Public Function FileTime(sFile As String) As Currency

Dim hFile As Long, cAccess As Currency
Dim OF As OFSTRUCT, cCreate As Currency

hFile = OpenFile(sFile, OF, OF_READ)
GetFileTime hFile, cAccess, cCreate, FileTime
CloseHandle hFile

End Function

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...