Just nu i M3-nätverket
Gå till innehåll

Kopiera celler till annan arbetsbok automatiskt


vimpan

Rekommendera Poster

Hej Jag gör mina kontantfakturor i ett excel-blad som jag själv pillat ihop.

Det jag nu skulle vilja är att kopiera ett antal celler från denna bok varje gång den sparas till en annan bok, öppen eller stängd spelar mindre roll.

Det är totalt 5 celler på olika platser som jag vill kunna placera i en annan bok på en rad för att sedan använda som underlag för kundutskick.

 

De funktioner som finns i bladet nu, som kanske kan påverka vad som kan göras, är en VBA-pryl som tickar upp fakturanumret vid varje ny öppning. Denna har jag hittat här på e-forum.

 

I övrigt är det bara lite summor och text

 

Som kanske märkt fattar jag föga själv så den som kommer med en idé lr lösning för jättegärna framföra den på femåringsnivå så jag faktiskt kan fatta hur jag ska göra.

 

Tack på förhand

Jimmy

 

Länk till kommentar
Dela på andra webbplatser

Enklaste tipset

 

1: På bladet/i boken med din faktura skapa en område där du samlar upp cellerna du vill kopiera till den andra boken som ser ut precis som målet i den andra boken.

2: Nästa steg är att skapa koden som kopierar.

Något i stil med

Sub MyCopy()
   Dim wbTarget As Workbook
   Dim blKill As Boolean
   Dim rnTarget As Range
   Dim rnSource As Range
   blKill = False
   'om boken öppen, använd
   On Error Resume Next
   Set wbTarget = Workbooks("målbok.xls")
   On Error GoTo 0
   'annars öppna boken
   If wbTarget Is Nothing Then
       Set wbTarget = Workbooks.Open(ThisWorkbook.Path & "\målbok.xls")
       blKill = True
   End If
   'hittta mål
   With wbTarget.Worksheets("Blad1")
       'antar tabell som börjar i A1
       Set rnTarget = .Cells(.Range("A1").CurrentRegion.Rows.Count + 1, 1)
   End With
   'källan känd
   Set rnSource = Blad1.Range("A1:E1")
   'kopierar enbart värden
   rnSource.Copy
   rnTarget.PasteSpecial xlPasteValues
   If blKill Then
       'stänger och sparar om vi var tvungna att öppna boken
       wbTarget.Close True
   End If
   'lite formalia
   Application.CutCopyMode = False
End Sub

lämpligen skapar du en knapp som du initierar överföringen av data med.

 

Ja, du måste givetvis uppdatera koden med

Målbokens namn

Kanske sökvägen till boken

Målbladets namn samt vilka celler som det ska kopieras till

Källområdet, blad och celler.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Ok, då återstår bara ett problem denna "knapp" hur gör man den?

Enklast vore om man kunde få in i koden att det ska överföras när den öppnas dvs efter att man har sparat, så funkar mitt räkneverk för fakturanr, som jag inte gjort själv.

 

Tack får hjälpen så här långt!

 

 

Länk till kommentar
Dela på andra webbplatser

Vill du ha det sker när fakturanumret räknas upp kan den säkerligen triggas samtidigt. Hur ser den koden ut? Om du vet hur den fungerar, bara att anropa koden ovan från den.

 

Annars, bara ta fram VBA-verktygen (kallade ActiveX av Excel ibland), skapa en knapp, dubbelklicka på knappen och anropa funktionen ovan.

 

Flyttar tråden till VBA, den passar bättre där.

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Ok,

Har ingen aning om hur den fungerar!

Den ser dock rätt simpel ut, kommer nedan;

 

Private Sub Workbook_Open()
Worksheets("Blad1").Range("G2"). _
Value = Worksheets("Blad1").Range("G2").Value + 1
End Sub

 

Tack så mkt!

 

Länk till kommentar
Dela på andra webbplatser

  • 3 months later...

Hej!

Har testat detta som står här men jag får en ruta som står Körfel nr '11'.: Division med noll. När jag kör felsök så kommer det gul färg runt om i denna

Set wbTarget = Workbooks.Open(ThisWorkbook.Path & Folders \ Desktop \ Nytt \ nytt.xls) (jag vet inte riktigt hur det ska stå här?

Hela formeln ser ut likadan som ovan.

 

 

MVH

Taffi

 

 

Länk till kommentar
Dela på andra webbplatser

Är det flera strängar du ska sätta ihop?

Set wbTarget = Workbooks.Open(ThisWorkbook.Path & "\Folders\Desktop\Nytt\ ytt.xls")

kanske?

Ett enkelt tips är att deklarerar en strängvariabel som du tilldelar hela sökvägen innan du försöker öppna en fil:

strPath = ThisWorkbook.Path & "\Folders\Desktop\Nytt\ ytt.xls"

den är sedan enkel att kontrollera att den blivit rätt, bara sätta en brytpunkt och läsa av variabelvärdet eller använda:

debug.Print strPath

Länk till kommentar
Dela på andra webbplatser

  • 6 years later...

Hej!

Vad innebär raden:

With wbTarget.Worksheets("Blad1")

'antar tabell som börjar i A1

Set rnTarget = .Cells(.Range("A1").CurrentRegion.Rows.Count + 1, 1)

Ent With

 

Det är det här med "CurrentRegion.Rows.Count +1, 1)" som känns spännande.

Det är ju ett sammanhängande område som ska stoppas in, men om jag redan har vissa celler upptagna, t.ex någon kolumn utanför mitt CurrentRegion.

Då verkar det som den första helt tomma raden blir vald. (kan ju vara 100 rader nedåt...

Jag vill ju kanske ha min start i "A1" men har något längre bort på samma rad i t.ex "U1"

´Hur gör man då?

Vad innebär +1, 1) som står på slutet i kodraden?

/Tommy

Länk till kommentar
Dela på andra webbplatser

With wbTarget.Worksheets("Blad1")

refererar till blad1 i arbetsboken som wbTarget refererar till

 

Set rnTarget = .Cells(.Range("A1").CurrentRegion.Rows.Count + 1, 1)

Röda punkterna, tar referensen från With-satsen

Currentregion, sammanhängande område från referensen innan, dvs cell A1.

+1 på slutet, en rad till.

,1 på slutet kolumn 1.

 

End With

Avslutar referensen på första raden.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...