Avatar billede spoi Nybegynder
17. oktober 2006 - 12:53 Der er 24 kommentarer og
1 løsning

vesrsionsstyng og oprettelse af nyt ark automatisk

Hej

Jeg har et regneark med navn "NY version"

I celle c2 står der VersionX

Når jeg trykker på en knap vil jeg gerne have at denne version bliver gemt i et nyt ark, som en kopi med navnet versionX i c2 skal der fortsat stå Version X

I det gamle ark skal c2 ændres til VersionX+1

Mens dette stadig skal ligge i Ny version arket.

Desuden vil jeg gerne at kun jeg kan trykke på kanppen for at ændre versoionen dvs at der kommer en kode. Men dette kan muligvis bare styres ved at beskytte arket med kode. Men den beskytter vel først når der gemmes?

Der vil desuden følge et spm senere vedr nogle datoer. men det kommer straks dette delproblem er løst.

Forklaring. Jeg er i gang med at lave nogle instruktioner der skal versionsstyres og vil gerne automatisere det.

Der er lavet hyperlink fra et andet regneark til netop "NY version"

Derfor skal det gerne være den nyeste vesrion - men gamle versioner skal stag gemmes.

Andre ideer til hvorledes dett kan tackles modtages gerne ;O)

LN
Avatar billede maria202 Nybegynder
17. oktober 2006 - 15:02 #1
Hejsa, du kan bruge denne makro:

Sub Version()

Sheets("NY version").Select
a = Cells(2, 3).Value

Sheets("Ny version").Copy After:=Sheets("Ny version")
Sheets("Ny version (2)").Select
Sheets("Ny version (2)").Name = a

Sheets("NY version").Select
Range("c2") = Left(a, 7) & Right(a, 1) + 1

End Sub
Avatar billede kabbak Professor
17. oktober 2006 - 15:45 #2
Kan du ikke nøjes med et tal i c2, det gør det nemmere.

Sub Makro2()

  Sheets("Ny version").Copy Before:=Sheets("Ny version")
  ActiveSheet.Name = "Version" & Sheets("Ny version").Cells(2, 3)
  Sheets("Ny version").Cells(2, 3) = Sheets("Ny version").Cells(2, 3) + 1
End Sub
Avatar billede spoi Nybegynder
18. oktober 2006 - 06:28 #3
jo det kan jeg sagtens

Prøver lige
LN
Avatar billede spoi Nybegynder
18. oktober 2006 - 06:35 #4
OJ prøvede lige men der skete lige det modsatte *SS*

Ny version skulle forblive i første ark og version  feks version x+1
Og i næste ark skal der stå version 1 som er den gamle version der før stod i på første ark under Ny version.

LN
Avatar billede spoi Nybegynder
18. oktober 2006 - 07:13 #5
Det virker perfekt med et Befor skiftet ud med After ;O)

Ved du om det er muligt at låse alle andre ark end det første "Ny version" for brugeren, dvs alle andre end mig - evt med kode.

Har hyperlink fra et andet excel dokument til Ny version og jeg frygter lidt de kunne begynde at bladre og tage data fra en gammel version. Og det er absolut forbudt ;O)

En mulighed kunne vel også være mulig at de ældre versioner ryger over i en hel anden fil ?

Læg et svar så jeg kan give dig point.

Der kommer et nyt spm om lidt der omhandler de samme ark. Det er nogle datoer der skal overskrives og den gamle dato skal så rykkes til et andet felt. Men hold endelig øje med det når det kommer.

LN
Avatar billede spoi Nybegynder
18. oktober 2006 - 07:42 #6
Kan det virke sådan at jeg autonatisk kommer til at stille mig i Ny version når efter jeg har trykket på kanppen. Testede lige rundt og kom til at rette i en gammel version fordi jeg automatisk stod der.

Og er det evt muligt at knaooen ikke kommer med over i kopierne?

LN
Avatar billede kabbak Professor
18. oktober 2006 - 12:10 #7
Sub Makro2()

  Sheets("Ny version").Copy After:=Sheets("Ny version")
  ActiveSheet.Name = "Version" & Sheets("Ny version").Cells(2, 3)
  Sheets("Ny version").Cells(2, 3) = Sheets("Ny version").Cells(2, 3) + 1
