Springen naar inhoud


- - - - -

mail bericht formateren

vb mail format

  • Log in a.u.b. om te beantwoorden
Er zijn 20 reacties in dit onderwerp

#1 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 15 juli 2010 - 22:35

Kan iemand me op weg zetten met het volgende :

Hieronder zie je een vluchtschema gekopieerd uit een systeem, maar alle overbodige info zou weg moeten en de route moet uitgeschreven worden en een streepje tussen de uren.


1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B
SEE RTSVC
2 IB3202 Y 28AUG 6 MADBRU HK1 4 1200 1415 320 E 0 G
SEE RTSVC

UITVOER :

SN3721  25AUG  Brussels  -Madrid 0855 - 1130  
IB3202  28AUG  Madrid - Brussels  1200 - 1415

Ik had al gedacht om elke lijn op te delen zoals dit

Visual Basic Code:
Dim vluchtnr As String (heeft altijd dezelfde notatie)
Dim datum As Date (ook zelfde notatie)
Dim route As String (dit zal dan een array worden)
Dim uur As Integer (ook zelfde notatie)

Misschien moet ik werken met StringLength, Replace, ... Hoe moet ik de gekopieerde tekst ophalen (gettext?)

Groetjes

#2 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 15 juli 2010 - 23:53

je zal toch iets meer info moeten geven hoor bv:
wat is de logica achter het systeem

Citeren

1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B
2 IB3202 Y 28AUG 6 MADBRU HK1 4 1200 1415 320 E 0 G
1 bevat 15 elementen
2 bevat 14 elementen

voor de elementen 1 t/m 7 zie ik een logica
voor de andere zie ik wel overeenkomsten, maar de logica ontsnapt me volledig
bv:
in 1 is het 8ste element een uur (0805),en het 9de element de letter M
in 2 is het 8ste element het getal 4, en het 9de element een uur (1200)

dus als u de logica kunt uitleggen, dan is er waarschijnlijk wel een eenvoudige oplossing
zoniet zul je het waarschijnlijk manueel moeten doen

#3 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 16 juli 2010 - 18:10

Idd na het laatste element zit er geen logica meer in. Het is enkel die 0855 die er teveel aan is, want dit gegeven komt niet altijd voor in andere lijnen.
Maar als ik die er manueel (4tekens en een spatie) uit doe, dan zit er terug logica in. Zie het volgende :

1##SN3721#Y#25AUG#3#BRUMAD#HK1#M#0855#1130###AR1#E#0#B
2##IB3202#Y#28AUG#6#MADBRU#HK1#4#1200#1415###320#E#0#G

De blancos/spaties heb ik opgevuld met een #
Ik tel 54 plaatsen met blancos/spaties inbegrepen.

De onderdelen :
Het vluchtnr is altijd eerst 2 letters en dan 1 tot 4 cijfers: bijvoorbeeld CO 061 (dan zit er ook een blanco tussen) maar altijd 6 karakters lang (met of zonder spaties)
De datum : de notatie is altijd 2 cijfers dan 3 letters
De route : de notatie is altijd de eerste 3 letters voor het vertrekpunt en de laatste 3 letters voor het aankomstpunt
Het vertrekuur : de notatie is altijd 4 cijfers
Het aankomstuur : de notatie is altijd 4 cijfers

Overbodig in de eerste lijn : (gelijkaardig voor de 2de lijn)
- Het nummer 1 gevolgd door 2 spaties
- nr 3, kan een cijfer zijn van 0 tot 9 (1 karakter)
- HK1, dit is altijd 2 letters en 1 cijfer (3 karakters)
- M = in de plaats kan ook een 4 staan (1 karakter)
- #AR1#E#0#B of Vanaf plaats 42 is alles overbodig. Dit zijn karakters die zijn opgevuld met letters of cijfers of spaties.

Als er al een beetje meer opmaak in kan zou dat tof zijn.
Is dit haalbaar? Kan hier mee gewerkt worden?

Met vriendelijke groeten,

#4 Hansiebebe

Hansiebebe

    Professional Developer

  • Leden
  • PipPipPipPip
  • 328 berichten
    Laatst bezocht 17 okt 2018 16:56

Geplaatst op 17 juli 2010 - 08:49

Ik denk dat je met de keywords :


Code:
Left
Mid
Trim
Replace
al heel ver komt

