Avatar billede sjogren Novice
24. november 2004 - 21:47 Der er 19 kommentarer og
1 løsning

Konverter flere ark til separate variabelt navngivet regneark

Jeg har et regneark med aktuelt 21 individuelt navngivet ark (antal og navne kan variere). Første og sidste ark ændres dog aldrig og skal ikke behandles.

Behov (problem):
En VBA kode der:
* kopier (copy paste special values) alle data fra hvert ark til en ny fil pr. ark (dvs. 21-2=19 separate filer) til en prædefineret destination,
* hver nye fil navngives med en fast tekst og det variable navn på det pågældende ark.

Håber der er en VBA-haj derud der kan hjælpe :)
Avatar billede kabbak Professor
24. november 2004 - 22:12 #1
Public Sub Lav_filer()
sti = "C:\Dokumenter\" ' ret til din sti
  For Each ws In Worksheets
If ws.Name <> "Forside" And ws.Name <> "Bagside" Then
' skift selv navnet på siderne der ikke skal med
      Sheets(ws.Name).Copy
      navn = ws.Name & Date  ' filen får arknavnet og dads dato, ret selv til
      ActiveWorkbook.SaveAs Filename:= _
        sti & navn & ".xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    ActiveWindow.Close
 
  End If
Next
End Sub
Avatar billede bak Seniormester
24. november 2004 - 22:20 #2
Kabbak, mangler du ikke lige en linie efter  Sheets(ws.Name).Copy for kun at have værdier med  ?
fx.
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
Avatar billede kabbak Professor
24. november 2004 - 22:31 #3
selvfølgelig, den må hellere komme med.

Godt at du nærlæste det bak, jeg havde overset det med værdier

Public Sub Lav_filer()
sti = "C:\Dokumenter\" ' ret til din sti
  For Each ws In Worksheets
If ws.Name <> "Forside" And ws.Name <> "Bagside" Then
' skift selv navnet på siderne der ikke skal med
      Sheets(ws.Name).Copy
      ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
      navn = ws.Name & Date  ' filen får arknavnet og dags dato, ret selv til
      ActiveWorkbook.SaveAs Filename:= _
        sti & navn & ".xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    ActiveWindow.Close
 
  End If
Next
End Sub
Avatar billede sjogren Novice
24. november 2004 - 22:47 #4
Hej kabbak (og bak)

Koden virker ikke (run-time error): Method 'Copy' of Object '_Worksheet' failed.
Makroen standser og gul-markerer netop på linien: Sheets(ws.Name).Copy

Er bak inde på noget og i givet fald hvordan skl den endelige kode så være?
Avatar billede kabbak Professor
24. november 2004 - 22:51 #5
hvilken version af excel har du ?
Avatar billede kabbak Professor
24. november 2004 - 22:51 #6
det virker fint i 2000 og 2003
Avatar billede sjogren Novice
24. november 2004 - 22:56 #7
Kode stopper desværre. Har det betydning at hvert af de ark der skal kopieres værdier fra indeholder hver sin pivottabel? - derfor ønsket om copy-paste special-value og formats
Avatar billede sjogren Novice
24. november 2004 - 22:58 #8
Hov - undskyld jeg er desværre lidt langsom på tasterne - jeg har Excel 2000
Avatar billede bak Seniormester
24. november 2004 - 22:59 #9
jeps min fejl, tænkte ikke lige på pivottabeller
sådan
Public Sub Lav_filer()
sti = "C:\" ' ret til din sti
  For Each ws In Worksheets
If ws.Name <> "Forside" And ws.Name <> "Bagside" Then
' skift selv navnet på siderne der ikke skal med
      Sheets(ws.Name).Copy
      ActiveSheet.UsedRange.Copy
      ActiveSheet.PasteSpecial Paste:=xlPasteValues
      navn = ws.Name & Date  ' filen får arknavnet og dags dato, ret selv til
      ActiveWorkbook.SaveAs Filename:= _
        sti & navn & ".xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    ActiveWindow.Close
 
  End If
Next
End Sub
Avatar billede sjogren Novice
24. november 2004 - 23:07 #10
Mærkeligt - Koden giver stadigvæk samme run-time error: Method 'Copy' of Object '_Worksheet' failed og makroen standser og gul-markerer linien: Sheets(ws.Name).Copy

Skal jeg gøre nogle References?
Avatar billede bak Seniormester
24. november 2004 - 23:12 #11
prøv lige at erstattte Sheets(ws.Name).Copy med
ws.copy
Avatar billede sjogren Novice
24. november 2004 - 23:18 #12
Så kommer der en ny Run-time error: 1004 Application-defined or object-defined error og kodelinen [ActiveSheet.PasteSpecial Paste:=xlPasteValues]markeres!
Avatar billede bak Seniormester
24. november 2004 - 23:19 #13
erstat med  ActiveSheet.UsedRange.PasteSpecial Paste:=xlPasteValues
Avatar billede bak Seniormester
24. november 2004 - 23:20 #14
og nu skal det fungere :-)
Avatar billede sjogren Novice
24. november 2004 - 23:27 #15
bak - du er en rigtig 'skrapsak' - det spiller herligt!

Gi'r jeg dig point ved at trykke på 'svar'?
Avatar billede bak Seniormester
24. november 2004 - 23:29 #16
Nej, det er kabbak, der skal have points, for det er hans kode der er brugt.
Jeg kom bare til at blande mig, og måtte så redde det i land igen :-)
Avatar billede bak Seniormester
24. november 2004 - 23:30 #17
Og point kan du først give når kabbak har svaret...
Avatar billede kabbak Professor
25. november 2004 - 17:23 #18
Jeg synes nu også at bak skal ha´, han var hurtig til at finde ud af den sidste linie, jeg skulle ihvertfald bruge længere tid, og så havde spørgsmålet nok ikke været løst endnu.;-))
Avatar billede sjogren Novice
26. november 2004 - 13:12 #19
Hej kabbak

Nu da bak er enig i at det er din kode, så følger hermed points - tak til jer begge :)
Avatar billede kabbak Professor
26. november 2004 - 15:30 #20
tak for point ;-))
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

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