excel makro

Software d.  22. juni. 2011, skrevet af p0Pe
Vist: 1302 gange.

p0Pe
 
Elitebruger
Tilføjet:
22-06-2011 15:05:59
Svar/Indlæg:
3100/53
Hey! Håber lidt på at der sidder en ultra excel haj derude.

Står med følgende problem.
Har noget data i ét ark, som jeg gerne ved hjælp af en makro vil kunne kopiere over i en liste i et andet dokument.

Det foregår som følgende:

Dokument 1 åbnes, heri er der noget info som jeg gerne vil have smidt over i et andet dokument. Det drejer sig om 4 "bokse" med information.

Dokument 2 ser jeg helst at jeg ikke behøver at åbne hver gang.
Dokument 2 består af 4 ark. Optimalt vil jeg gerne have 4 forskellige makroer til dokument 1, da dokument 1 kan være hvilken som helst at de 4 typer.

Dokument 2 er en liste som skal bruges til statestikker, så der skal ikke overskrives noget.

Hvis ikke det er beskrevet godt nok, så bare sig til! :)

Håber virkeligt der er nogle der kan hjælpe:D
p0Pe
 
Elitebruger
Tilføjet:
22-06-2011 15:15:11
Svar/Indlæg:
3100/53
lige for god ordens skyld, så er det excel 2003 der arbejdes med:)


ICE-Cool
 
Elitebruger
Tilføjet:
22-06-2011 17:35:42
Svar/Indlæg:
3799/43
Hvis at du har lidt forstand på programmering så er der lidt at læse om det her http://www.sitestory.dk/excel_...
og
http://www.sitestory.dk/excel_...

Det handler om en del af det som du har brug for.
For jeg forstår din beskrivelse ellers også er jeg bare træt.


@ngler
 
Redaktør
Tilføjet:
22-06-2011 18:48:44
Svar/Indlæg:
4033/364
forstår ikke helt hvad du mener med "bokse" - og det virker meget meget mystisk at lave det på den måde..

anyway - her er noget som tager en værdi i en celle i et ark og kopierer den til den næste tomme i et andet ark


Sub HWT()
'lavet til http://hwt.dk/forumthread.aspx... af @ngler , uden ansvar!
'hvis det ikke virker eller andet, så kunne du bare lave det selv ;)
Dim tomCelle_dok2 As String
Dim filsti_dok2 As String

On Error GoTo fejl


filsti_dok2 = "C:\dok2.xls" 'der hvor din fil er

Sheets("ark1").Select 'vælger fanen
Range("a2").Select 'der hvor din værdi er
Selection.Copy

'åbner filen
Workbooks.Open Filename:=filsti_dok2
Sheets("Ark2").Select 'arket du leder i
tomCelle_dok2 = tomcelle("a1") 'cellen du ønsker at finde
MsgBox "Den sidste tomme celle er " & tomCelle_dok2 'kan remmes
Range(tomCelle_dok2).Select 'den tomme celle
ActiveSheet.Paste 'sætter værdien ind
Application.CutCopyMode = False
ActiveWorkbook.Save 'gemmer
ActiveWindow.Close 'lukker
Exit Sub 'så vi ikke går til fejl

fejl:
MsgBox "noget gik galt"

End Sub


Function tomcelle(start As String) As String
Dim x As Long
Dim sidsteCelle As String
On Error GoTo fejl
For x = 0 To 65536 'excel 2007 og nyere har flere celler
If Range(start).Offset(x, 0).Value = "" Then 'tom celle
sidsteCelle = Range(start).Offset(x, 0).Address 'får cellens adresse
GoTo fundet
End If
Next
fundet:
tomcelle = sidsteCelle
Exit Function 'så smutter vi videre
fejl:
MsgBox "noget gik galt "
End Function



p0Pe
 
Elitebruger
Tilføjet:
22-06-2011 19:28:06
Svar/Indlæg:
3100/53
Bokse er celler:D Kunne ikke helt huske ordet lol!

#3 tak, ser lige om jeg kan gennemskue det heh


titti
 
Overclocker
Tilføjet:
22-06-2011 19:51:45
Svar/Indlæg:
189/9
Sådan som jeg forstår det du vil, er bare at optage 4 makroer med de ønskede funktioner og der efter afspille dem.


@ngler
 
Redaktør
Tilføjet:
22-06-2011 20:15:52
Svar/Indlæg:
4033/364
#5
Det er altid en god ide at optage en makro for at se koden, selvom det ofte giver masser af spildkode. Dog kan fx det at finde en Tom celle ikke så nemt uden at lave koden fra bunden..


titti
 
Overclocker
Tilføjet:
22-06-2011 20:30:54
Svar/Indlæg:
189/9
Jo det kan være rigtig, og det kan også godt være jeg misforstår det.
Men sådan som jeg læser det vil han kopier 4 faste celler fra regneark (1) ark 1, til regneark (2) ark 1, 2, 3, eller 4.
Og så det det lige ud af landevejen, med indspil makro funktionen.

Og spildkode er da ligegyldig i det sammenhæng.


Svaret blev redigeret 2 gange, sidst af titti d. 22-06-2011 20:39:55.


ICE-Cool
 
Elitebruger
Tilføjet:
22-06-2011 20:43:46
Svar/Indlæg:
3799/43
#7 Han skal jo ikke overskrive den gamle data som han ellers kommer til med en makro. Men der imod udfylde en ny celle med ny data, sådan at den gamle data stadigvæk er tilgængelig.


titti
 
Overclocker
Tilføjet:
22-06-2011 20:49:18
Svar/Indlæg:
189/9
#8
Ja men det gøres med at indsætte i række 1, så rykker de gamle celler bare ned.


@ngler
 
Redaktør
Tilføjet:
22-06-2011 23:16:57
Svar/Indlæg:
4033/364
#9

God pointe - tingene behøver ikke at blive alt for kompliceret... vil dog sige hvis man skal kode meget i vba, ISÆR med formatering og referencer er makro-optageren ikke specielt god..

Lavet via optageren:

Sub Makro2()
'
Range("A3").Select 'cellen der skal kopieres over
Application.CutCopyMode = False
Selection.Copy
Workbooks.Open Filename:= _
"C:\ark2.xls" 'ark2
Range("A1").Select 'vælge første celle
Selection.Insert Shift:=xlDown 'sætter ind + rykker cellerne nedad
Application.CutCopyMode = False 'overflødig kode
ActiveWorkbook.Save 'gemmer
ActiveWorkbook.Close 'lukker
End Sub

hvis det skulle laves lidt mere prof bør man nok lave tjek på om filen er åben - da den ellers vil fejle..


#11
p0Pe
 
Elitebruger
Tilføjet:
23-06-2011 09:32:16
Svar/Indlæg:
3100/53
Tusinde tak for svarene alle!

Tror jeg har nogenlunde fået det til at virke. Det eneste der irretere mig, er at den ikke vil åbne dokument 2 af sig selv. Den giver bare en error 1004

"method of 'open' of object 'workbooks' failed"

Det hele virker dog fint hvis jeg selv starter op med at åbne dokument to, men det er da ikke en mulighed da vi er to der skal arbejde i det, så den kan ikke bare stå tændt på begge computere på samme tid.


#12
p0Pe
 
Elitebruger
Tilføjet:
23-06-2011 09:50:13
Svar/Indlæg:
3100/53
Fixet!

Der skulle bare lige en timer på, da serveren ikke kunne nå at reagere! :D


@ngler
 
Redaktør
Tilføjet:
23-06-2011 11:54:23
Svar/Indlæg:
4033/364
Hvis I er to, så er det nok en fordel at have data i en database...