2011-08-08 12 views
6

मैं वर्तमान कार्यपुस्तिका से अपनी अन्य कार्यपुस्तिका को कैसे सक्रिय करूं? मेरे पास dumb.xls और अन्य कार्यपुस्तिका नाम Tire.xls के साथ एक वर्तमान कार्यपुस्तिका है। मैंने worksbooks.open filename:= "name of the file" का उपयोग करके dumb.xls से Tire.xls खोला है। यह खुला हो रहा है लेकिन समस्या यह है कि मैं इसे काम करने में असमर्थ हूं।मैं एक विशिष्ट कार्यपुस्तिका और एक विशिष्ट शीट कैसे सक्रिय करूं?

यदि मैं कहता हूं कि cells(2,24).value=24 इन मानों को dumb.xls के सेल में रखता है लेकिन मैं इसे एक टायर.एक्सएल करना चाहता हूं।

activesheet.cells(2,24).value=24 इन्हें टायर.एक्सएल पर रखता है। लेकिन मैं वर्कबुक को नाम से कैसे सक्रिय करूं? मुझे 3 से 4 एक्सेल कार्यपुस्तिकाओं को खोलने और ऑपरेशन करने की आवश्यकता है? मैं कैसे विशिष्ट कार्यपुस्तिका

सक्रिय करूँ मैं गूगल

पर इस कोड
 activeworkbook.worksheet("sheetname").activate ' but not working 
    windows("sheetname").activate ' people on google suggested not to use 

इसका सक्रिय हो रही नहीं मिली है। मैं नहीं जानता कि इसे कैसे काम करना है। क्या कोई मुझे बता सकता है कि मैं एक विशिष्ट कार्यपुस्तिका और अन्य कार्यपुस्तिका की एक विशिष्ट शीट कैसे सक्रिय करूं?

उदाहरण: मेरे पास niko.xls और niko_2.xls dumb.xls कार्यपुस्तिका से कार्यपुस्तिका के रूप में खोले गए हैं, इसलिए पूरी तरह से 3 कार्यपुस्तिकाएं हैं और मुझे niko_2.xls कार्यपुस्तिका की दूसरी शीट को सक्रिय करना है। मैं इसे कैसे बना सकता हूं? क्या कोई मुझे इन उदाहरणों के साथ वाक्यविन्यास समझा सकता है? अग्रिम धन्यवाद

उत्तर

14

आप पत्रक को सक्रिय करने की जरूरत नहीं है (यदि आप एक विशाल प्रदर्शन हिट ले लेंगे ऐसा करने के लिए, वास्तव में)। चूंकि आप शीट के लिए ऑब्जेक्ट घोषित कर रहे हैं, जब आप "wb" से शुरू होने वाली विधि को कॉल करते हैं। आप उस वस्तु का चयन कर रहे हैं। उदाहरण के लिए, आप यहाँ ऐसा कुछ सक्रिय किए बिना कार्यपुस्तिका के बीच में कूद कर सकते हैं:

Sub Test() 

Dim wb1 As Excel.Workbook 
Set wb1 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test1.xls") 
Dim wb2 As Excel.Workbook 
Set wb2 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test2.xls") 

wb1.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb2.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb1.Sheets("Sheet1").Cells(2, 1).Value = 54 

End Sub 
+0

किसी को भी एक सुराग मिला है कि उपरोक्त मुझे प्रतिलिपि/पेस्ट पर "संकलन त्रुटि - अमान्य चरित्र" त्रुटि दे रहा है? –

+1

सुनिश्चित नहीं है। मैं एक जापानी कीबोर्ड का उपयोग कर रहा हूं, जो जानता है, शायद बैकस्लैश या किसी के पास एक अलग वर्ण कोड है। एक txt फ़ाइल में चिपकाने का प्रयास करें तो एक्सेल शायद? मैंने सब टेस्ट() के तहत एक चरित्र "" देखा है, इसलिए मैंने इसे हटा दिया था। – aevanko

0
Dim Wb As Excel.Workbook 
Set Wb = Workbooks.Open(file_path) 
Wb.Sheets("Sheet1").Cells(2,24).Value = 24 
Wb.Close 

Wb.Sheets("sheetname") में उल्लेख करने के लिए आप निम्न का उपयोग कर सकते पत्रक नाम पता करने के लिए:

Dim sht as Worksheet  
For Each sht In tempWB.Sheets 
    Debug.Print sht.Name 