#5 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 17 juli 2010 - 17:36

Citeren

1##SN3721#Y#25AUG#3#BRUMAD#HK1#M#0855#1130###AR1#E#0#B
2##IB3202#Y#28AUG#6#MADBRU#HK1#4#1200#1415###320#E#0#G
tja, dat is heel gemakkelijk te parsen,dat is een fluitje van een cent
als je wil kan ik je code geven om dat te parsen
natuurlijk om van BRUMAD tot Brussel - Madrid te komen zal je toch de afkortingen/namen van al de vliegvelden van de wereld moeten hebben
maar om tot dat formaat te komen heb je toch een converter nodig,en om zo'n converter te schrijven moet er wel enige logica in het originele formaat zitten,en zolang je die logica niet kent,kan je het vergeten
natuurlijk,als je het originele formaat manueel transformeerd,is er geen probleem,behalve...
een manuele transformatie is wel heel fout gevoelig

in werkelijkheid zie ik in je originele voorbeeld wel voldoende logica om te doen wat je wil:
namelijk:
1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B
2 IB3202 Y 28AUG 6 MADBRU HK1 4 1200 1415 320 E 0 G

teken 3 to 8 ---vlucht (merk op dat dat niet zo is in het nieuwe formaat)
teken 12 tot 16 ---datum
teken 20 tot 25 ---vertrek/bestemming
en dan,als er ergens na het 25e teken ' M ' of ' 4 ' staat dan volgen er 2 tijden in de vorm ' UUMM UUMM '
als dat altijd de logica is...dan is er ook geen probleem...is dat zo ???

#6 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 18 juli 2010 - 12:16

Ja sorry ik heb een foutje gemaakt. Het eerste formaat dat ik opgaf is zoals het gekopieerd wordt uit het reserveringssysteem.

1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B
2 IB3202 Y 28AUG 6 MADBRU HK1 4 1200 1415 320 E 0 G

Dus ik bevestig wat je schrijft :

teken 3 tot 8 : hier zit het vluchtnr in (met maar 1 spatie en geen 2)
teken 12 tot 16 is de datum
teken 20 tot 25 is vertrek en bestemming

dan komt het moeilijkste om eruit te halen : het vertrek en aankomstuur.

die M of 4 betekent de terminal waarin het vliegtuig vertrekt. Maar dat kan ook 1 of 5 zijn of eender hoe een terminal kan noemen maar altijd wel 1 karakter.  

Die 0805 die je enkel ziet op lijn 1 is de tijd dat de check in sluit. Maar wordt dus niet altijd opgegeven.

Dus hier zit niet veel logica in denk ik.

Misschien is het beter van achter naar voor te werken als dat gaat. Dat zijn wel vaste plaatsen ;

Van achteren te beginnen :
teken 11 tot 19 is het vertrek en aankomst uur.
de notatie van het uur is zoals je zegt UUMM

De afkortingen van alle vliegvelden dat is geen probleem die zitten allemaal in het systeem. Moet je die dan in een array stoppen of zo of toch een soort van bibliotheek?

Ik vind het al echt goed nieuws dat je er een oplossing in ziet!

Groetjes

#7 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 18 juli 2010 - 17:39

hierbij de code
Visual Basic Code:
Private Sub Doehet()
	Debug.Print Converteer("1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B")
	Debug.Print Converteer(" 1 SN3721 Y 25AUG 3 BRUMAD HK1 0805 M 0855 1130 AR1 E 0 B ")
	Debug.Print Converteer("2 IB3202 Y 28AUG 6 MADBRU HK1 4 1200 1415 320 E 0 G")
End Sub

Function Converteer(ByVal TeConverteren As String) As String
	Dim Inkomend As String 'de genormaliseerde string (TeConverteren)
	Dim InkomendRev As String 'Inkomend achterstevoor
	Dim Uitgaand As String 'het resultaat
	Dim Vlucht As String
	Dim Datum As String
	Dim Vertrek_Bestemming As String
	Dim Vertrek_AankomstTijd As String
	
	Inkomend = Trim(TeConverteren)
	InkomendRev = StrReverse(Inkomend)
	Uitgaand = ""
	Vlucht = Mid(Inkomend, 3, 6)
	Datum = Mid(Inkomend, 12, 5)
	Vertrek_Bestemming = Mid(Inkomend, 20, 3) & "-" & Mid(Inkomend, 23, 3)
	Vertrek_AankomstTijd = Mid(InkomendRev, 11, 9)
	Mid(Vertrek_AankomstTijd, 5, 1) = "-"
	Vertrek_AankomstTijd = StrReverse(Vertrek_AankomstTijd)
	Uitgaand = Vlucht & "  " & Datum & "  " & Vertrek_Bestemming & "  " & Vertrek_AankomstTijd
	Converteer = Uitgaand
