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.
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.