Excel - makro rivien ja sarakkeiden kopioimiseksi

Ongelma

Työskentelen makrolla, jos haluat kopioida yhdestä työkirjasta (arkki) ja liittää toiseen työkirjaan (arkki)

Office 2007 ja Windows XP

Ensimmäisessä työkirjassa on kaikki tiedot, jotka ovat vaatimusten mukaisia. suodatetaan. Miten kerrotaan makroissa kopioimalla tulostietoja? Nämä tulosrekisterit muuttuvat aina.

Tallennan makroja näillä vaiheilla:

  • 1. avaa lähdön.xlsx (kohdetietokirja)
  • 2. ctrl + A (kaikkien jo olemassa olevien tietojen valitseminen) ja tyhjentäminen (kaikki)
  • 3. lähteen työkirja (input.xlsm) kopioi tulosrekisterit
  • 4. Liitä erityinen työkirjaan
  • 5. Leikkaa työkirja ja lopeta makron tallennus

Loput makroista toimivat hyvin, ongelmana on, miten voit määrittää dynaamisen tulosrekisterin.

Alla on makro, mutta sen automaattinen generoitu koodi:

 Sub Macro1 () 'Macro21 Macro' 'Workbooks.Open-tiedostonimi: = _ "O: dataorderrefList-output.xltx" _, muokattava: = True Selection.CurrentRegion.Valitse Selection.Clear Range ("A1"). "ReferenceList.xlsm") .Valitse.Käynnistysalue.Valitse valinta.Kopioi Windows ("refList-output.xltx"). Aktivoi valinta.LiitäErikoisliima: = xlPasteColumnWidths, Käyttö: = xlNone, _ SkipBlanks: = False, Transponoi: = False Selection.PasteSpecial Paste: = xlPasteFormats, Käyttö: = xlNone, _ SkipBlanks: = False, Transpose: = False Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transponoi: = False Range (" Valitse Application.CutCopyMode = False ActiveWorkbook.Save Windows ("ReferenceList.xlsm") Aktivoi alue ("Table_Query_from_MS_Access_Database [#Headers, [Order No]]"). 

Se toimii hyvin, mutta minun on tehtävä valinta myös tulosrekisterien ja muun muotoilun perusteella.

Ratkaisu

Olen kokeillut ehdotustani. kun valitset suodatetun datan, valikoima sisältää myös piilotetut solut (suodatuksen takia piilotetut), mutta sinun on käytettävä "erikoissoluja" -ominaisuutta ehdotukseni mukaan. voitko muuttaa sitä.

Lisäksi on olemassa ILMAISUUS ilman aktivointia eri ikkunoita tai valitsemalla eri alueita.

Minulla on vaihtoehto vaihtoehto makroosi erityisosille

 ThisWorkbook.Worksheets ("sheet1") UsedRange.SpecialCells (xlCellTypeVisible) .Kopioita työkirjoja ("book4"). Työarkit ("arkki1"). Alue ("A1") LiitäSpaste: = xlPasteValues, Liitä: = xlPasteColumnWidths, Paste : = xlPasteFormats _, Liitä: = xlPasteColumnWidths 

Jos nämä kaksi kirjaa on tallennettuja kirjoja, sinun pitäisi käyttää "book4.xls" - tai "book4.xlsm" "-työkirjaa, joka tarkoittaa työkirjan moduulia, jossa makro on pysäköity, jos yrität muokata makroa.

Huomautus

Kiitos venkat1926 tästä vinkistä foorumissa.

Edellinen Artikkeli Seuraava Artikkeli

Top Vinkkejä