Sheets("Ny version").Activate
End Sub
Avatar billede kabbak Professor
18. oktober 2006 - 14:52 #8
et svar ;-))
Avatar billede spoi Nybegynder
19. oktober 2006 - 07:42 #9
En ekstra ting er det ikke muligt at det kun er første ark dvs Ny version der har knap og makro. dvs at det ikke kopieres med over på de andre ark så jeg ender med en masse makroer og knapper?

LN
Avatar billede kabbak Professor
19. oktober 2006 - 08:59 #10
Sub Makro2()

  Sheets("Ny version").Copy After:=Sheets("Ny version")
  ActiveSheet.Name = "Version" & Sheets("Ny version").Cells(2, 3)

For Each Co In ActiveSheet.OLEObjects
Co.Delete
Next

  Sheets("Ny version").Cells(2, 3) = Sheets("Ny version").Cells(2, 3) + 1
Sheets("Ny version").Activate
End Sub


Nu slettes knappen
Avatar billede spoi Nybegynder
19. oktober 2006 - 09:45 #11
hmm knap og makro følger stadig med over
Avatar billede spoi Nybegynder
19. oktober 2006 - 10:08 #12
Ok det ser ud til at virke. Havde en simpel knap med tilknyttet makro og ikke en Commandbutton.

Nu vil jeg så bare have en kopi af ny version uden knap over i en helt ny fil uden knap og hvor jeg der kun er læseradgang men for alle.

Den fil ligger på H:\pakkeinstruktion\xxxx.xls

hvor xxxx.xls hvor xxxx ? kundenummeret og som stpr i b4 i Ny version

Det nye ark i den nye fil må gerne hedde Nyeste version for kunde xxxx eller noget i den duer. Ny Version er også bare ok.

Giver gerne 100 point ekstra eller havd du nu finder passende:O)

Det der er humlen er at jeg står for versionsstyring ag nogle pakkeinstruktioner og for opdateringer af data. dvs jeg skal kunne redigere og opdatere. Pakkeriet skal kunne gå ind i alle pakkeinstruktionerne og kunne læse men ikke ændre og de må helst heller ikke kunne se de gamle versioner for så kager de i det ;O)

Det kunne også være sådan at i stedet for som nu at man kopierer til nye ark - kunne de kopieres til en helt anden fil feks xxxx_gamle versioner.xls
Og så sørge for at brugerne ikke kan aktivere knappen - dvs at kun jeg kan aktivere den.


hmmm??? forstår du havd jeg mener.

LN
Avatar billede spoi Nybegynder
19. oktober 2006 - 12:35 #13
har løst det delvist men der er stadig problemer.

Har lavet en knap et der gør det du har beskrevet ovenfor
Så har jeg lavet en knap der overfører til pakkeriet. den overører så Ny version til en helt ny fil.

Problemet er at denne skal være skrivebeskyttet(med kode) men jeg skal satdig kunne overøfr data dertil når der kommer en ny version.

Tænkte så jeg kunne beskytte det som udgangspunkt og så når jeg trykker på knappen i versopnsfilen ja så låser den filen op
Og til slut låser den filen igen.

Men lige den sidste del kan jeg ikke få til at fungere.

LN
Avatar billede spoi Nybegynder
19. oktober 2006 - 12:39 #14
det ser ud som dette

Private Sub CommandButton2_Click()
Sheets("NY version").Range("A1:D53").Select
        Selection.Copy
   
    Workbooks.Open Filename:= _
"H:\Pakkeinstruktioner\instruktion\xxxxtest.xls"  xxxx = kundenr.

Windows("xxxxtest.xls").Activate

Sheets("Nyeste version").Range("A1:D53").Select
'ActiveSheet.Unprotect
   
      ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=True
   
'  ActiveSheet.Protect

'fjern beskyttelsen øverst i subben og slå den til igen nederst

   
   
End Sub


Og vil jo gerne have mulighed for at angive koden igen når jeg skrivebeskytter

LN
Avatar billede kabbak Professor
19. oktober 2006 - 13:23 #15
Private Sub CommandButton2_Click()
Sheets("NY version").Range("A1:D53").Select
        Selection.Copy
  'Ret[B3] til den celle du har kundenummer i
    Workbooks.Open Filename:="H:\Pakkeinstruktioner\instruktion\" & [B3] & "test.xls" ' xxxx = kundenr.

Windows([B3] & "test.xls").Activate

Sheets("Nyeste version").Range("A1:D53").Select
ActiveSheet.Unprotect Password:="kabbak"
 
      ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=True
 
  ActiveSheet.Protect Password:="kabbak"

'fjern beskyttelsen øverst i subben og slå den til igen nederst

 
 
