Napaka časa izvajanja 1004: metoda PasteSpecial razreda Range ni uspela

  • Deliti To
Hugh West

Ena najpogostejših težav, s katerimi se srečujemo pri delu z kopiranje in lepljenje v VBA je napaka v času izvajanja 1004 : Metoda PasteSpecial razreda Range ni bila uspešna V tem članku vam bom z ustreznimi primeri in ilustracijami pokazal, kateri so možni razlogi za to napako in kako jih odpraviti.

Prenesi delovni zvezek za prakso

Prenesite ta delovni zvezek za vadbo, ki ga lahko uporabljate med branjem tega članka.

Posebna metoda PasteSpecial ni uspela.xlsm

PasteSpecial Metoda razreda Range je bila neuspešna: vzroki in rešitve

Brez odlašanja preidimo na glavno razpravo: kateri so možni razlogi za to napako in kako jih odpraviti.

Razlog 1: Dostop do metode PasteSpecial brez kopiranja česar koli

To je najpogostejši razlog za napako. PasteSpecial metodo, ne da bi karkoli kopirali.

Da bi ga jasno razumeli, preverite naslednje VBA koda.

⧭ Koda VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

V tem primeru smo uporabili PasteSpecial metoda VBA brez kopiranja česar koli. Tako bo Excel prikazal napaka med izvajanjem 1004 ko ga zaženete.

⧭ Rešitev:

Če želite rešiti to težavo, morate najprej kopirati območje celic in nato dostopati do PasteSpecial metoda.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Ko zaženete to kodo, se prilepijo formule območja B3: B5 aktivnega delovnega lista na izbrano območje.

Preberite več: Posebna metoda PasteSpecial razreda delovnega lista ni uspela (razlogi in rešitve)

Razlog 2: dostop do metode PasteSpecial s pravopisno napako

To je še en pogost razlog za napako. To pomeni, da je za dostop do PasteSpecial metoda s pravopisnimi napakami v katerem koli argumentu.

Oglejte si naslednje VBA kodo, da bo jasna. Tu smo naredili pravopisno napako v argumentu xlPasteAll .

⧭ Koda VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub 

Ko zaženete to kodo, boste dobili napaka med izvajanjem 1004 .

⧭ Rešitev:

Rešitev je preprosta. Prepričan sem, da ste to že uganili. Prepričajte se le, da so vsi argumenti zapisani pravilno.

Napaka bo samodejno izginila.

Preberite več: Kako uporabiti posebni ukaz Vstavi v Excelu (5 primernih načinov)

Podobna branja

  • Excel VBA: Kopiranje območja v drugo delovno knjižico
  • Kopiranje in prilepljanje vrednosti v naslednjo prazno vrstico s programom Excel VBA (3 primeri)
  • Uporabite VBA PasteSpecial in ohranite oblikovanje vira v Excelu
  • Kako kopirati isto vrednost v več celic v Excelu (4 metode)
  • Excel VBA za kopiranje vrstic v drug delovni list na podlagi meril

Razlog 3: Odpiranje novega delovnega zvezka po kopiranju prekliče način kopiraj/prilepi

To je še en pomemben razlog za napako. To pomeni, da je treba narediti nekaj, kar prekliče način kopiraj/prilepi pred lepljenjem.

Za lažje razumevanje si oglejte naslednjo kodo.

⧭ Koda VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllKončni podnaslov 

Tukaj smo kopirali območje B3: B5 iz List1 delovnega zvezka z imenom Delovni zvezek1 .

Nato smo ustvarili nov delovni zvezek z imenom Delovni zvezek2 v isti mapi in poskušal prilepiti kopirano območje v območje B3: B5 na spletnem mestu List1 tega delovnega zvezka.

Ko pa zaženemo kodo, se prikaže Metoda PasteSpecial razreda Range ni bila uspešna Napaka, ker v trenutku, ko ustvarimo nov delovni zvezek. način kopiraj/prilepi bo preklican.

⧭ Rešitev:

Če želite rešiti to težavo, najprej zapišite vrstice kode za ustvarjanje novega delovnega zvezka z imenom Delovni zvezek2 .

Nato vstavite vrstice za aktiviranje Delovni zvezek1 in iz njega kopirajte želeno območje.

In končno, aktivirajte Delovni zvezek2 in vanj prilepite kopirano območje.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Ime datoteke:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub 

Zaženi to kodo. Kopira območje B3: B5 s spletne strani List1 na spletnem mestu Delovni zvezek1.

in ga prilepite v List1 novo ustvarjenega delovnega zvezka z imenom Delovni zvezek2 .

⧭ Previdnostni ukrepi:

Seveda ne pozabite ohraniti Delovni zvezek1 odprta med izvajanjem kode.

Preberite več: Kako onemogočiti kopiranje in lepljenje v Excelu brez makrov (z 2 merili)

Razlog 4: Obračanje vrednosti Application.CutCopyMode na False, ki prekliče način kopiranja/vlaganja

Napaka se lahko pojavi še iz drugega razloga. Lahko izklopimo Application.CutCopyMode napačno pred dostopom do PasteSpecial metoda.

Čeprav to ni zelo pogosta praksa, jo včasih uporabimo, kadar moramo delati z več vrsticami.

Za lažje razumevanje si oglejte naslednjo kodo. Tu smo kopirali območje B3: B5 , vendar je preklical CutCopyMode pred lepljenjem.

⧭ Koda VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Ko boste zagnali kodo, se bo prikazalo Metoda PasteSpecial razreda Range ni bila uspešna napaka.

⧭ Rešitev:

Mislim, da ste že uganili rešitev. Pravzaprav je zelo preprosta. Samo odstranite vrstico iz kode, ki spreminja CutCopy način izklopljen.

Zato je pravilen VBA koda bo:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Kopiral bo območje B3: B5 in ga prilepite na D3:D5 brez težav.

Preberite več: Posebna funkcija VBA Paste za kopiranje vrednosti in oblik v Excelu (9 primerov)

Stvari, ki si jih je treba zapomniti

Tukaj sem prikazal le težave, na katere lahko naletite pri delu z PasteSpecial metoda v VBA. Če želite izvedeti PasteSpecial podrobneje o metodi, obiščite ta povezava .

Zaključek

Na kratko, to so razlogi, ki lahko povzročijo napaka med izvajanjem 1004: metoda PasteSpecial od Razred Range je bila neuspešna Upam, da ste jasno razumeli vse točke in da vam bodo v prihodnosti v veliko pomoč. Ali poznate še kakšne druge razloge? In ali imate kakšne težave? Vabljeni, da nas vprašate. In ne pozabite obiskati našega spletnega mesta ExcelWIKI za več objav in posodobitev.

Hugh West je zelo izkušen trener Excela in analitik z več kot 10-letnimi izkušnjami v industriji. Po izobrazbi je diplomirani računovodstvo in finance ter magisterij poslovne administracije. Hugh ima strast do poučevanja in je razvil edinstven pristop k poučevanju, ki ga je enostavno slediti in razumeti. Njegovo strokovno znanje o Excelu je pomagalo na tisoče študentom in strokovnjakom po vsem svetu, da so izboljšali svoje sposobnosti in se izkazali v karieri. Prek svojega bloga Hugh deli svoje znanje s svetom, ponuja brezplačne vadnice za Excel in spletno usposabljanje, ki posameznikom in podjetjem pomaga doseči njihov polni potencial.