End Function

een woordje uitleg:
de enige normalisering die gedaan wordt is het verwijderen van voorloop/naloop spaties
de string wordt gewoon achterstevoren gezet,dit zou eventueel ook kunnen door alleen de 19 laatste tekens te gebruiken
de functie zou wel nog wat geoptimaliseerd kunnen worden, ik heb dit niet gedaan, omdat ik goed begrijpelijke code prefereer boven tot het aximale geoptimaliseerde code
over Vertrek/Bestemming:
ik denk dat het eenvoudigste is alle airport kodes in een access database te zetten
zodat de functie gemakkelijk de volledige namen kan opzoeken
maar: kan u de data niet rechtstreeks uit het 'systeem' halen ?
wat is het voor een 'systeem' ?

#8 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 19 juli 2010 - 20:28

Een fijn stukje code, en die kan ik ook goed begrijpen. Ik heb zeker weer wat bijgeleerd.
Als ik het goed begrijp zou de converteer("en dan de string") het standaard voorbeeld zijn voor alle andere strings, maar hoe wordt dat toegepast?

Het systeem is een globaal reserveringssysteem, genaamd amadeus. Als ik op het werk een voorstel moet maken dan zoek ik vluchten op en plak ze in een mailbericht en daar doe ik dan de opmaak. Is het mogelijk om direct op die mail dit vb programma toe te passen? Ik dacht bijvoorbeeld om de op te maken vluchten te selecteren en dan alt + F8 en dan uitvoeren. Zou dit kunnen?

Ik denk dat dat reserveringssysteem geen database met alle luchthavencodes heeft, mss wel maar dan zijn we ook afhankelijk van dat systeem. Ik denk dat het toch beter is om die in een aparte tabel te zetten. maar zou dit ook in Excel kunnen, want access kunnen we niet gebruiken op het werk?

Alvast bedankt voor al je hulp en tijd!

#9 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 20 juli 2010 - 02:34

Citeren

Als ik het goed begrijp zou de converteer("en dan de string") het standaard voorbeeld zijn voor alle andere strings, maar hoe wordt dat toegepast?
ik begrijp je vraag niet goed hoor,als je de kode in outlook uitvoerd zie je toch de geconverteerde string in het debug venster
je kan ze zelfs uit het debug venster kopieeren en zo in je email plakken

Citeren

Het systeem is een globaal reserveringssysteem, genaamd amadeus. Als ik op het werk een voorstel moet maken dan zoek ik vluchten op en plak ze in een  mailbericht en daar doe ik dan de opmaak. Is het mogelijk om direct op die mail dit vb programma toe te passen? Ik dacht bijvoorbeeld om de op te maken vluchten te selecteren en dan alt + F8 en dan uitvoeren. Zou dit kunnen?
zowat alles kan,maar...het kan in outlook met vba, maar is niet zo eenvoudig
hoe kopieer je de data uit amadeus ?, en wat is amadeus, en waarom alt +F8 ?
ik denk zo dat het eenvoudigste systeem is, een apart program maken dat je kunt oproepen met een system-wide hotkey,dat de uit amadeus gekopieerde data uit het klembord haalt,die data converteerd,en de geconverteerde data terug op het klembord zet,en dan kan je die data gewoon in outlook plakken
of dat program kan die data rechtstreeks in outlook plakken op voorwaarde dat je cursor op de goede plaats staat in outlook
of wat nog gemakkelijker is:een progje maken waarin je de volledige email aanmaakt,en dat progje zend dan de geconverteerde email (eventueel via outlook)

Citeren