End Sub
Avatar billede spoi Nybegynder
19. oktober 2006 - 13:37 #16
Den fejler op Active Sheet.Paste med fejlmeddelselsen

run time error 1004
Metoden Paste for klassen Worksheet mislykkedes.

Uden
ActiveSheet.Unprotect Password:="kabbak"
  og       
  ActiveSheet.Protect Password:="kabbak"
fungerer det fint

LN
Avatar billede kabbak Professor
19. oktober 2006 - 13:52 #17
Private Sub CommandButton2_Click()
Sheets("NY version").Range("A1:D53").Select
        Selection.Copy
  'Ret[B3] til den celle du har kundenummer i
    Workbooks.Open Filename:="H:\Pakkeinstruktioner\instruktion\" & [B3] & "test.xls" ' xxxx = kundenr.

Windows([B3] & "test.xls").Activate

Sheets("Nyeste version").activate
ActiveSheet.Unprotect Password:="kabbak"
Sheets("Nyeste version").Range("A1").Select
      ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=True

  ActiveSheet.Protect Password:="kabbak"

'fjern beskyttelsen øverst i subben og slå den til igen nederst

End Sub

prøv denne
Avatar billede kabbak Professor
19. oktober 2006 - 13:54 #18
Private Sub CommandButton2_Click()
Sheets("NY version").Range("A1:D53").Select
        Selection.Copy
  'Ret[B3] til den celle du har kundenummer i
    Workbooks.Open Filename:="H:\Pakkeinstruktioner\instruktion\" & [B3] & "test.xls" ' xxxx = kundenr.

Windows([B3] & "test.xls").Activate

Sheets("Nyeste version").activate
ActiveSheet.Unprotect Password:="kabbak"
Sheets("Nyeste version").Range("A1").Select
      ActiveSheet.Paste

  ActiveSheet.Protect Password:="kabbak"
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=True


'fjern beskyttelsen øverst i subben og slå den til igen nederst

End Sub

jeg flyttede lige en linie
Avatar billede spoi Nybegynder
19. oktober 2006 - 13:59 #19
Det giver præcis samme fejlmeddelelse :O(

LN
Avatar billede spoi Nybegynder
19. oktober 2006 - 14:04 #20
Ok men i første ongan har jeg slet ikke beskyttet arket igen. Og heller ikke gemt. Har gjort dem inaktive med '
I første omgang vil jeg nemlig bare have den til at sætte kopien ind.

LN
Avatar billede spoi Nybegynder
19. oktober 2006 - 14:26 #21
tror jeg er lidt på sporet måske måske ;O)

Kan det være noget med at den ikke kan huske det kopierede område efter den har låst arket op. dvs at man først skal låse arket op og derefter skal kopiere og pase, derefter gemme, så låse arket og til sidst lukke arket. Puha.

Prøvede at indspille og da kunne den ikke huske havd der var kopieret.

????

LN
Avatar billede kabbak Professor
19. oktober 2006 - 15:14 #22
Private Sub CommandButton2_Click()
'Ret[B3] til den celle du har kundenummer i
    Workbooks.Open Filename:="H:\Pakkeinstruktioner\instruktion\" & [B3] & "test.xls"    ' xxxx = kundenr.
    Windows([B3] & "test.xls").Activate
    Sheets("Nyeste version").Activate
    ActiveSheet.Unprotect Password:="kabbak"
    ThisWorkbook.Sheets("NY version").Range("A1:D53").Copy Sheets("Nyeste version").Range("A1")
    ActiveSheet.Protect Password:="kabbak"
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=True
End Sub


prøv denne
Avatar billede spoi Nybegynder
20. oktober 2006 - 06:55 #23
Det virker bare helt perfekt. får næsten tårer i øjnene ;O)

Den version som pakkeriet skal se er der vel ingen problemer med bare at dele filerne så? Der er jo kun læseadgang og ja flere skal se på en gang og der er ingen makroer på netop den side.

Det er godt nok bare super.

Hvad vil, du have for den sidste del af hjælpen Kabbak?

LN
Avatar billede kabbak Professor
20. oktober 2006 - 09:25 #24
Det er ok med de point, jeg har fået ;-))
Avatar billede spoi Nybegynder
20. oktober 2006 - 09:31 #25
Ok tak, men du må altså gerne få feks 100 mere.

Jeg er nemlig rigtig glad for hjælpen.

LN
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Stort udvalg af Excel kurser til alle niveauer og jobfunktioner

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester