01. februar 2005 - 11:37Der er
11 kommentarer og 1 løsning
VBA: tæl kun "ikke tomme" celler i et område og kopier dem
Jeg har etworddokument der skal kigge ind i en excel fil og paste flere rækker med udfyldte celler. Udfordringen er her at området hvor data står fra case til case, har forskellige antal rækker/linier. Vedlagte makro, kan håndtere mit behov, når data er er statisk i sin størrelse, d.v.s. har ens antal rækker hver i hver case.
Sub hent ()
Dim xlApp As Object
Set xlApp = CreateObject("excel.application") xlApp.Visible = True
xlApp.workbooks.Open FileName:="C:\udtræk til statusrapport.xls"
Selection.GoTo What:=wdGoToBookmark, Name:="tilvalggrafisk" With ActiveDocument.Bookmarks .DefaultSorting = wdSortByName .ShowHidden = False End With Selection.PasteAndFormat (wdFormatPlainText) xlApp.Quit Set xlApp = Nothing End Sub
Det vil altid være således at 1.position i arket vil være j 98:k98 men jeg ved ikke hvor mange linier/rækker der udfyldes. Jeg vil kunne anføre et maks område hvor jeg ved at det ikke kommer ud over eks. J98:k110. Men problemet er så at det vil være forskelligt fra sag til sag hvor mange linier/rækker, og der med celler der er udfyldt og hvor mange der er tomme, jeg skal kun have pasted de ikke tommer celler i området. det vil sige at de tommer ikke skal pasted. Det må være noget med en if funktion, kombineret med en række tæller, der måler er cellerne i række tom eller ikke tom.
Er det muligt at lave et tillæg til vedlagte makro, der kan håndtere denne udfordring.
Med venlig hilsen
HHB endelig er der nogen der kan hjælpe mig med at tildele point til korrekte svar??
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Kære oyejo Tak for dit input jeg har prøvet at indsætte det i min makro der vedlægges, og der er noget der misser. fejl boks siger "object reguired" og runtime error 424. Har du en god ide.
MVH HHB Sub hent5c1()
Dim xlApp As Object Dim Sisterad As Object Set xlApp = CreateObject("excel.application") xlApp.Visible = True
Hei hbl, jeg er ikke så god til dette. men prøv å bytte ut. Dim Sisterad As Object med Dim Sisterad As long Det er en varabel som kun skal inneholde et heltall
Hvis du bytter ut denne linje .. xlApp.Range("j98:k" & Sisterad).Select med .. xlApp.Range("j98:k104").Select for å kontrollere at det fungerer på gamlemåten for hvis programmet kjører når du ikke bruker variabelen til å bestemme range. da vet vi at det er noe galt med variabelen mvh oyejo
Kære oyejo Jeg har prøvet at bytte rundt på de 2 linier, som du foreslår, men den går fortsat død, netop når den skal læse "dxlApp.Range("j98:k" & Sisterad).Select eller xlApp.Range("j98:k104").Select" meddeler run time error 424 "object reguired"" Ja det driller lidt
Selection.GoTo What:=wdGoToBookmark, Name:="tilvalggrafisk" With ActiveDocument.Bookmarks .DefaultSorting = wdSortByName .ShowHidden = False End With Selection.PasteAndFormat (wdFormatPlainText) xlApp.Quit Set xlApp = Nothing End Sub
Hvis overstående fungerer bør du prøve denne: Husk at i denne linjen... Sisterad = ActiveSheet.Range("J2000").End(xlUp).Row ..må radnummeret være så høyt at du er sikker på at cellen er under siste fylte. "J2000" er greit å bruke hvis du ikke har flere rader
Sub hent ()
Dim xlApp As Object Dim SisteRad As Long
Set xlApp = CreateObject("excel.application") xlApp.Visible = True
xlApp.workbooks.Open FileName:="C:\udtræk til statusrapport.xls"
Selection.GoTo What:=wdGoToBookmark, Name:="tilvalggrafisk" With ActiveDocument.Bookmarks .DefaultSorting = wdSortByName .ShowHidden = False End With Selection.PasteAndFormat (wdFormatPlainText) xlApp.Quit Set xlApp = Nothing End Sub
Kære Oyejo Tak for dine indlæg. Jeg har testet makroen fra dig kl. 8.12.19 - den virker Jeg har testet makroen fra dig kl. 8.17 - den virker ikke. Jeg får den samme besked som de øvrige gange "object reguired". Lige for god ordens skyld skal jeg gentage at mit afsæt er word, og jeg kigger ned i et excel ark. Måske virker din kode hvis det kører rent i excel, jeg ved ikke om det gøre nogen forskel. Men har du lyst og mod til fortsat at prøve, er jeg meget taknemmelig.
Hei igjen HHB Beklager at jeg ikke klarte å hjelpe deg. Det kan godt hende at det ikke virker fordi du prøver fra word. Jeg har ikke testet hele din kode. Men jeg benytter : Sisterad = ActiveSheet.Range("J2000").End(xlUp).Row i excel der fungerer denne koden utmerket til å finne siste celle med innhold. Jeg har ikke så mye greie på objekter, så jeg kan nok ikke hjelpe deg. Trenger hjelp selv:-) LYKKE TIL mvh oyejo
Kanskje du kan prøve samme spørsmål i en annen spørsmålsgruppe? (word eller VBA hvis den finnes)
Synes godt om
Ny brugerNybegynder
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.