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.