2013-12-12 4 views
5

मैं डेल्फी के साथ एक एक्सेल शीट पैदा कर रहा हूँ, लेकिन समस्या का सामना करना पड़ रहा हूँ यह है कि जब मैं इस कोड का उपयोग करें:कार्यपुस्तिका की आखिरी शीट के बाद वर्कशीट को कैसे जोड़ा जाए?

Workbook.Sheets.Add; 

नए पत्रक वर्तमान में चयनित कार्यपत्रक पहले जोड़ा जाता है:

enter image description here

क्या कोई जानता है कि कार्यपुस्तिका की आखिरी शीट के बाद वर्कशीट को कैसे जोड़ना है?

+2

FYI करें, [ 'Worksheets.Add उपयोग करने की आवश्यकता '] (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheets.add.aspx) विधि में 4 वैकल्पिक पैरामीटर हैं। – TLama

+1

'वर्कबुक। शीट्स। जोड़ें। इसके बाद,' चाल चलती है? – joostmakaay

+3

शायद 'वर्कबुक। शीट्स.एड (एनयूएलएल, वर्कबुक। शीट्स.काउंट)' की तरह। – TLama

उत्तर

5

Add विधि आपके लिए पैरामीटर स्वीकार करती है कि यह इंगित करने के लिए कि नई शीट कहां डालें, विशेष रूप से After पैरामीटर। यह नई शीट डालने के लिए शीट का संदर्भ होना चाहिए। आपके मामले में, आप अंतिम शीट चाहते हैं। Worksheets एक 1-आधारित सरणी है, इसलिए अंतिम शीट Worksheets[Worksheets.Count] द्वारा दी गई है। यह सब एक साथ लाना, हम इस मिल:

Workbook.Worksheets.Add(After := Workbook.Worksheets[Workbook.Worksheets.Count]); 
1

एक नई शीट हम विधि .Sheets.Add उपयोग करने की आवश्यकता को जोड़ने के लिए, यह पांच मानकों (यह पहले चादर, इसके बाद चादर, और अन्य 3 है , केवल भगवान जानता है) इस मामले में मैंने (नल, एशीट, नल, नल, 0) का उपयोग किया जहां एक आखिरी बार के बाद इसे डालने के लिए एक शीट। अलविदा

uses 
     ... OleServer, ExcelXP ... 
    type 
     TForm1 = class(TForm) 
     Button1: TButton; 
     ExcelApplication1: TExcelApplication; 
     procedure Button1Click(Sender: TObject); 
     private 
     { Private declarations } 
     public 
     { Public declarations } 
     end;  
    ...  
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    Excelfile:OleVariant; 
    aBook: _WORKBOOK; 
    aSheet: _WORKSHEET; 
    begin 
    Excelfile:='c:\plantilla.xls'; 
    ExcelApplication1.connect; 
    aBook:= ExcelApplication1.workbooks.add(Excelfile,0);   

    aSheet:= ExcelApplication1.sheets[aBook.Sheets.Count] as _WORKSHEET; 
    aBook.Sheets.Add(NULL,aSheet,NULL,NULL,0); 

    aSheet:= ExcelApplication1.sheets[aBook.Sheets.Count] as _WORKSHEET; 
    asheet.Name:='Test last position'; 

    ExcelApplication1.visible[0]:=true; 
    ExcelApplication1.disconnect; 
    end; 
+0

स्टैक ओवरफ़्लो में आपका स्वागत है। हम आम तौर पर कुछ * वाक्य * प्रश्न का उत्तर देने के उत्तर के लिए पसंद करते हैं, यदि आवश्यक हो तो कुछ कोड प्रदर्शित करने के लिए। कोड स्वयं ही एक प्रश्न का उत्तर देने का एक गरीब काम करता है क्योंकि यह पाठकों को कोड को बहुत सावधानीपूर्वक जांचने के लिए मजबूर करता है ताकि यह समझ सके कि कोड का कौन सा हिस्सा वास्तव में प्रश्न के लिए प्रासंगिक है। –

+0

ठीक है .. टिप्पणी के लिए धन्यवाद – Pericles

+0

यह प्रारंभिक बाध्य है। पूछताछ देर से बाध्य का उपयोग कर रहा है। –

-1

का उपयोग करने के बाद पैरामीटर सही है, लेकिन मैं यह भी लग रहा है कि मैं अन्य पैरामीटर के लिए Type.Missing कि मैं निर्दिष्ट नहीं कर रहा हूँ

संबंधित मुद्दे