Vodniki

Kako popraviti napako med izvajanjem 1004 v Excelu

Napaka med izvajanjem 1004 je koda napake, ki se nanaša na Microsoft Visual Basic in za katero je znano, da vpliva na uporabnike Microsoft Excela. Znano je, da je napaka najbolj razširjena v programu Excel 2003 in Excel 2007, čeprav nobena različica priljubljene Microsoftove aplikacije za delovne liste za računalnike ni varna pred grožnjo, ki je napaka med izvajanjem 1004. V večini primerov uporabniki, ki jih ta težava vidi, vidijo dve različici napake med izvajanjem 1004. V celoti sta se dve različici napake med izvajanjem 1004 glasili:

Napaka med izvajanjem „1004“:

Način kopiranja razreda delovnega lista ni uspel

Napaka med izvajanjem „1004“:

Napaka, ki jo določa aplikacija ali objekt

Natančno sporočilo o napaki, ki ga vidite, se lahko v nekaj primerih nekoliko razlikuje, čeprav bo koda napake ostala enaka. Ne glede na različico težave pa se skoraj vedno pojavi med izvajanjem makra v Excelu, ki je namenjen kopiranju delovnih listov in nato kopijam v isti delovni zvezek kot prvotni delovni list.

V nasprotju z najhujšimi tehnološkimi težavami je vzrok napake med izvajanjem 1004 v programu Microsoft Excel znan. Napaka med izvajanjem 1004 se pojavi, ko makro, ki ga izvajate, kopira izvirni delovni list v delovni zvezek z definiranim imenom, ki ga niste shranili in zaprli pred zagonom makra. Primer takega makra je razviden iz naslednje kode:

Sub CopySheetTest () Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer 'Ustvari nov prazen delovni zvezek: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Nastavi oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = definirano iTemp' Add a ime v delovni zvezek ', ki se sklicuje na obseg: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= Sheet1! $ A $ 1"' Shrani delovni zvezek: oBook.SaveAs "c: \ test2.xls" 'Kopirajte list v zanko. Sčasoma se prikaže napaka 1004: Način kopiranja razreda »Delovni list ni uspel. Za iCounter = 1 do 275 oBook.Worksheets (1) .Copy After: = oBook.Worksheets (1) Next End Sub

Ker je vzrok napake med izvajanjem 1004 v kontekstu Microsoft Excela znan, kot tudi ločljivost. Poleg rešitve te težave je za uporabnike, ki jih to zadeva, na voljo tudi rešitev, ki jo je mogoče uporabiti v primeru, da rešitev ne deluje ali če rešitev ne najde izvedljive možnosti.

Rešitev:

Rešitev te posebne težave je preprosto urediti kodo makra, ki ga izvajate, da bo občasno shranil in zaprl ciljni delovni zvezek, medtem ko dela kopije delovnih listov. Koda za makro, ki to počne, bi izgledala nekako tako:

Sub CopySheetTest () Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer 'Ustvari nov prazen delovni zvezek: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Nastavi oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = definirano iTemp' Add a ime v delovni zvezek ', ki se sklicuje na obseg: oBook.Names.Add Name: = "tempRange", _ RefersTo: = "= Sheet1! $ A $ 1"' Shrani delovni zvezek: oBook.SaveAs "c: \ test2.xls" 'Kopirajte list v zanko. Sčasoma se prikaže napaka 1004: Način kopiranja razreda »Delovni list ni uspel. Za iCounter = 1 do 275 oBook.Worksheets (1). Kopiraj After: = oBook.Worksheets (1) 'Prekličite to kodo za rešitev:' Shrani, zaprite in znova odprite po vsakih 100 ponovitvah: Če je iCounter Mod 100 = 0 Potem oBook.Close SaveChanges: = True Set oBook = Nič ni nastavljeno oBook = Application.Workbooks.Open ("c: \ test2.xls") End If Next End Sub

Opomba: Natančno število kopij delovnega lista, preden morate shraniti in zapreti delovni zvezek, v katerega se shranjujejo kopije, se razlikuje od primera do primera, saj je odvisno od velikosti delovnega lista, ki ga kopirate.

Rešitev:

Kot smo že omenili, obstaja tudi rešitev te posebne težave. Reševanje te težave je preprosto vstaviti nov delovni list iz predloge, namesto da bi ustvaril kopijo obstoječega delovnega lista. Če bi radi rešili to težavo, morate storiti naslednje:

  1. KosiloExcel.
  2. Ustvarite nov delovni zvezek inizbrišivsak posamezen delovni list vsebuje delovni zvezek, razen za enega.
  3. Oblikadelovni zvezek.
  4. Na edini delovni list, ki ga zdaj vsebuje delovni zvezek, dodajte besedilo, podatke in / ali grafikone, ki jih želite imeti v predlogi.
  5. Če uporabljate Excel 2003 ali starejšo različico, kliknitemapaShrani kot. Če uporabljate Excel 2007 ali novejšo različico, na drugi strani klikniteMicrosoft Officein nato klikniteShrani kot.
  6. VIme datoteke: polje, vnesite, kar želite, da se pokliče predloga.
  7. Odprite spustni meni polegShrani kot vrsto: polje in kliknite naExcelPredloga (.xlt) če uporabljate Excel 2003 ali starejšo različico, aliExcelPredloga (.xltx) če uporabljate Excel 2007 ali novejšo različico, da jo izberete.
  8. Kliknite naShrani.
  9. Ko ste uspešno ustvarili predlogo, jo lahko programsko vstavite z naslednjo vrstico kode:

    Sheets.Add Type: =pot\Ime datoteke

Opomba: V zgornji vrstici kode jepot \ ime datoteke je treba zamenjati s celotno potjo (vključno s celotnim imenom datoteke) za lokacijo predloge lista, ki ste jo pravkar ustvarili.

$config[zx-auto] not found$config[zx-overlay] not found