Makale numarası: 210684 - Son Gözden Geçirme: 02 Nisan 2007 Pazartesi - Gözden geçirme: 6.4

Çalışma zamanı hatası 1004 Excel'de neden olan çalışma programsal olarak kopyalama

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Microsoft Excel'de çalışma kopyalar ve sonra da bunlar kaynaklandığı aynı çalışma kitabına çalışma sayfaları yerleştirir bir makro çalıştırın. Bunu yaptığınızda aşağıdaki hata iletilerinden birine benzer bir hata iletisi alabilirsiniz:
Çalışma zamanı hatası '1004':
Çalışma sayfası sınıf, kopya yöntemi başarısız oldu.
Çalışma zamanı hatası '1004':
Uygulama tanımlı veya nesne tanımlı hata

Neden

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir. Ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Çalışma kitabına tanımlı bir ad verin ve sonra çalışma sayfasının ilk kaydetme ve aşağıdaki örnek kodu gibi çalışma kitabını kapatma birkaç kez kopyalayın, bu sorun oluşabilir:
Sub CopySheetTest()
    Dim iTemp As Integer
    Dim oBook As Workbook
    Dim iCounter As Integer
    
    ' Create a new blank workbook:
    iTemp = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set oBook = Application.Workbooks.Add
    Application.SheetsInNewWorkbook = iTemp
    
    ' Add a defined name to the workbook
    ' that RefersTo a range:
    oBook.Names.Add Name:="tempRange", _
        RefersTo:="=Sheet1!$A$1"
            
    ' Save the workbook:
    oBook.SaveAs "c:\test2.xls"
    
    ' Copy the sheet in a loop. Eventually,
    ' you get error 1004: Copy Method of
    ' Worksheet class failed.
    For iCounter = 1 To 275
        oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)        
    Next
End Sub
				

Çözüm

Bu sorunu gidermek için <a0></a0>, kaydetmek ve belirli aralıklarla kopyalama işlemi, aşağıdaki örnek kodda olarak oluşup karşın, çalışma kitabını kapatın:
Sub CopySheetTest()
    Dim iTemp As Integer
    Dim oBook As Workbook
    Dim iCounter As Integer
    
    ' Create a new blank workbook:
    iTemp = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set oBook = Application.Workbooks.Add
    Application.SheetsInNewWorkbook = iTemp
    
    ' Add a defined name to the workbook
    ' that RefersTo a range:
    oBook.Names.Add Name:="tempRange", _
        RefersTo:="=Sheet1!$A$1"
            
    ' Save the workbook:
    oBook.SaveAs "c:\test2.xls"
    
    ' Copy the sheet in a loop. Eventually,
    ' you get error 1004: Copy Method of
    ' Worksheet class failed.
    For iCounter = 1 To 275
        oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)
        'Uncomment this code for the workaround:
        'Save, close, and reopen after every 100 iterations:
        If iCounter Mod 100 = 0 Then
            oBook.Close SaveChanges:=True
            Set oBook = Nothing
            Set oBook = Application.Workbooks.Open("c:\test2.xls")
        End If
    Next
End Sub
				
Not kaç kez önce çalışma kitabını kaydetmeniz gerekir, bir çalışma sayfasına kopyalayabilirsiniz çalışma sayfasının boyutunu değiştirir.

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>, varolan bir çalışma sayfasına kopyalama yerine bir şablondan yeni bir çalışma sayfası ekler. Bunu yapmak için <a0></a0>, çalıştırmakta olduğunuz Excel sürümüne uygun adımları izleyin.

Microsoft Office Excel 2007

  1. Yeni bir çalışma kitabı oluşturun ve sonra tüm çalışma sayfalarını bir haricinde silin.
  2. Çalışma kitabını biçimlendirmek ve bütün metin, veri ve gerekli olan grafik şablonda varsayılan olarak ekleyin.
  3. Microsoft Office düğmesi ' ni tıklatın ve sonra da Kaydet'i tıklatın.
  4. Dosya adı</a0> kutusunda, Excel şablonu için istediğiniz adı yazın.
  5. Kayıt türü listesinde, şablonu (*.xltx) tıklatın ve sonra da <a2>Kaydet</a2>'i tıklatın.
  6. Şablon programsal olarak eklemek için şu kodu kullanın:
    Sheets.Add Type: = path \ filename
    Bu kodda, path \ filename sayfası şablonunuz için tam yolu ve dosya adını içeren bir dizedir.

Microsoft Office Excel 2003 ve Excel'in önceki sürümleri

  1. Yeni bir çalışma kitabı oluşturun ve sonra tüm çalışma sayfalarını bir haricinde silin.
  2. Çalışma kitabını biçimlendirmek ve bütün metin, veri ve gerekli olan grafik şablonda varsayılan olarak ekleyin.
  3. Dosya ' yı tıklatın ve sonra Farklı Kaydet'i tıklatın.
  4. Dosya adı</a0> kutusunda, Excel şablonu için istediğiniz adı yazın.
  5. Kayıt türü listesinde Şablon (*.xlt) tıklatın ve sonra da <a2>Kaydet</a2>'i tıklatın.
  6. Şablon programsal olarak eklemek için şu kodu kullanın:
    Sheets.Add Type: = path \ filename
    Bu kodda, path \ filename sayfası şablonunuz için tam yolu ve dosya adını içeren bir dizedir.

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbprogramming kbmacro kbautomation kbvba kbexpertiseinter kbbug kberrmsg kbpending KB210684 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:210684  (http://support.microsoft.com/kb/210684/en-us/ )