Vraag : Het adres van het uittreksel e-mail van een het memorandumgebied van de Toegang.

Hallo Deskundigen,

How kan ik e-mailadres uit qryEmail.Body (memorandumgebied halen en) aan tblEmail.Bounce in het zelfde gegevensbestand van de Toegang 2007 toevoegen?

Thank u!

Antwoord : Het adres van het uittreksel e-mail van een het memorandumgebied van de Toegang.

Is het e-mailadres het ENIGE punt op dat memorandumgebied? I " m dat het is niet wedt, zodat zou u één of andere methode moeten hebben om te vinden dat E-mailadres op het gebied van het Memorandum, en AFAIK er geen builtin macroactie is die dat zal doen - u zult Regelmatige Uitdrukkingen moeten gebruiken, die een een tekstkoord/dossier kunnen evalueren en aan u een aangepast koord teruggeven, gebaseerd op de „uitdrukking“ u levert.

De code hieronder in bijlage zal dit doen. Enkel kleeft het exemplaar/die punten in een nieuwe StandaardModule (naam dat modulebasTextFunctions, of iets in die aard), en gebruikt dan de functie FindEmailInString om het eerste E-maildieadres terug te keren in het koord wordt gevestigd. Om te doen dat, veronderstellend u een Vorm hebt waarop het gebied van het Memorandum aanwezig is, kon u een knoop omvatten om de waarde te tonen:

Sub MyButton_Click ()
  Msgbox FindEmailInString (Me.YourMemoField)
Sub van het eind

Neem van nota de code voor die Regelmatige Uitdrukking hier uit John Nurick's uitstekende pagina kwam: http://www.j.nurick.dial.pipex.com/Code/index.htm

Meer over Regelmatige Uitdrukkingen lezen, zie ons eigen artikel van Patrick Matthew's op Ex Reg.: http://www.experts-exchange.com/articles/Programming/Languages/Visual_Basic/Using-Regular-Expressions-in-Visual-Basic-for-Applications-and-Visual-Basic-6.html?sfQueryTermInfo=1+30+express+regular





1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
Overheidsfunctie FindEmailInString (StringToSearch als Koord) als Koord

Schemerige sExp als Koord

sExp = „\ B [a-z0-9. _%+-] +@ [a-z0-9. -] + \. [A-Z] {2.4} \ B“
FindEmailInString rgxExtract (StringToSearch, sExp)

De Functie van het eind
Overheidsfunctie rgxExtract (Facultatief Doel ByVal als Variant, _
    Facultatief Patroon als Koord = "", _
    Facultatief Punt ByVal zoals lang = 0, _
    Facultatieve CaseSensitive zoals Van Boole = Vals, _
    Facultatieve FailOnError zoals Van Boole = Waar, _
    Facultatief duur Van Boole voort = Vals) _
  Als Variant
   
  'Regelmatige uitdrukkings passende functie geschikt voor gebruik
  'in VB/A over het algemeen en in de vragen van de Toegang.
  'Door John Nurick. Bijgewerkt 14 Januari 06.
   
  'Neemt een onderzoekskoord (Doel) en een regelmatige uitdrukking
  '(Patroon), en een facultatief argument van het Punt.
  '- Als het Punt en het substring van de gelijkenPatroon van het Doel wordt weggelaten,
  '  winst dat het substring.
  '- Als het Patroon groeperingshaakjes, het substring van Doel omvat
  '  het gelijkenPatroon, en het Punt zijn een geheel, terugkeren submatch
  '  gespecificeerd door Punt (eerst submatch is punt 0). Als er niet zijn
  '  genoeg submatches, winst verklaren nietig. Negatieve waarden van het begin van het Punt
  '  tellend met laatste submatch.
  '- Als geen gelijke, winst nietig verklaart.
  '- De Winst verklaart op fout nietig tenzij FailOnError Waar is.
  '  Altijd gelijken tegenover het volledige Doel (d.w.z. Globaal en
  '  Multiline is Waar).
  
  'CaseSensitive gelijken ongeacht geval.
 
  'Duur controles of het gecompileerde voorwerp RegExp voort
  'blijft klaar in geheugen voor de volgende vraag aan
  'functie of of het onmiddellijk wordt weggedaan. Dit
  'betekent de functie in vragen kan worden gebruikt zonder het hebben
  'om een nieuw voorwerp RegExp voor te creëren, te compileren te gebruiken en te vernietigen
  'elke rij die wordt verwerkt. Maar het betekent ook dat het voorwerp
  'blijft in geheugen nadat de vraag heeft gelopen. Om te vernietigen
  'heb bezwaar en geef het geheugen vrij, roepen deze functie 
  'laatste tijd zonder argumenten.
  '
  'Roepend de functie met verschillende argumenten (b.v. nieuw
  'Patroon) recompiles het voorwerp RegExp, zo
  de 'functie kan in verschillende vragen worden gebruikt. Nochtans daar
  'kan problemen zijn als twee draden de functie bij roepen
  de 'zelfde tijd.
 
  Const rgxPROC_NAME = „rgxExtract“
  Statisch erts als Voorwerp 'VBScript_RegExp_55.RegExp
    De 'statische verklaring betekent wij niet moeten creëren
    'en compileer het voorwerp RegExp elke enige tijd
    de 'functie wordt geroepen.
  Schemerige oMatches als Voorwerp 'VBScript_RegExp_55.MatchCollection
   
  Op Fout GoTo ErrHandler
  rgxExtract = Ongeldige 'Standaardterugkeerwaarde
    'NB: als FailOnError vals is, keert Ongeldig op fout terug
 
  Als IsMissing (Doel) toen
    'Dit is het signaal om erts weg te doen
    Vastgesteld erts = niets
    De Functie van de uitgang 'met standaardwaarde
  Eind als
   
  'Cre�ër indien nodig het voorwerp RegExp
  Als het erts dan niets is
    Plaats erts = CreateObject („VBScript.Regexp“)
  Beëindig als
 
  Met erts
    'Controle of de huidige argumenten (buiten Doel)
    'zijn verschillend van die opgeslagen in erts, en werken hen bij
    '(daardoor recompiling regex) slechts indien nodig.
    Als CaseSensitive = .IgnoreCase toen
      .IgnoreCase = niet .IgnoreCase
    Eind als
    . Globaal = Waar
    . Multiline = Waar