Ik denk dat dat reserveringssysteem geen database met alle luchthavencodes heeft, mss wel maar dan zijn we ook afhankelijk van dat systeem. Ik denk dat het toch beter is om die in een aparte tabel te zetten. maar zou dit ook in Excel kunnen, want access kunnen we niet gebruiken op het werk?
je kunt die tabel zetten waarin je maar wil,in excel of een tekst bestand of access...enz
maar in access of een andere database is de beste oplossing,omdat je in een database constraints kunt plaatsen op wat er in kan
en in excel of een tekstbestand is nogal fout gevoelig
en je hoeft access niet op je systeem te hebben om een access db te benaderen hoor

#10 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 20 juli 2010 - 19:44

ja je hebt gelijk, ik zie het resultaat in het debug venster. Mooi!

Het zou wel gemakkelijk zijn als je de tekst rechtstreeks uit het mailbericht kon halen.  ik heb een link gevonden die me op gedachten heeft gebracht, maar ik kan het zelf niet goed omzetten.

Ongeveer zoals het volgende :

Debug.Print Converteer("txt")
txt = GetFileContents(file_name)
en dan ook een private function GetFileContents
ongeveer zoals op deze link :
http://www.vb-helper...il_to_word.html

Maar natuurlijk is jouw idee ook knap : een hotkey die met het klembord werkt. Zou je dat kunnen maken?

Voor die codes heb je ook gelijk, een access bestand is veiliger. Nu nog de link leggen...

#11 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 20 juli 2010 - 21:42

Citeren

Het zou wel gemakkelijk zijn als je de tekst rechtstreeks uit het mailbericht kon halen
ja, dat kan ook:
start outlook, en kies een nieuw email bericht
zet de cursor in het body venster
selecteer in het menu Tools-Macro-Record new Macro
geef de macro een naam en hang hem aan een toetsenbord shortcut
het macro recorder venstertje zal verschijnen---kies stop recording
je hebt nu een nieuwe lege macro aangemaakt
terug Tools-Macro
kies de macro die je zojuist aangemaakt hebt en kies edit
plak volgende kode in de macro:
Visual Basic Code:
	Dim S As String
	Dim St() As String
	Set DataO = New MSForms.DataObject
	Selection.Copy
	DataO.GetFromClipboard
	S = DataO.GetText
	St = Split(S, vbCrLf)
	For i = 0 To UBound(St)
		St(i) = Converteer(St(i))
	Next
	S = Join(St, vbCrLf)
	Set DataO2 = New MSForms.DataObject
	DataO2.SetText S
	DataO2.PutInClipboard
	DataO2.GetFromClipboard
	Selection.Paste
	Selection.TypeParagraph


juist onder die code plak volgende kode: (dus onder end sub)
Visual Basic Code:
Private Function Converteer(ByVal TeConverteren As String) As String
	Dim Inkomend As String 'de genormaliseerde string (TeConverteren)
	Dim InkomendRev As String 'Inkomend achterstevoor
	Dim Uitgaand As String 'het resultaat
	Dim Vlucht As String
	Dim Datum As String
	Dim Vertrek_Bestemming As String
	Dim Vertrek_AankomstTijd As String
	
	Inkomend = Trim(TeConverteren)
	If Len(Inkomend) < 30 Then
	   Inkomend = String(30, "?")
	End If
	InkomendRev = StrReverse(Inkomend)
	Uitgaand = ""
	Vlucht = Mid(Inkomend, 3, 6)
	Datum = Mid(Inkomend, 12, 5)
	Vertrek_Bestemming = Mid(Inkomend, 20, 3) & "-" & Mid(Inkomend, 23, 3)
	Vertrek_AankomstTijd = Mid(InkomendRev, 11, 9)
	Mid(Vertrek_AankomstTijd, 5, 1) = "-"
	Vertrek_AankomstTijd = StrReverse(Vertrek_AankomstTijd)
	Uitgaand = Vlucht & "  " & Datum & "  " & Vertrek_Bestemming & "  " & Vertrek_AankomstTijd
	Converteer = Uitgaand
End Function

