2015-12-24 11 views
7

मैं कोडिंग करने के लिए नया हूँ और निम्न प्रदर्शन करने के लिए कोशिश कर रहा हूँ का समर्थन नहीं करता;त्रुटि - VBA ऑब्जेक्ट इस गुण या विधि

ट्रैकिंग वर्कबुक परियोजना जानकारी जो एक इनपुट कार्यपुस्तिका से लिया जाता है शामिल हैं। मैं इनपुट कार्यपुस्तिका खोलने पर नज़र रखने कार्यपुस्तिका की परियोजना की जानकारी sheet.Here में परियोजना जानकारी पत्रक पर सभी डेटा को कॉपी करें और अतीत कोशिश कर रहा हूँ नीचे

Sub GetProjectInfo() 

    Workbooks.Open Filename:="\\ccprd02\workgrp2\AM\SPIM Input.xlsm" 
    ActiveSheet("Project Info").Select 
    Cells.Select 
    Selection.Copy 
    Windows("SPIM Tracking Sheet.xlsm").Activate 
    ActiveSheet("Project Info").Select 
    Cells.Select 
    Range("A1").Activate 
    ActiveSheet.Paste 
    Range("A1").Select 
    Windows("SPIM Input.xlsm").Activate 
    ActiveWindow.Close 

End Sub 

मेरी कोडिंग यह फ़ाइल ठीक खोलने लेकिन तब है लगता है डेटा कॉपी करने से ठीक पहले रुकें। मैं त्रुटि को इंगित नहीं कर सकता। मैंने इसी तरह के मुद्दों के साथ कई धागे खोजे हैं लेकिन कोई भाग्य नहीं है। क्या मेरे कोडिंग में कुछ गड़बड़ है?

+0

अपनी ऑब्जेक्ट को 'सेट' के साथ योग्य बनाएं। – findwindow

+1

@findwindow - क्या वस्तुएं? संपूर्ण उप चयन, सक्रिय और सक्रिय वर्कबुक पर आधारित है। – Jeeped

+0

कार्यपुस्तिकाएं, चादरें और कोशिकाएं वस्तुएं नहीं हैं? – findwindow

उत्तर

4

जब VBA कोड लिखने, आप सबसे अच्छा चर के साथ सभी वस्तुओं को योग्यता और खुद वस्तुओं के साथ सीधे काम करके परोसा जाता है।

इस प्रयास करें:

Dim wbC as Workbook 
Dim wbP as Workbook 
Dim wsC as Worksheet 
Dim wsP as Worksheet 

Set wbP = Workbooks("SPIM Tracking Sheet.xlsm") 
Set wsP = wbP.Sheets("Project Info") 
Set wbC = Workbooks.Open (Filename:="\\ccprd02\workgrp2\AM\SPIM Input.xlsm") 
Set wsC = wbC.Sheets("Project Info") 

wsC.Cells.Copy wsP.Range("A1") 

wbC.Close False 'assuming you want to close the workbook you opened. 

मैं भी आश्चर्य है कि अगर तुम सच में हर कोशिका कार्यपत्रक के प्रतिलिपि बनाना चाहते हैं या यदि आप बस वास्तविक डेटा साथ कोशिकाओं नकल करना चाहते हैं?

तुम सिर्फ वास्तविक डेटा के साथ कोशिकाओं चाहते हैं, आप उपयोग कर सकते हैं wsC.UsedRange.Copy wsP.Range("A1")नोट - यह मुद्दों के रूप में अच्छी तरह से हो सकता था, लेकिन मैं तुम मुझे बताओ अगर यह होता है :)

8
समस्या

अपने कोड है साथ दूँगी दूसरी पंक्ति में।

ActiveSheet("Project Info").Select 

यह होना चाहिए,

ActiveWorkbook.Sheets("Project Info").Select 
'alternative 
Worksheets("Project Info").Select 

मेरी टिप्पणी में उल्लेख किया है, चयन पर निर्भर से दूर हो रही है के बारे में अधिक तरीकों के लिए How to avoid using Select in Excel VBA macros देख सकते हैं और अपने लक्ष्यों को पूरा करने को सक्रिय करें। ActiveWorkbook property, Application.ActiveWindow property, ActiveSheet property और ActiveCell property सिर्फ referrencing की नहीं विश्वसनीय तरीके हैं।

+3

आवश्यक कोड से अधिक मूल कोड में हेरफेर किए बिना मुख्य समस्या को इंगित करने का अच्छा तरीका :) * निश्चित रूप से सापेक्ष होने की आवश्यकता है:) * –

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