Next sht 
+0

क्षमा करें मुझे बताएं कि मैं शीट कैसे सक्रिय करूं?आप इसमें कुछ मूल्य डाल रहे हैं, मैं उस कार्यपुस्तिका में सभी सॉर्टिंग और संचालन करना बंद कर दूंगा? क्या मुझे हमेशा Wb.sheets ("sheet1") इंगित करने की आवश्यकता है ...... मुझे यह बताने दो? – niko

4

आप कार्यपुस्तिका आप खोल रहे हैं के लिए एक संदर्भ सेट करना होगा। फिर आप उस वर्कबुक के साथ अपने संदर्भ का उपयोग कर कुछ भी कर सकते हैं।

Dim wkb As Workbook 
Dim sht As Worksheet 

Set wkb = Workbooks.Open("Tire.xls") 
Set sht = wkb.Sheets("Sheet2") 

sht.Activate 
sht.Cells(2, 1) = 123 

दूसरों ने बताया है .Activate अपने मामले में ज़रूरत से ज़्यादा हो सकता है कि:

Dim wkb As Workbook 
Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference! 

wkb.Sheets("Sheet1").Activate 
wkb.Sheets("Sheet1").Cells(2, 1).Value = 123 

भी जो जीवन बाद में आसान हो जाएगा चादर के लिए एक संदर्भ, सेट किया जा सका। इसकी कोशिकाओं को संपादित करने से पहले आपको चादर को सक्रिय करने की सख्ती से आवश्यकता नहीं है। लेकिन, यदि आप यही करना चाहते हैं, तो इसे सक्रिय करने के लिए कोई नुकसान नहीं होता है - प्रदर्शन के लिए एक छोटी हिट को छोड़कर, जो तब तक ध्यान देने योग्य नहीं होना चाहिए जब तक आप इसे केवल एक बार या कुछ बार नहीं करते। हालांकि, अगर आप कई बार सक्रिय करते हैं उदा। एक लूप में, यह चीजों को काफी धीमा कर देगा, इसलिए सक्रिय से बचा जाना चाहिए।

+0

सक्रिय, जैसे चयन करें, प्रदर्शन पर एक बड़ा टोल लेता है। उदाहरण के लिए, ऊपर की प्रक्रिया को 10,000 बार लूप करें और सक्रियण के साथ इसमें लगभग 8 सेकंड लगते हैं। उस लाइन के बिना यह केवल 0.375 सेकंड लेता है। बेशक परिणाम मशीन से अलग हैं। – aevanko

+0

मैं स्वीकार करूंगा कि मैं चुनिंदा और सक्रिय से बचने में बड़ा अंतर जानने के लिए आश्चर्यचकित हूं। यहां कुछ आरईएफ है (उल्लेख है कि सक्रिय प्रदर्शन पर हिट लेता है): http://msdn.microsoft.com/en-us/library/ff726673.aspx – aevanko

+0

हाँ, अच्छा बिंदु, हालांकि यदि ओपी लूपिंग नहीं कर रहा है तो यह ध्यान देने योग्य नहीं होगा। मैं अपने जवाब में उस प्रभाव पर एक टिप्पणी जोड़ूंगा। –

0

कोड है कि मेरे लिए काम किया है:

ThisWorkbook.Sheets("sheetName").Activate 
+0

मैंने वर्कशीट का चयन करने के लिए यहां वर्णित सभी विधियों का प्रयास किया (वास्तव में एक वर्कशीट से दूसरे में स्विच करना)। हालांकि, मुझे "एप्लिकेशन या ऑब्जेक्ट परिभाषित त्रुटि" मिल रही है। वर्कशीट मौजूद है (मैंने इसे एक संदेश के माध्यम से सत्यापित करने के लिए एक कोड जोड़ा है।) कृपया मार्गदर्शन करें। – user1175126

0

कोशिश इस

Windows("name.xls").Activate 
+1

आपको समझाया जाना चाहिए कि आपका उत्तर 2,5 साल बाद क्यों उपयोगी है। क्या आपने इसका जवाब दूसरे जवाब के संबंध में किया था? – manuell

0

आप इस कोशिश कर सकते हैं।

Workbooks("Tire.xls").Activate 

ThisWorkbook.Sheets("Sheet1").Select 
Cells(2,24).value=24 
संबंधित मुद्दे