modesty Skrevet 31. juli 2008 Del Skrevet 31. juli 2008 (endret) Heisann! Er ganske så nybegynner innenfor VB, men det begynner å komme seg Men akkurat nå står jeg fast.. Jeg skal slå sammen flere regneark som kommer i en Excelfil. Arkene heter forskjellige ting fra fil til fil, men innholdet er lik i alle ( men kan være forskjellig mende data i hvert ark) . Jeg skal fjerne de 17 første linjene i hvert ark - og så slå de sammen i et felles ark- slik at jeg kan gjøre en felles "redigering" der ( i et program jeg har skrevet *stolt* ) (men som bare virker på et ark- -foreløpig ). Noen som har noen tips for å få meg i gang ? Modesty Endret 31. juli 2008 av modesty Lenke til kommentar
kterjesen Skrevet 31. juli 2008 Del Skrevet 31. juli 2008 Heisann! Er ganske så nybegynner innenfor VB, men det begynner å komme seg Men akkurat nå står jeg fast.. Jeg skal slå sammen flere regneark som kommer i en Excelfil. Arkene heter forskjellige ting fra fil til fil, men innholdet er lik i alle ( men kan være forskjellig mende data i hvert ark) . Jeg skal fjerne de 17 første linjene i hvert ark - og så slå de sammen i et felles ark- slik at jeg kan gjøre en felles "redigering" der ( i et program jeg har skrevet *stolt* ) (men som bare virker på et ark- -foreløpig ). Noen som har noen tips for å få meg i gang ? Modesty Skjønte ikke helt spørsmålet ditt, men etter det jeg kan forstå av spørsmålet er vel "copy-paste" det beste alternativet.....?!?!? Lenke til kommentar
modesty Skrevet 31. juli 2008 Forfatter Del Skrevet 31. juli 2008 HEi, skal prøve å forklare litt bedre Har en regnebok , med tre ark. Alle arkene har lik utforming ( noen overskriftsrader m.m. som skal fjernes). Innholdet i arkene skal klippes ut fra vært ark og settes inn i ark 4. Problemet er at arkene heter forskjellige ting fra gang til gang. Vill gjerne skrevet noe som gjør følgende : 1. Setter inn et nytt ark. 2. Kopeier innhold i ark1 ( fra og med rad 18 ) og kopierer dette inn i det nye arket. 3. Kopiere innhold i ark2 ( fra og med rad 18) og kopierer det inn under det som er i det nye arket ( (NumberOfRows+1) 4. Osv for hvert ark som er i regneboken ( kan være mange) Problemet er at eg ikke forstår hvordan eg skal skrive koden for at programmet skal gå gjennom alle ark i regenboken og gjøre dette... M. Lenke til kommentar
Harald Staff Skrevet 31. juli 2008 Del Skrevet 31. juli 2008 Hvis du befinner deg i Excel VBA og ikke ett eller annet obskurt sted med eller uten dott: Sub test() Dim WS As Worksheet Dim WB As Workbook Set WB = ActiveWorkbook For Each WS In WB.Worksheets MsgBox WS.Name Next End Sub HTH. Beste hilsen Harald Lenke til kommentar
ilpostino Skrevet 31. juli 2008 Del Skrevet 31. juli 2008 kanskje teit spm men hva gjør egentlig den for-løkken? på meg virker det ikke som den kopierer... Lenke til kommentar
modesty Skrevet 1. august 2008 Forfatter Del Skrevet 1. august 2008 kanskje teit spm men hva gjør egentlig den for-løkken? på meg virker det ikke som den kopierer... Hei! Nei, den kopierer ikke innholdet i arkene i filen. Jeg ønsker jo at den skal "gå" gjennom hvert ark i en fil og hente innholdet der og så kopiere det inn i samme ark. Men man er da litt på vei nå ? Siden det vil være forskjellige bnavn på både ark og filer, samt lengde på innholdet, kan man vel ikek ta opp en makro for å få koden til dette ? ( innbillermeg at man må opp på et mer avansert nivå enn så ..) MOoesty Lenke til kommentar
Harald Staff Skrevet 1. august 2008 Del Skrevet 1. august 2008 Hei dere For-løkken er svaret på spørsmålet "hvordan eg skal skrive koden for at programmet skal gå gjennom alle ark i regenboken". Objekt-tilordningen er viktig for adresseringen og for å slippe all verdens Select og Activate og annet griseri. Så kan forhåpentligvis OP bytte ut messageboxen med koden som "bare virker på et ark". Jeg må ha mye mer dedtaljer om både filene og kunnskapsnivået for en lim-og-kjør-løsning Beste hilsen Harald Lenke til kommentar
modesty Skrevet 1. august 2008 Forfatter Del Skrevet 1. august 2008 Hei Vet ikke kordan eg skal forklare kunnskapsnivået mitt.. - men under er ihvertfall koden for å slå sammen selve Filene (ofte flere). Og nivået mitt er tydeligvis ikke høyt nok til å klare å skrive det samme for selve arkene. Men regner med det vil være noe av det samme som skal kjøres i de enkelte arkene, bare at man caller på arkene i stedet ? det vanskelige er hvor det skal inn, og hvordan;) Dim i As Variant For i = 0 To Me.ListBox1.ListCount - 1 varFile = Me.ListBox1.List(i) Dim wb1 As New Workbook Application.Workbooks.Open varFile Set wb1 = ActiveWorkbook TempFile = ActiveWorkbook.FullName TempFileName = ActiveWorkbook.Name Sheets(1).Activate Range("a1").Select Dim w As Worksheet Set w = Worksheets(1) w.AutoFilterMode = False NumberOfRows = NextEmptyRow - 1 'Finne overskriftsrad mellom 1 og 40...: Dim a As Integer Dim s As String For a = 1 To 40 If Range("A" & a).FormulaR1C1 = "DATO" Then s = Range("A" & a).Address End If Next a Range(s).EntireRow.Delete Range(s & ":O" & NumberOfRows).Select Selection.Copy WorkbookOne.Activate StartPos = NextEmptyRow Range("a" & StartPos).Select ActiveSheet.Paste Dim s2 As String s2 = "" Dim d As New DataObject d.SetText s2 d.PutInClipboard Range("I" & StartPos & ":I" & NextEmptyRow - 1).FormulaR1C1 = Left(TempFileName, Len(TempFileName) - 4) 'Application.Workbooks.Open TempFile 'Range("a1").Activate wb1.Close False Next i MOdesty Lenke til kommentar
Harald Staff Skrevet 1. august 2008 Del Skrevet 1. august 2008 Se om dette får deg i gang. Jeg har ikke testkjørt, har ikke tid til å sette opp demofiler og listbokser: Sub test() Dim varfile As String Dim i As Long, a As Long Dim WorkbookOne As Workbook Dim Wb1 As Workbook Dim W As Worksheet Set WorkbookOne = ThisWorkbook 'eller ? For i = 0 To Me.ListBox1.ListCount - 1 varfile = Me.ListBox1.List(i) Set Wb1 = Workbooks.Open(varfile) For Each W In Wb1.Worksheets W.AutoFilterMode = False For a = 1 To 40 If W.Range("A" & a).FormulaR1C1 = "DATO" Then s = W.Range("A" & a).Address End If Next a 'finn startpos og numberofrows her, så W.Range(s).EntireRow.Delete W.Range(s & ":O" & NumberOfRows).Copy Destination:=WorkbookOne.Sheets(1).Range("A" & startpos) Next W Wb1.Close False Set Wb1 = Nothing Next i End Sub Legg merke til direkte adressering og fravære av select og activate. Se http://www.dailydoseofexcel.com/archives/2...t-and-activate/ HTH. Beste hilsen Harald Lenke til kommentar
HDSoftware Skrevet 1. august 2008 Del Skrevet 1. august 2008 Hei Modesty. Det er en stor fordel for oss andre om du bruker CODE taggen for å legge koden inne i en code boks. Dette er mye mere leselig Ikke bare fordi det er inne i en boks Men også fordi at INNRYKK virker Er du ikke enig? Tenkte nok det;-) Bare å skrive CODE inne i [ og ] Avslutt med /CODE inne i klammene og du er i mål. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå