11. april 2004 - 21:40Der er
13 kommentarer og 1 løsning
import + eksport fra skrivebeskyttet ark
Jeg har en skrivebeskyttet workbook som bruges af flere brugere. Der er én kolonne i arket som det ville være rart at kunne gemme. Da det ikke er muligt at kun at gemme denne ene kolonne har jeg tænkt på noget andet:
Kan man ikke eksportere indholdet (ikke mere end 10-30 celler) til enten en anden workbook eller en kommasepareret fil når workbooken lukkes ?
Det vil så give problemer med at filen kan være optaget af en anden bruger !
Så er det ikke muligt at eksportere til en ’ny’ kommasepareret fil hver gang arket lukkes og så bliver der importeret fra den ’nyeste’ hver gang arket åbnes ?
Eller måske er der en af jer eksperter som har et bedre bud på problemet.
Det lyder lidt kryptisk, men jeg håber i kan hjælpe.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hej 'En mulighed er at gemme de ønskede celledata i en fil og genindlæse dem ved start. 'Efterstående er processen udført vha. makroer i VBA
'I eksemplet nedenfor er: 'C:\TstExel.txt filen der gemmes data i. 'i er rækkenumre (i eksemplet række 10 til og med 30) 'Cells skal anføres som Cells(Rækkenr anført som i, Kolonnenr) - kolonne i eks. er 3 'Worksheets(arknr alternativt til arknr. kan tastes arknavn i dobb. anførselstegn)
'Makroer placeres i ThisWorkbook (Alt+F11 dobb.klik ThisWorkbook)
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Makro som gemmer On Error Resume Next Dim i Open "C:\TstExel.txt" For Output As #1 For i = 10 To 30 'Rækkenumre Print #1, Worksheets(1).Cells(i, 3).Value Next Close #1 End Sub
Private Sub Workbook_Open() 'Makro som indlæser On Error Resume Next Dim V, i Open "C:\TstExel.txt" For Input As #1 For i = 10 To 30 Line Input #1, V Worksheets(1).Cells(i, 3).Value = V Next Close #1 End Sub
det er samme antal rækker i hver kolonne, men det kan ændre sig fra gang til gang (ca 175-200 rækker). Når antallet af rækker ændres plejer jeg at definere r som antalelt af rækker, men er det muligt i dette her tilfælde ?
Hej her er koden til rækker og kolonner - det er to sløjfer som køres:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Makro som gemmer On Error Resume Next Dim R, K 'Variabler R = rækker, K = kolonner Open "C:\TstExel.txt" For Output As #1
For K = NrFørsteKolonne To NrSidsteKolonne 'Kolonnenumre - start kolonnesløjfe For R = 10 To 30 'Rækkenumre - start rækkesløjfe Print #1, Worksheets(1).Cells(R, K).Value Next 'Slut på rækkesløjfe Next 'Slut kolonnesløjfe Close #1 End Sub
Private Sub Workbook_Open() 'Makro som indlæser On Error Resume Next Dim V, R, K Open "C:\TstExel.txt" For Input As #1
For K = NrFørsteKolonne To NrSidsteKolonne For R = 10 To 30 Line Input #1, V Worksheets(1).Cells(R, K).Value = V Next Next Close #1 End Sub
Er det ikke på tide jeg får set på sagerne... Jeg har testet lidt, men jeg kan ikke få det til at virke - kan det passe at den ikke klan klare tomme celler ? Jeg vender tilbage i morgen når jeg har testet lidt mere.
Makroen virker også med tomme celler. Er makroerne indsat i "ThisWorkbook? Åbn den fil som makroen skriver til, der er skrevet en linje for hver celle - Prøv at skrive i første og sidste celle i området du vil Gemme/Genindlæse, filen skal nu have indhold i første og næstsidste linje alle øvrige linjer er tomme.
Har du erstatte NrFørsteKolonne og NrSidsteKolonne med de faktiske kolonnenumre, og er værdierne de samme i begge makroer? I fald makroen fortsat ikke funktionerer, så tag en kopi af makroerne og send dem i mail til prebjo@jubiinail.dk
nogen af de 'tal' som jeg prøver at kopiere er dato+tid og det lader til at den har lidt svært ved at klare dette - men jeg har fundet en vej uden om !
Tak for hjælpen
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.