telkens je nu wat uit amadeus komt,in outlook plakt
selekteer je het geplakte opnieuw in outlook,en je roept de macro op (eventueel met via de shortcut)
that's it
edit:
als je mij op een of andere manier een lijstje met airport kodes/namen(tekstbestand,of excel laat toekomen,wil ik het wel in access zetten,en de kode aanpassen om van 'BRU'...enz 'BRUSSEL' te maken

#12 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 21 juli 2010 - 20:46

Bedankt deze code is geweldig!

ik stuur je nog in de bijlage de lijst met airport codes in excel formaat!

groeten,

#13 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 21 juli 2010 - 22:13

hieronder een lijstje met dubbels (IATA-Code) uit het excel bestand
dubbels zijn uiteraard niet toegestaan
gelieve de dubbels hier uit te halen en terug te sturen


IATA Airport
MEX Mexico City
MEX Mexico City
ORL Orlando Int'l Airport, FL
ORL Orlando Metropolitan Area, FL
RGN Rangoon (Yangon) - Mingaladon
RGN Yangon (Rangoon) - Mingaladon
SGN Saigon (Ho Chi Minh City)
SGN Ho Chi Minh City (Saigon)
SJD Los Cabos
SJD San Jose Cabo
SKG Thessaloniki
SKG Saloniki
STN London - Stansted
STN Stansted (London)
SUV Suva/Nausori
SUV Nausori
TFN Los Rodeos
TFN Tenerife - Norte Los Rodeos
TFS Tenerife - Sur Reina Sofia
TFS Reina Sofia
UVL New Valley - Kharga
UVL Kharga - New Valley

#14 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 22 juli 2010 - 20:53

Okee hier is de nieuwe lijst.

#15 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 23 juli 2010 - 16:15

er zitten nog steeds dubbels in, laat duidelijk zien, hoe fout gevoelig tabellen in excel wel zijn
IATA Airport
AHN Athens Georgia
AHN Athens, GA
EIS Tortola
EIS Beef Island
maar het was niet de bedoeling dat je een nieuw bestand stuurde hoor,gewoon zeggen welke van de dubbels weg mocht
heb daarom van EIS, maar Tortola Beef Islands gemaakt
en AHN Athens, GA maar weggelaten

in bijlage het access bestand dat nu gebruikt wordt
de nieuwe code die van dat bestand gebruik maakt:
Visual Basic Code:
Dim db As DAO.Database
Dim rs As DAO.Recordset

Sub Doehet()
	Dim S As String
	Dim St() As String
	'de database openen voor multiuser read only
	Set db = OpenDatabase("D:\Airports\Airports.mdb", False, True)
	Set rs = db.OpenRecordset("Airports", dbOpenTable)
	rs.Index = "IATA"
	Set DataO = New MSForms.DataObject
	Selection.Copy
	DataO.GetFromClipboard
	S = DataO.GetText
	St = Split(S, vbCrLf)
	For i = 0 To UBound(St)
		St(i) = Converteer(St(i))
	Next
	S = Join(St, vbCrLf)
	Set DataO2 = New MSForms.DataObject
	DataO2.SetText S
	DataO2.PutInClipboard
	DataO2.GetFromClipboard
	Selection.Paste
	Selection.TypeParagraph
	'de database/recordset sluiten
	rs.Close
	db.Close
	Set rs = Nothing
	Set db = Nothing
End Sub

Private Function Converteer(ByVal TeConverteren As String) As String
	Dim Inkomend As String 'de genormaliseerde string (TeConverteren)
	Dim InkomendRev As String 'Inkomend achterstevoor
	Dim Uitgaand As String 'het resultaat
	Dim Vlucht As String
	Dim Datum As String
	Dim Vertrek As String
	Dim Bestemming As String
	Dim Vertrek_AankomstTijd As String
	
	Inkomend = Trim(TeConverteren)
	If Len(Inkomend) < 30 Then
	   Inkomend = String(30, "?")
	End If
	InkomendRev = StrReverse(Inkomend)
	Uitgaand = ""
	Vlucht = Mid(Inkomend, 3, 6)
	Datum = Mid(Inkomend, 12, 5)
	Vertrek = Mid(Inkomend, 20, 3)
	rs.Seek "=", Vertrek
	If Not rs.NoMatch Then
	   Vertrek = rs!Airport
	End If
	Bestemming = Mid(Inkomend, 23, 3)
	rs.Seek "=", Bestemming
	If Not rs.NoMatch Then
	   Bestemming = rs!Airport
	End If
	Vertrek_AankomstTijd = Mid(InkomendRev, 11, 9)
	Mid(Vertrek_AankomstTijd, 5, 1) = "-"
	Vertrek_AankomstTijd = StrReverse(Vertrek_AankomstTijd)
	Uitgaand = Vlucht & "  " & Datum & "  " & Vertrek & "-" & Bestemming & "  " & Vertrek_AankomstTijd
	Converteer = Uitgaand
End Function

niet vergeten een referencie naar de dao 3.6 library te zetten

het bestand in bijlage heeft de extensie 'zip' maar het is geen zip bestand, gewoon de extensie van 'zip' in 'mdb' veranderen
(mdb is hier niet toegelaten)

#16 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 23 juli 2010 - 20:45

He Jenny, dit is fantastisch! wat een code!
Ik heb de DAO db 3.6 kunnen linken. Dat zit goed.
Toch nog een klein dingetje. Bij het runnen loopt het programma vast op Selection.Copy. Met het bericht : Fout 424 tijdens uitvoering : Object vereist.
Zou die de geselecteerde string/tekst in het mailbericht niet detecteren? Heb jij dit ook?  Groetjes

#17 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 23 juli 2010 - 21:56

nee,hier werkt het perfect
probeer eens met application.selection.copy inplaats van selection.copy
werkte de oude code (voor de laatste versie) goed ?
zet in het debug venster eens:
msgbox application.name
wat is het resultaat ?
is er in de configuratie van outlook iets veranderd ?
start word eens op, staat daar ergens dezelfde code ?
indien ja, werkt het in word ?
dit is gemaakt in outlook 2003
als je in het hoofdvenster van outlook via menu-Tools-Macro, zie je dan record new macro ?

#18 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 25 juli 2010 - 16:27

Ik kan het niet doen werken, echt spijtig, misschien omdat ik office 2007 heb. Ik heb het geprobeerd met Application.Selection.Copy, ik heb het ook in word getest. Eerst macro's ingeschakeld  in het 'vertrouwenscentrum', Maar het programma liep ook niet. In word kan ik wel een knop maken of een hotkey op het toestenbord. Die optie kon ik niet vinden in outlook. Het menu in outlook is precies wel anderes in 2007, Ik moet in het menu naar Extra - Macro's - Macros en dan krijg ik een scherm met verschillende knoppen, Maken - Bewerken - Uitvoeren - Annuleren.
Ook in de vorige versie voor het toevoegen van de database verwijzing, liep het al vast. In Word zegt het systeem bij de code Set DataO = New MSForms.DataObject : Een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd.

#19 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 26 juli 2010 - 17:27

Ik denk dat ik het probleem gevonden heb. Outlook 2003 werkt anders dan 2007. Kijk maar naar de volgende link :

http://turtleflock-o...9E3D8!579.entry

en de theorie daarvoor :

http://msdn.microsof...y/dd492012.aspx

#20 Jenny

Jenny

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 558 berichten
    Laatst bezocht 02 apr 2017 22:13

Geplaatst op 26 juli 2010 - 18:18

hier de code voor outlook 2007
Visual Basic Code:
Dim DataO As MSForms.DataObject
Dim db As DAO.Database
Dim rs As DAO.Recordset

Sub Doehet()
	Dim S As String
	Dim St() As String
	'de database openen voor multiuser read only
	Set db = OpenDatabase("D:\Airports\Airports.mdb", False, True)
	Set rs = db.OpenRecordset("Airports", dbOpenTable)
	rs.Index = "IATA"
	Set DataO = New MSForms.DataObject
	DataO.GetFromClipboard
	S = DataO.GetText
	St = Split(S, vbCrLf)
	For i = 0 To UBound(St)
		St(i) = Converteer(St(i))
	Next
	S = Join(St, vbCrLf)
	DataO.SetText S
	DataO.PutInClipboard
	rs.Close
	db.Close
	Set rs = Nothing
	Set db = Nothing
End Sub

de converteer functie blijft hetzelfde
niet vergeten een referentie naar microsoft forms2 object library
hoe werkt het ?
kopieer de tekst in amadeus
run de doehet sub
plaats de caret in de body waar je het geconverteerde wil
druk op Ctrl V
that's it

#21 Danny80

Danny80

    Starting Developer

  • Leden
  • 11 berichten
    Laatst bezocht 26 jul 2010 17:27

Geplaatst op 26 juli 2010 - 20:11

Het werkt!!! Jenny, je bent een genie !!!





Ook met taq vb, mail, format voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)