রান-টাইম এরর ১০০৪ মাইক্রোসফ্ট ভিজুয়াল বেসিকের একটি ত্রুটি কোড যা এক্সেল ব্যবহারকারীদের প্রভাবিত করে। এটি এক্সেল ২০০৩ ও ২০০৭-এ বেশি দেখা যায়, কিন্তু কোনো ভার্সনই এর থেকে বাঁচা নয়। প্রায়শই ব্যবহারকারীরা এই دوটি ভেরিয়েশন দেখেন:
“Run-time error ‘1004’:
Copy Method of Worksheet Class failed”
“Run-time error ‘1004’:
Application-defined or object-defined error”

এক্সেলে ম্যাক্রো চালানোর সময় এই ত্রুটি হয়, যেটি ওয়ার্কশিট কপি করে একই ওয়ার্কবুকে রাখে। এরর ১০০৪ হয় যখন ম্যাক্রো মূল ওয়ার্কশিটকে একটি ডিফাইনড নেমযুক্ত ওয়ার্কবুকে কপি করে, যা আপনি ম্যাক্রো চালানোর আগে সেভ ও ক্লোজ করেননি। উদাহরণ কোড নিচে দেওয়া আছে।
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কারণ জানা থাকায় সমাধানও জানা। সমাধানের পাশাপাশি একটি ওয়ার্কঅরাউন্ডও রয়েছে।
সমাধান:
ম্যাক্রো কোড এডিট করুন যাতে এটি পর portuguاً টার্গেট ওয়ার্কবুক সেভ ও ক্লোজ করে। কোড নিচের মতো হবে:
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নোট: কতবার কপি করার পর সেভ-ক্লোজ প্রয়োজন সেটি ওয়ার্কশিটের আকারের ওপর নির্ভর করে।
ওয়ার্কঅরাউন্ড:
কপি করার বদলে টেমপ্লেট থেকে নতুন ওয়ার্কশিট ইনসার্ট করুন। পদ্ধতি:
- Excel চালু করুন।
- নতুন ওয়ার্কবুক তৈরি করুন, একটিমাত্র ওয়ার্কশিট বাদে সব ডিলিট করুন।

- ফরম্যাট করুন।
- ডিফল্ট টেক্সট, ডেটা, চার্ট যোগ করুন।
- এক্সেল ২০০৩ বা পুরনো: File > Save As। এক্সেল ২০০৭ বা নতুন: Microsoft Office বাটন > Save As।

- File name ফিল্ডে টেমপ্লেটের নাম দিন।
- Save as type ড্রপডাউন থেকে Excel Template (.xlt) বা .xltx সিলেক্ট করুন।

- Save ক্লিক করুন।

- টেমপ্লেট প্রোগ্রামেটিক্যালি ইনসার্ট করতে নিচের কোড ব্যবহার করুন:
Sheets.Add Type:=path\filename
নোট: উপরের কোডে path\filename-কে আপনার তৈরি টেমপ্লেটের পুরো পাথ ও ফাইলনেম দিয়ে রিপ্লেস করুন।