VBA GetObject | ఎక్సెల్ VBA లో GetObject ఫంక్షన్ను ఎలా ఉపయోగించాలి?
ఎక్సెల్ VBA GETOBJECT ఫంక్షన్
ఎక్సెల్ ఫైల్ నుండి యాక్టివ్ఎక్స్ ఆబ్జెక్ట్ను యాక్సెస్ చేయడానికి MS ఎక్సెల్లోని VBA లో GetObject ఫంక్షన్ను ఉపయోగించవచ్చు, ఆపై ఆబ్జెక్ట్ను ఆబ్జెక్ట్ వేరియబుల్కు కేటాయించవచ్చు. MS వర్డ్, MS lo ట్లుక్, MS పవర్ పాయింట్, మరియు ఇంటర్నెట్ ఎక్స్ప్లోరర్ వంటి ఏదైనా మైక్రోసాఫ్ట్ అప్లికేషన్ను నియంత్రించడానికి OLE (ఆబ్జెక్ట్ లింకింగ్ అండ్ ఎంబెడ్డింగ్) లేదా COM (కాంపౌండ్ ఆబ్జెక్ట్ మాడ్యూల్) సాంకేతిక పరిజ్ఞానాన్ని ఉపయోగించడానికి, మేము VBA GETOBJECT ఫంక్షన్ను ఉపయోగించవచ్చు.
మేము వస్తువును సృష్టించడానికి CreateObject ఫంక్షన్ను ఉపయోగిస్తాము మరియు GETOBJECT ఫంక్షన్ ఆబ్జెక్ట్కు సూచనను అందిస్తుంది.
GETOBJECT ఫంక్షన్ కోసం సింటాక్స్
GET OBJECT ఫంక్షన్ ఈ పేరున్న వాదనలను కలిగి ఉంది:
- పాత్ పేరు: మేము తిరిగి పొందటానికి పూర్తి మార్గం మరియు వస్తువు ఉన్న ఫైల్ పేరును పేర్కొనాలి. ఇది ఐచ్ఛిక వాదన, వాస్తవానికి, GetObject ఫంక్షన్లోని రెండు వాదనలు ఐచ్ఛికం కాని ‘పాత్ నేమ్’ విస్మరించబడితే, రెండవ ఆర్గ్యుమెంట్ ‘క్లాస్’ అవసరం.
- తరగతి: ఇది కూడా ముందుగా పేర్కొన్న విధంగా ఐచ్ఛిక వాదన. ఇది వస్తువు యొక్క తరగతిని సూచించే స్ట్రింగ్ను అంగీకరిస్తుంది.
‘తరగతి’ వాదనను పేర్కొనడానికి మేము ‘appname.objecttype’ అనే వాక్యనిర్మాణాన్ని ఉపయోగిస్తాము.
- పేరు: మేము అప్లికేషన్ పేరును పేర్కొనాలి, ఇది వస్తువును అందిస్తుంది.
- ఆబ్జెక్ట్ టైప్: మేము సృష్టించడానికి వస్తువు యొక్క తరగతి రకాన్ని నిర్దేశిస్తాము.
ఎక్సెల్ VBA GETOBJECT ఫంక్షన్ యొక్క ఉదాహరణ
మీరు ఈ VBA GetObject మూసను ఇక్కడ డౌన్లోడ్ చేసుకోవచ్చు - VBA GetObject మూసమన దగ్గర 3 టేబుల్స్ ఉన్న వర్డ్ డాక్యుమెంట్ ఉందని అనుకుందాం.
మేము VBA కోడ్ను వ్రాయాలనుకుంటున్నాము, అది పత్రంలోని అన్ని పట్టికలను ఎక్సెల్ షీట్కు దిగుమతి చేస్తుంది. అదే విధంగా చేయడానికి, మేము VBA లో CreateObject మరియు GetObject ఫంక్షన్ను ఉపయోగించాల్సి ఉంటుంది.
దశలు ఇలా ఉంటాయి:
- ఎక్సెల్ ఫైల్ను సృష్టించండి మరియు ఫైల్ను .xlsm ఎక్సెల్ ఎక్స్టెన్షన్ (ఎక్సెల్ మాక్రో-ఎనేబుల్డ్ వర్క్బుక్) తో సేవ్ చేయండి, ఎందుకంటే మేము VBA కోడ్ (మాక్రో) ను అమలు చేయాలి.
- ఎక్సెల్ లోని ‘డెవలపర్’ టాబ్లోని సత్వరమార్గం కీ (Alt + F11) తో లేదా ‘కోడ్’ సమూహంలో ‘విజువల్ బేసిక్’ ఆదేశాన్ని ఉపయోగించి దృశ్య ప్రాథమిక ఎడిటర్ను తెరవండి.
- VBA ఎడిటర్ యొక్క ఎడమ వైపున ఉన్న ‘ఈ వర్క్బుక్’ పై డబుల్ క్లిక్ చేసి, ఆ తర్వాత స్క్రీన్ పైభాగంలో చూపిన జాబితా నుండి ‘వర్క్బుక్’ ఎంచుకోండి.
- జాబితా నుండి ‘ఓపెన్’ ఎంచుకోండి.
- ఇప్పుడు మనం ఈ రెండు పంక్తుల మధ్య కోడ్ రాయాలి.
- మొదట, మేము పట్టికలను తీయవలసిన చోట నుండి పత్రం యొక్క పేరును పట్టుకోవటానికి వస్తువులను (MS వర్డ్ డాక్యుమెంట్ మరియు MS వర్డ్ అప్లికేషన్ ఆబ్జెక్ట్) మరియు ‘స్ట్రింగ్ వేరియబుల్’ ని పట్టుకుంటాము.
- లోపం నిర్వహణ కోసం, మేము ఒక స్టేట్మెంట్ను జోడిస్తాము, ఈ ప్రకటన VBA ప్రోగ్రామ్ను లోపాన్ని విస్మరించి, తదుపరి పంక్తి కోడ్తో అమలును తిరిగి ప్రారంభించమని చెబుతుంది. “ఆన్ ఎర్రర్ రెస్యూమ్ నెక్స్ట్” స్టేట్మెంట్ రన్టైమ్ లోపాలను పరిష్కరించదు కాని లోపం సంభవించిన పంక్తిని అనుసరించి లైన్ నుండి ప్రోగ్రామ్ ఎగ్జిక్యూషన్ కొనసాగుతుందని దీని అర్థం.
- ఇప్పుడు మనం ఉపయోగిస్తాము GetObject ఫంక్షన్ వర్డ్ అప్లికేషన్ ఆబ్జెక్ట్ యొక్క ప్రస్తుత ఉదాహరణకి ప్రాప్యత పొందడానికి.
- ఒకవేళ, MS వర్డ్ అప్లికేషన్ యొక్క ప్రస్తుత ఉదాహరణ లేదా యాక్టివ్ఎక్స్ భాగం ఒక వస్తువును సృష్టించలేవు లేదా ఈ వస్తువుకు రిటర్న్ రిఫరెన్స్ ఇవ్వలేకపోతే లోపం 429. దీని కోసం, మేము కోడ్లో రెండు పంక్తుల క్రింద చేర్చుతాము. లోపాన్ని నిర్వహించిన తరువాత, మేము ఉపయోగించి MS వర్డ్ అప్లికేషన్ ఆబ్జెక్ట్ యొక్క ఉదాహరణను సృష్టించాలి CreateObject ఫంక్షన్.
- MS వర్డ్ అప్లికేషన్ కనిపించేలా చేయడానికి, మేము కనిపించే ఆస్తిని మారుస్తాము ‘WdApp’ ఆక్షేపించు నిజం.
- ఎక్సెల్ షీట్లోకి పట్టికలను దిగుమతి చేసుకోవాలనుకునే వర్డ్ డాక్యుమెంట్ యొక్క స్థానం మరియు ఫైల్ పేరును మనం కనుగొనాలి మరియు దానికి కేటాయించాలి “StrDocName” పేరు మరియు స్థానాన్ని కనుగొనడానికి, మేము తనిఖీ చేయవచ్చు లక్షణాలు ఫైల్ యొక్క.
తెరవడానికి ‘గుణాలు’ డైలాగ్ బాక్స్, ఫైల్ను ఎంచుకుని నొక్కండి ‘Alt + Enter’.
- పేర్కొన్న ప్రదేశంలో ఫైల్ లేకపోతే, కోడ్ “ఫైల్ మార్క్స్ వివరాలు ఫోల్డర్ మార్గంలో కనుగొనబడలేదు” అని సందేశాన్ని ఇస్తుంది. శీర్షిక “క్షమించండి, ఆ పత్రం పేరు లేదు.”
- ఇప్పుడు మనం MS వర్డ్ అప్లికేషన్ ని యాక్టివేట్ చేసి వేరియబుల్ ని కేటాయించాలి ‘Wddoc’ పత్రం పత్రంతో ఫైల్ పేరు నిల్వ చేయబడింది ‘StrDocName’.
- ఫైల్ ఇప్పటికే తెరవబడకపోతే, మేము పత్రాన్ని తెరిచి, అనువర్తనాన్ని సక్రియం చేయాలి.
- పద పత్రాన్ని సక్రియం చేసిన తరువాత, మేము పత్రంలోని పట్టికలను యాక్సెస్ చేయాలి. అదే విధంగా, మేము కొన్ని వేరియబుల్స్ సృష్టిస్తాము.
Tble పూర్ణాంక వేరియబుల్, ఇది పత్రంలో పట్టికల సంఖ్యను నిల్వ చేస్తుంది.
rowWd లాంగ్ వేరియబుల్, ఇది ఒక నిర్దిష్ట పట్టికలో వరుసల సంఖ్యను నిల్వ చేస్తుంది.
colWd లాంగ్ వేరియబుల్, ఇది ఒక నిర్దిష్ట పట్టికలో నిలువు వరుసల సంఖ్యను నిల్వ చేస్తుంది.
- మేము పత్రంలోని పట్టికల సంఖ్యను లెక్కించాల్సిన అవసరం ఉంది మరియు పత్రంలో పట్టిక లేకపోతే వినియోగదారుకు సందేశ పెట్టెను ప్రదర్శిస్తాము “వర్డ్ డాక్యుమెంట్లో టేబుల్స్ లేవు”.
- పత్రంలోని పట్టికలను ఆక్సెస్ చెయ్యడానికి మరియు ఎక్సెల్ షీట్లోని కంటెంట్ను వ్రాయడానికి, మేము అనేక టేబుళ్ల సార్లు 'ఫర్' VBA లూప్ను నడుపుతాము మరియు ఈ VBA లూప్లో, ప్రతి అడ్డు వరుసను యాక్సెస్ చేయడానికి లూప్ల కోసం మేము గూడును నడుపుతాము మరియు వరుసలోని ప్రతి కాలమ్.
- మేము పత్రాన్ని సేవ్ చేసి, అప్లికేషన్ నుండి నిష్క్రమించాలనుకోవడం లేదు. మేము సిస్టమ్ యొక్క మెమరీని కూడా విడుదల చేయాలి. అదే విధంగా చేయడానికి, మేము ఈ క్రింది కోడ్ను వ్రాస్తాము.
ఇప్పుడు మేము ఎక్సెల్ ఫైల్ను తెరిచినప్పుడల్లా, వర్డ్ డాక్యుమెంట్ నుండి టేబుల్ కంటెంట్తో ఫిల్ నవీకరించబడుతుంది.
కోడ్:
ప్రైవేట్ సబ్ వర్క్బుక్_ ఓపెన్ () రెమ్ GETOBJECT డిమ్ WdApp చేత ఆబ్జెక్ట్గా ప్రాప్యత చేయడానికి డిక్లేరింగ్ డిక్లేరింగ్ ఇప్పటికే తెరవబడింది WdApp = GetObject (, "Word.Application") ఉంటే Err.Number = 429 అప్పుడు Err.Clear Rem MS Word ఇప్పటికే తెరవకపోతే వర్డ్ అప్లికేషన్ ఆబ్జెక్ట్ని సృష్టిస్తోంది WdApp = CreateObject ("Word.Application") ముగింపు WdApp.Visible = True strDocName = "C: ers యూజర్లు \ CBA7_01 \ డెస్క్టాప్ \ మార్క్స్ వివరాలు. Docx" రెమ్ సంబంధిత పత్రం కోసం సంబంధిత డైరెక్టరీని తనిఖీ చేస్తోంది రెమ్ కనుగొనబడకపోతే వినియోగదారుకు తెలియజేయడం మరియు ప్రోగ్రామ్ను మూసివేయడం ఉంటే Dir (strDocName) = " "అప్పుడు MsgBox" ఫైల్ "& strDocName & vbCrLf &" ఫోల్డర్ మార్గంలో కనుగొనబడలేదు "& vbCrLf &" C: ers యూజర్లు \ CBA7_01 \. ", _VbExclamation," క్షమించండి, ఆ పత్రం పేరు ఉనికిలో లేదు. " WdApp.Activate సెట్ చేస్తే wddoc = WdApp.Documents (strDocName) wddoc ఏమీ లేకపోతే wddoc = WdApp.Documents.Open ("C: ers యూజర్లు \ CBA7_01 \ డెస్క్టాప్ \ మార్క్స్ వివరాలు. DocxA) వర్డ్ డాక్యుమెంట్లోని పట్టికలను ప్రాప్యత చేయడానికి వేరియబుల్స్ను నిర్వచించడం డిమ్ టిబుల్ ఇంటెజర్ డిమ్ రోడబ్ల్యుడి లాంగ్ డిమ్ కోల్డబ్ల్యూగా ఇంటీజర్ డిమ్ x లాంగ్, వై లాంగ్ లాంగ్ x = 1 వై = 1 తో wddoc టిబుల్ = wddoc.Tables.Count ఉంటే టిబుల్ = 0 అప్పుడు MsgBox "వర్డ్ డాక్యుమెంట్లో టేబుల్స్ లేవు", vbExclamation, "దిగుమతి చేయడానికి టేబుల్స్ లేవు" సబ్ ఎండ్ నుండి నిష్క్రమించండి రెమ్ టేబుల్స్ మరియు వాటి అడ్డు వరుసలను యాక్సెస్ చేయడానికి లూపింగ్ ప్రాసెస్ను ప్రారంభిస్తే, నిలువు వరుసలు i = 1 తో పరిష్కరించడానికి .టేబుల్స్ (i) rowWd కోసం = 1 నుండి .Rows.Count for colWd = 1 To .Columns.Count Cells (x, y) = వర్క్షీట్ఫంక్షన్.క్లీన్ (. సెల్ (rowWd, colWd) .రేంజ్.టెక్స్ట్) తదుపరి కాలమ్ను యాక్సెస్ చేస్తోంది y = y + 1 తదుపరి colWd రెమ్ తదుపరి అడ్డు వరుసకు వెళ్లి 1 y = 1 x = x + 1 తదుపరి rowWd నెక్స్ట్ ఎండ్తో రెమ్తో ముగించండి wmd అనే పత్రాన్ని సేవ్ చేయనవసరం లేదు. సేవ్చేంజ్లను మూసివేయండి: = తప్పుడు రెమ్ మేము MS వర్డ్ అప్లికేషన్ Wd App.Quit Rem మేము చివరికి 2 ఆబ్జెక్ట్ వేరియబుల్స్ కోసం కేటాయించిన సిస్టమ్ మెమరీని విడుదల చేస్తాము wddoc = ఏమీ సెట్ చేయని WdApp = ఏమీ అంతం లేని ఉప
గుర్తుంచుకోవలసిన విషయాలు
- కొన్ని సింగిల్-ఇన్స్టాన్స్ ఆబ్జెక్ట్ ఉంది, దీని కోసం క్రియేట్ ఆబ్జెక్ట్ నడుస్తున్న సంఖ్యతో సంబంధం లేకుండా ఆబ్జెక్ట్ యొక్క ఒక ఉదాహరణ మాత్రమే ఉత్పత్తి అవుతుంది. GetObject ఫంక్షన్ అన్ని సమయాల్లో సున్నా పొడవు యొక్క స్ట్రింగ్తో పిలువబడినప్పుడు అదే ఉదాహరణను అందిస్తుంది మరియు ‘పాత్ నేమ్’ ఆర్గ్యుమెంట్ పేర్కొనకపోతే లోపం వస్తుంది.
- VBA తో సృష్టించబడిన తరగతికి సూచనను యాక్సెస్ చేయడానికి మేము GetObject ని ఉపయోగించలేము.
- ఒకవేళ, MS వర్డ్ అప్లికేషన్ యొక్క క్రియాశీల ఉదాహరణ ఏదీ లేదు, లేదా ఇప్పటికే లోడ్ చేయబడిన ఫైల్తో ఆబ్జెక్ట్ ప్రారంభించబడకూడదనుకుంటే, మొదట ఆబ్జెక్ట్ని సృష్టించడానికి క్రియేట్ ఆబ్జెక్ట్ ఫంక్షన్ను ఉపయోగిస్తాము, ఆపై ఆబ్జెక్ట్ను యాక్సెస్ చేయడానికి GetObject ఫంక్షన్ను ఉపయోగిస్తాము.