Hva er forskjellen mellom å bruke den nye nøkkelordet og ringer Create i Excel VBA?

stemmer
9

Hvilke kriterier skal jeg bruke til å bestemme om jeg skriver VBA-kode som dette:

Set xmlDocument = New MSXML2.DOMDocument

eller slik:

Set xmlDocument = CreateObject(MSXML2.DOMDocument)

?

Publisert på 04/10/2008 klokken 07:59
kilden bruker
På andre språk...                            


3 svar

stemmer
2

For den tidligere må du ha en referanse til den typebiblioteket i programmet. Det vil vanligvis bruke tidlig binding (forutsatt at du deklarerer variabelen som MSXML2.DOMDocument snarere enn som objekt, som du sannsynligvis vil), så vil generelt være raskere og vil gi deg IntelliSense støtte.

Det sistnevnte kan brukes til å skape en instans av et objekt ved hjelp av PROGID uten typebiblioteket. Vanligvis vil du bruke sen binding.

Normalt er det bedre å bruke "som ny" hvis du har en type bibliotek, og dra nytte av tidlig binding.

Svarte 04/10/2008 kl. 08:12
kilden bruker

stemmer
10

Så lenge variabelen ikke er skrevet som objekt

Dim xmlDocument as MSXML2.DOMDocument
Set xmlDocument = CreateObject("MSXML2.DOMDocument")

er det samme som

Dim xmlDocument as MSXML2.DOMDocument
Set xmlDocument = New MSXML2.DOMDocument

Begge bruker tidlig binding. mens

Dim xmlDocument as Object
Set xmlDocument = CreateObject("MSXML2.DOMDocument")

bruker sen binding. Se MSDN her .

Når du oppretter eksternt gitt gjenstander, er det ingen forskjeller mellom de nye operatøren, erklære en variabel som ny, og ved hjelp av Create funksjon.

New krever at en type bibliotek er referert. Mens Create bruker registeret.

Create kan brukes for å opprette et objekt på en ekstern maskin.

Svarte 04/10/2008 kl. 08:22
kilden bruker

stemmer
3

Du bør alltid bruke

Set xmlDocument = CreateObject("MSXML2.DOMDocument")

Det er irrelevant for binding problemet. Bare den erklæring bestemmer binding.

Ved hjelp av CreateObjectutelukkende vil gjøre det enklere å bytte mellom tidlig og sen binding, siden du bare trenger å endre erklæringen linje.

Med andre ord, hvis du skriver dette:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = CreateObject("MSXML2.DOMDocument")

Så, for å bytte til sen binding, trenger du bare å endre den første linjen (til As Object).

Hvis du skriver det slik:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = New MSXML2.DOMDocument

så når du bytter til sen binding, må du endre begge linjene.

Svarte 20/06/2012 kl. 22:52
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more