Hej Frågan är ställd i fel forum, den ska ligga i Microsoft Office eller något i den stilen. Hej Du svarade inte riktigt på frågorna. Vi kallar "frånfilen" för fil1. Det är filen du kommer kopiera från som heter XXXX01.xls, osv. Hej Okej, det var bättre.VBA
Någon som kan Excel / VBA.
Jag skall med en knapptryckning kopiera in celler från en arbetsbok till en annan bok.
Vill helst kunna peka ut namn.xls samt bladets namn.
Skall plocka ut vissa celler ur ett blad i xls 1 och lagra dessa på bestämd plats i xls 2.
Allt skall ske med macros/VBA kod.
Någon som har någon ide eller vet någon sida på nätet?
Per ArneSv: VBA
Nåväl; det där är inte speciellt svårt, det ska inte vara några problem. Lite mer bakgrundsinfo hade definitivt kunnat vara bra; det kan finnas en bättre lösning än "kopiera in celler från annan arbetsbok".
Du måste dock strukturera upp programmet lite först, eftersom Excel-makron skiljer sig lite från "vanliga program".
1. Du har två filer; fil1 och fil2.
2. fil1 ska du kunna välja varje gång du kör makrot. Görs t.ex. med Application.FindFile.
3. fil2 då? Är det alltid samma eller ska du välja det varje gång också?
Om det är samma så kan det vara lämpligt att ha makrot i just fil2, men det beror helt och hållet på situationen. Berätta mer om vad som ska göras!
4. Okej, hur som helst har du nu två filer och makrot ska kopiera celler från ena till andra. Vilka celler ska det kopieras från, vilka celler ska det kopieras till?
Är det alltid fasta celler (B4 ska till C8, C3 ska till A2, osv.), eller ska det vara mer flexibelt (den understa cellen i kolumn B ska till A2, osv.)?Sv: VBA
Jag skall fånga info från en rapport och bearbeta denna.
Det är kanske lättare att kopiera in hela arbetsbladet till fil 2 och jobba vidare därifrån.
Jag får ta ställning till senare om filen jag kopierar ifrån skall vara stängd eller öppen.
Jag kan inte lägga in någon kod eller andra funktioner i filen jag skall läsa från.
Filen jag läser från byter namn varje månad xxxxx01.xls, xxxxx02.xls osv.
Cellerna skall vara fast varje månad.
Per ArneSv: VBA
OK?
Det finns mängder med sätt, men på något sätt får du upp den i Excel, och kan hålla tag i den i en variabel, t.ex.:
Dim wbReport As Workbook
Set wbReport = Workbooks("filnamn")
Det där får du ju naturligtvis lösa på lämpligt sätt
Sen har du "tillfilen", som vi kallar fil2. Är det alltid samma fil eller inte?
Om det alltid är samma fil så är det mest logiska att lägga makrot i fil2; de hör samman.
<b>>Det är kanske lättare att kopiera in hela arbetsbladet till fil 2 och jobba vidare därifrån.</b>
Beror på. I så fall måste bladet alltid ha samma namn, annars är det ingen större vinst.
<b>>Cellerna skall vara fast varje månad.</b>
Återigen: fil1 har fasta celler, men har fil2 också alltid samma celler?
Sen har jag nog inte riktigt förstått vad det är du frågar om... själva koden antar jag att du kan skriva...?Sv: VBA
Lite svar
<b>>Det är kanske lättare att kopiera in hela arbetsbladet till fil 2 och jobba vidare därifrån.</b>
Beror på. I så fall måste bladet alltid ha samma namn, annars är det ingen större vinst.
Svar: Bladet har alltid samma namn
<b>>Cellerna skall vara fast varje månad.</b>
Återigen: fil1 har fasta celler, men har fil2 också alltid samma celler?
Svar: Båda filerna skall ha fasta celler.
Sen har jag nog inte riktigt förstått vad det är du frågar om... själva koden antar jag att du kan skriva...?
Svar: Hjälp med själva Copy steget. Kopiera in enstaka celler eller ett område med celler.
Har hållt på ganska mycket med VB men ej med VBA.
Tack för att du tar dig tid!!
Per ArneSv: VBA
Hur du startar makrot väljer du själv; med en knapp på själva sheetet, med en egen knapp i Excels menyer, eller något annat. Jag hade valt att göra så här:
Gör ett makro i "fil 2", och sätt en knapp på sheetet (finns en toolbar som heter "control toolbox" på engelska). Knappens click-event startar då ditt makro.
Då har man alltid makrot tillgängligt i den fil som behöver det.
Kopieringen då... Vi säger att du alltid lägger in själva sheetet i din workbook, och att det alltid heter samma sak då, så kan du ändra det sen, det är inget svårt.
Jag antar att det första sheetet heter "Report", där du hämtar data ifrån. Inget konstigt med det.
Det andra kallar vi bara för "Sheet", eftersom jag inte vet vad det är för något.
Ditt makro börjar då med
Dim wsReport As Worksheet, wsSheet As Worksheet
Set wsReport = Worksheets("Report")
Set wsSheet = Worksheets("Sheet")
Så att du håller reda på vad du använder.
Sen finns det lite olika vägar att gå, men det lättaste är att skriva så här:
wsSheet.Range("A5")=wsReport.Range("C3")
...
Det kopierar bara värdet som står i C3 i Report till A5 i Sheet.
Så får du rada upp alla celler du vill kopiera.
Du kan även använda funktioner som Copy, Paste och PasteSpecial, om du t.ex. vill kopiera större områden
wsReport.Range ("C3:C5").Copy
wsSheet.Range("A5:A7").Paste
Istället för Range kan man använda "Cells", som tar raden som första argument och kolumnen som andra.
wsReport.Cells(5,3).Copy 'Rad 5, kolumn 3 = kolumn "C"
Så, nu har du nog fått lite mer kött på benen.