Avatar billede hjald8 Nybegynder
15. oktober 2004 - 21:31 Der er 13 kommentarer og
1 løsning

Kopier celler til anden Excelfil via makro

Jeg har en skabelon til produktion af fakturaer. Der gemmes en fil (Excel-projektmappe) for hver faktura.

Jeg kunne godt tænke mig, at der fra hver enkelt faktura flyttes værdien af bestemte celler (kundenr, fakturanr, dato og beløb)til den næste ledige række i en bogføringsfil (én Excel-projektmappe). Denne flytning kunne ske ved aktivering af en knap.

Bogføringsfilen importeres ved faste intervaller til økonomisystemet.

Jeg har forsøgt forskellige makroer og kodninger. Håber at der er nogen, der kan hjælpe. Se følgende kode - som ikke virker. Det med at vælge næste ledige række fungere vist ikke, ligeledes heller ikke gem-funktionen:

Sub Gem()
    Sheets("Data").Select
    Range("A1:D1").Select
    Selection.Copy
    Workbooks.Open Filename:="C:\bogføring.xls"
    ActiveSheet.Paste
    Sheets("Bogføring").Select
    Rw = Range("A999").End(xlUp).Row + 1
    Range("A" & Rw).PasteColumns("A:D").EntireColumn.AutoFit
    ActiveWorkbook.Save
    ActiveWindow.Close
    Application.CutCopyMode = False
    Sheets("Nota").Select
    Range("B5").Select
End Sub

Håber at nogen kan hjælpe!!

På forhånd tak.
(tidligere spurgt på dette uden held. Har givetvis ikke formuleret det godt nok)
Avatar billede the_stoner_forever Nybegynder
15. oktober 2004 - 21:38 #1
kan du ikke bare kopire hvad du skal have kopiret også flytte det over til det andet sted du skal bruge det???
Avatar billede hjald8 Nybegynder
15. oktober 2004 - 22:11 #2
Dette er en proces der skal laves gentagne gange af forskellige brugere. Hvis det var én gang om dagen med én bruger - så har du ret. Dette er ikke tilfældet.

Derudover er det særdeles relevant om processen kan løses via en makro, og hvorledes den i givet fald kan løses.
Avatar billede jkrons Professor
16. oktober 2004 - 00:36 #3
Dette burde kunnegøre det:

Sub Bogfør()

    Sheets("Data").Select
    Range("a1:d1").Copy
   
    Workbooks.Open Filename:="C:\bogføring.xls"
    Sheets("bogføring").Select
   
    If IsEmpty(Range("a1")) Then
        Range("A999").End(xlUp).Activate
    Else
        Range("A999").End(xlUp).Offset(1, 0).Activate
    End If
   
    ActiveSheet.Paste
    ActiveWorkbook.Save
    ActiveWorkbook.Close
   
End Sub
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 08:10 #4
>jkrons
Det virker perfekt. Tusind tak.
Jeg blev opmærksom på at cellen "A1" ikke kunne være en dato.
Det kan dog løses ved at placere dato i én af de andre celler.
Brugeren kan også se, at Bogføringsfilen bliver åbnet og lukket (kan man gøre dette uden 'visning'). Ikke, at det er et problem.
Vil du ligge et svar;o)
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 09:14 #5
Efter at have lagt det ind i en mere kompliceret fil får jeg fejlen "Runtime error 1004" med teksten "Metoden Activate for klassen Range mislykkes". Jeg har forsøgt at sikre at der er ens formatering i celler fra den fil til den anden, dog uden held. (A1=Kundenr, B1=Dato, C1=Faktnr; D1=Beløb)
Avatar billede jkrons Professor
16. oktober 2004 - 10:25 #6
Hvilken linie er det, der giver fejlen?

Prøv evt. at rette 999 til noget større.
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 10:46 #7
Rettet 999 til 9999. Det er linie 2 af nedennævnte der giver fejl:

if IsEmpty(Range("A1")) Then
  Range("A9999").End(xlUp).Activate
Avatar billede jkrons Professor
16. oktober 2004 - 10:59 #8
Hvad har du stående i A1?
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 11:04 #9
Ingenting. Efter problemerne opstod har jeg opsat et nyt rent ark i 'til-filen' som 'modtager-ark'. Dette har dog ikke hjulpet.

I 'fra-filen' står der en 4-cifret kundenr. Cellen indeholder ikke formler.
Avatar billede jkrons Professor
16. oktober 2004 - 11:06 #10
Prøv evt. at skrive noget i cellen, så den ikke er tom. Giver det så problemer i linien i ELSE sætningen?
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 11:14 #11
Desværre når jeg ikke til ElSE-sætningen. Den stopper fortsat ved IF sætningen - ved Range....
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 13:09 #12
>jkrons
Jeg har fundet ud af, at det er fordi jeg gemmer makroen i en comandoknap. Derved starter den med 'Private Sub....'. Hvis den afvikles som 'Sub ...' så ser det ud som om det virker. Jeg kikker på det senere i dag. Foreløbig tak.
Avatar billede hjald8 Nybegynder
16. oktober 2004 - 15:37 #13
Den er ok nu. Efter fjernelse af 'Private..' så virker det.
Ærgerligt at jeg ikke fandt ud af, at få den til at fungere i en kommandoknap.
Det lykkes heller ikke for mig, at kombinere 'ActiveSheet.Paste' med 'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False'. Det må komme.
>Jkrons. Vil du ligge et svar - så spørgsmålet kan afsluttes.
Og Tak.
Avatar billede jkrons Professor
16. oktober 2004 - 15:50 #14
Jeg lægger et svar :-)

Hvis du lægger den i en knap, tror jeg du måske skal erstatte ActiveWorkbook med ThisWorkbook, men jeg har ikke afprøvet det.
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