'    Als Multiline <> . Multiline toen
'      . Multiline = Multiline
'    Beëindig als
    Als Patroon <> . Patroon toen
      . Patroon = Patroon
    Eind als
 
  'Tenslotte, voer de gelijke uit
    Als IsNull (Doel) toen
      rgxExtract = verklaar nietig
    Anders
      Reeks oMatches = oRE.Execute (Doel)
      Als oMatches.Count > 0 toen
        Als oMatches (0) .SubMatches.Count = 0 toen
          'Geen () groep in Patroon: keer de gelijke terug
          Als Punt < 0="" Then="">= oMatches.Count
              Het 'positieve Punt overschreed het aantal gelijken
              rgxExtract = verklaar nietig
              Als FailOnError toen
                Err.Raise 9
              Eind als
            Geval anders
              rgxExtract = oMatches (Punt)
          Uitgezocht eind
         
        Anders  'Er zijn één of meerdere () gevangen groepen in Patroon
              'keer terug gespecificeerd door Punt
          Met oMatches (0) .SubMatches
            Als Punt < 0="" Then="">=. Telling
                Het 'positieve Punt overschreed het aantal submatches
                rgxExtract = verklaar nietig
                Als FailOnError toen
                  Err.Raise 9
                Eind als
              Aantal van het Punt van het geval anders het 'geldige
                rgxExtract =. Punt (Punt)
            Uitgezocht eind
          Eind met
        Eind als
      Anders
        rgxExtract = verklaar nietig
      Beëindig als
    Beëindig als
  Eind met
 
  'Ruim en normale uitgang op
  Als niet om dan voort te duren erts = niets plaats
  Ga Functie weg
 
ErrHandler:
  Als FailOnError toen
    Met vergis me
      Selecteer Geval. Aantal
        'Vervang het standaard „voorwerp-bepaalde fouten“ bericht
        Geval 9: . Beschrijving = „Subscript uit waaier (het gevraagde aantal van het Punt“ _
          & „was groter dan het aantal gevonden gelijken, of dan het aantal van“ _
          & „(...) groepeert/vangend haakjes in het Patroon).“
        Geval 13: . Beschrijving = de „wanverhouding van het Type, waarschijnlijk omdat“ _
          & het „"" argument van het Doel "" kon niet in een koord“ worden omgezet
        Geval 5017: . Beschrijving = de „fout van de Syntaxis in regelmatige uitdrukking“
        Geval 5018: . Beschrijving = „Onverwachte meer quantifier in regelmatige uitdrukking“
        Geval 5019: . De beschrijving = „dacht „]“ in regelmatige uitdrukking "
        Geval 5020: . De beschrijving = „dacht „)“ in regelmatige uitdrukking "
      Geval anders
        Als het erts is slaagde niets toen er niet in 'om tot voorwerp te leiden Regexp
          . De beschrijving = „kon tot geen voorwerp leiden VBScript.RegExp. “ & Err.Description
        Anders 'Onverwachte fout
          . Beschrijving = rgxPROC_NAME & „: “ &. Beschrijving
        Eind als
      Uitgezocht eind
      Vastgesteld erts = niets
      . Hef Err.Number op, rgxPROC_NAME, _
          rgxPROC_NAME & „(): “ &. Beschrijving
    Eind met
  'Anders ontbreek stil
    Err.Clear
    Vastgesteld erts = niets
  Eind als
De Functie van het eind
Andere oplossingen  
 
programming4us programming4us