03. april 2007 - 07:06Der er
9 kommentarer og 1 løsning
opdatere filer baseret på Excel
Hej
Jeg har omkring 2x120(ens parvis) filer baseret på en bestemt skabelon
Hvis skabelonen med tiden går hen og ændrer sig lidt kan jeg så opdatere denne ændring på de filer der allerede er lavet via denne fil? Det er ganske ok, hvis man skal ind på hver enkelt dokument og opdatere. Det er stadig bedre end at starte forfra.
Udgave 1 - indholdet fra bestående v-filer flyttes uændret og gemmes i nyt skabelon-format:
Rem Opdatering af ændret skabelon Rem ============================= Const vSti = "C:\instruktioner\version\" Sub knap() findVfiler
MsgBox ("Opdatering af v-filer m/ændret skabelon er udført") End Sub Private Sub findVfiler() Dim fs, f, f1, fc, s
Rem Søg efter versions-fil Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(vSti) Set fc = f.Files For Each f1 In fc If LCase(f1.Name) <> "skabelon.xlt" Then opdaterVfil f1.Name End If Next End Sub Private Sub opdaterVfil(filNavn) Dim xlT, xlS, antalRæk, antalKol, knr
knr = Left(filNavn, 4)
Rem Åbn ændrede skabelon Set xlT = CreateObject("Excel.application") With xlT .Visible = False .Workbooks.Open Filename:=vSti + "Skabelon.xlt" End With
Rem Åbn v-filen Set xlS = CreateObject("Excel.application") With xlS .Visible = False .Workbooks.Open Filename:=vSti + filNavn
antalRæk = .ActiveCell.SpecialCells(xlLastCell).Row antalKol = .ActiveCell.SpecialCells(xlLastCell).Column End With
Rem flyt data fra V-fil til ny skabelon For k = 1 To antalKol For r = 1 To antalRæk xlT.Cells(r, k) = xlS.Cells(r, k) Next r Next k
Rem luk bestående v-fil xlS.ActiveWorkbook.Close xlS.Application.Quit Set xlS = Nothing
Rem gem ny version af v-fil - afbryd evt. meddelelser xlT.Application.DisplayAlerts = False
xlT.ActiveWorkbook.SaveAs vSti + knr + "v.xls" xlT.ActiveWorkbook.Close xlT.Application.Quit Set xlT = Nothing End Sub
prøver at forklare hvad jeg er ved at lave - du er jo snart med til hele opgaven kan jeg se;O).
Er ved at overføre nogel pakkerivejledninger til excel. de har hidtil ligget i papir format. Disse vejledninger skal være versionsstyret og pakkeriet skal kun kunne se den nyeste version(og skal ikke kontant sige ja til makroer).
Alle filer er ens oprbygget. Tænkte så at det kunne være smart at oprette en excelfil der indeholdt alle data. Og så fra de enkelte filer hente data.
Nu her i oprettelsestidspunktet eller hvis der kommer nye kunder kunne det dog være smart at oprette alle filer på en gang ud fra skabeloner.
I selve filerne(skabelonen er der nogle beregnede felter) bla datoer. Ellers er det bare alm data der via makro føres fra det store ark(vedligeholdeslesark) med alle kunder til de enkelte filer.
I de situationer hvor der rettes i en vejledning rettes der i selve det store (vedligeholdesark) og fra den pågældende vejledning(kundebestemt) hentes data så over.
Prøver så at forudse alle de ting der kan komme.
Det kan nok ikke helt undgås at der over tid kommer nogle større ændringer på filerne end blot datavedligeholdese. At der feks forsvinder et felt eller kommer et nyt felt. Her skal jeg jo så selvfølgelig rette i de makroer der henter data så de leveres i de enkelte felter.
Men stdig kunne det være rart ikke at skulle slette eller oprette et felt manuelt på alle filer - men bare kunne rette i skabelonen. Opdater og ja så hente data igen så de placeres korrekt.
Og ja det giver sikkert noget rod med daoerne??
Har gjort opalds i mine skabeloner til at der kan komme ekstre felter nederes i filerne, så det hele ikke rykker sig.
Det jeg mener og det som du også selv kommer ind på:
Lidt tanker herom: "Hvis man via skabelonen - når denne over tid ændres - kunne se hvilke felter, der fremover skulle være gældende - så ville man jo kunne styre opdateringen af v-filerne herfra. Dettes kunne være at cellerne i skabelonen havde en bestemt farve el. lign. Hvis et felt fjernes i skabelonen - så ville det tilsvarende felt fra v-filen ikke komme med. Hvis et felt tilføjes vil det jo fremgå af skabelonen".
I/du har aldrig overvejet om en database-løsning ville være mere fleksibel?
hmm kan ikke lige se en løsning andet end hårdt manule arbejde ;O) LN
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.