14. marts 2008 - 23:30Der 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
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?
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.
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
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
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?
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
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)
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.
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.
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.