Avatar billede covesen Praktikant
14. marts 2008 - 23:30 Der er 10 kommentarer og
1 løsning

Kopiere ark til anden workbook

Hej
jeg har et data indasamlingsark "dataindtastning" hvor jeg vedligeholder foreningens udlejnings time priser osv.

Dette ark ligger på pcéns skrivebord, så alle kan redigere det.
Kan jeg lave en gem knap (macro) i arket så det kopieres og indsættes i woorkbookén ark 4, (woorkbook´en er skrivebeskyttet)

Woorkbook´en ligger også på skrivebordet.Udlejning/priser.xml

mvh.
chris
Avatar billede word-hajen Nybegynder
15. marts 2008 - 10:17 #1
Prøver lige at skitsere.

Du har 2 Excel-filer (eller hvad - for du skriver priser.xml ovenfor). Når du klikker på en knap, vil du have kopieret det aktive ark over til Excel-fil nr. 2. Hvis du har kopieret det over tidligere, skal den nye "kopiering" slette det tidligere kopierede ark.

Filerne er placeret i samme folder.

Korrekt forstået?

Hvorfor skal det kopierede ark være ark 4 i fil nr. 2?
Er fil nr. 2 beskyttet med password? Og i så fald, kender du det password? Er passwordet en ark-beskyttelse eller er det for at åbne filen?
Avatar billede covesen Praktikant
15. marts 2008 - 11:17 #2
Jeg har 2 excelfiler
Når jeg klikker på en knap i data filen skal dette ark kopieres til det andet ark
selve data filen ligger på skrivebordet, mens pris filen ligger i "skrivebord/udlejning"

Det kopierede ark behøves ikke være ark 4 i fil 2, det skal bare være sådan at det slettes når jeg overfører et nyt opdateret ark, fil 2 er beskyttet med password og jeg kender passwordet. passwordet er en ark beskyttelse.

mvh
chris
Avatar billede word-hajen Nybegynder
15. marts 2008 - 20:32 #3
Ret filnavn og password til. Sæt en reference til Microsoft Scripting Runtime.

****************
Public Sub KopierArkTilAndenFil()
    Dim objFS As Scripting.FileSystemObject
    Dim objCopyToWB As Workbook
    Dim objWB As Workbook
    Dim objWS As Worksheet
    Dim objCopyToWS As Worksheet
    Dim strFileName As String
    Dim strSheet As String
   
    Set objFS = New Scripting.FileSystemObject
    Set objWB = ActiveWorkbook
    Set objWS = ActiveSheet
    strSheet = objWS.Name
   
    strFileName = objFS.BuildPath(objWB.Path, "Udlejning")
    strFileName = objFS.BuildPath(strFileName, "KopieretArk.xlsx")
   
    If objFS.FileExists(strFileName) Then
        Set objCopyToWB = Workbooks.Open(strFileName)
        objCopyToWB.Unprotect "test"
       
        On Error Resume Next
        Set objCopyToWS = objCopyToWB.Sheets(strSheet)
        On Error GoTo 0
        If Not objCopyToWS Is Nothing Then
            Application.DisplayAlerts = False
            objCopyToWS.Delete
            Application.DisplayAlerts = True
        End If
       
        Sheets(strSheet).Copy Before:=Workbooks("KopieretArk.xlsx").Sheets(1)
       
        objCopyToWB.Protect "test"
        objCopyToWB.Close True
    End If
   
    Set objFS = Nothing
    Set objWB = Nothing
    Set objWS = Nothing
    Set objCopyToWB = Nothing
    Set objCopyToWS = Nothing
End Sub
Avatar billede covesen Praktikant
15. marts 2008 - 22:59 #4
Hej

Skal dette sættes i et module?, hvor skal jeg sætte det ind? ( jeg ved det skal ind i det ark jeg vil kopiere, men ikke lige hvor det skal ligges i VBA.
hvad mener du med reference til microsoft script runtime?

mvh.
chris
Avatar billede word-hajen Nybegynder
16. marts 2008 - 08:44 #5
Ja, du kan fint oprette et modul i vba, hvor du så placerer koden.

Referencer sættes i vba ved at klikke på Tools-References. Find Microsoft Scripting Runtime i listen og kryds den af.
Avatar billede covesen Praktikant
19. marts 2008 - 21:45 #6
Hej

Jeg har oprettet en test workbook og fjernet den orginale.

jeg kan dog ikke få scriptet til at virke helt, det giver ingen errors, men der bliver ikke kopieret noget. Koden er indsat i et modul og der er oprettet en knap med tilknytning til modulet.
Har du oprettet en test? kan du sende den til mig?
min mail c.ovesen@mail.dk
Avatar billede covesen Praktikant
19. marts 2008 - 21:52 #7
Hej

jeg kommer til at tænke på om det er lettere at lave sådan at arket indsættes automatisk når man åbner priser.xlm, så skal personen der regigerer i dataindtastnings arket ikke huske at køre macroen (trykke på knappen)

Du kan bare sige til så højner vi pointene lidt
Avatar billede word-hajen Nybegynder
19. marts 2008 - 21:54 #8
Koden er nøjagtig magen til i min testversion som ovenfor. Så hvis du har kopieret koden ind i et modul, rettet password og filnavn, så burde det spille.

Har du prøvet at starte koden direkte i modulet og ikke via knappen? Prøv at gøre det og step dig vej igennem koden (giver nogle gange et bedre billede af, hvor det evt. går galt). Tjek specielt, at den fil, som skal åbnes, rent faktisk også eksisterer. Så hvis ikke koden går ind i if-strukturen, så eksisterer din fil ikke.
Avatar billede word-hajen Nybegynder
19. marts 2008 - 22:41 #9
Hvis du vil have det til at køre automatisk, kan du blot placere koden i f.eks. Workbook_BeforeClose-eventet eller Workbook_BeforeSave-eventet i filen med indtastningsarket.
Avatar billede covesen Praktikant
21. marts 2008 - 11:16 #10
alt virker mange tak
Avatar billede word-hajen Nybegynder
21. marts 2008 - 12:45 #11
Så kommer her et svar :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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