/ Forside/ Teknologi / Udvikling / VB/Basic / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Brugerdata fra Exchange > Word
Fra : El_Skaarup
Vist : 520 gange
40 point
Dato : 06-02-06 16:36

Jeg er ved, at lave en word skabelon til et brev.

Men vil gerne have at den kan 2 ting.

Den første har jeg ikke helt lagt mig selv fast på. Enten skal skabelonen selv finde brugeren ud fra login, eller også skal brugerne fremkomme i en drop-down menu, og så kan vedkommende så selv finde sig selv. PT hælder jeg mest til det sidste med drop-down, så skal den bare selv finde brugerne også.

Den anden ting. Jeg vil gerne have at brugerdata kan trækkes ud fra Exchange-serveren. Man kan jo skrive en brugers telefonnr, adresse o.l., og det vil jeg gerne have ud og ind i et word dokument.

Men hvordan?

Har desværre ikke flere point, ville ellers gerne have givet mere.

 
 
Kommentar
Fra : berpox


Dato : 06-02-06 17:59

Kode
'Du skal have tilføjet reference til "Windows Script Host Object Model" før koden virker.
'Tools -> References -> hak af ud for ovenstående.
'For at gøre brug af Outlook's funktioner (exchange) skal du også have refence til
'"Microsoft Outlook <x.x> Object Library" <x.x> er afhængig af din outlook version...

Option Explicit
Dim Network As IWshRuntimeLibrary.WshNetwork
Dim strUserName As String

Sub GetCurrentUsername()

Set Network = New IWshRuntimeLibrary.WshNetwork
strUserName = Network.UserName
Debug.Print Network.UserName()
End Sub

'Med F2 kan du i Object Browseren se hvilke muligheder du har for at finde data i Outlook.
'Og så er det ellers bare med at kode derudaf :-)



mvh berpox

Kommentar
Fra : berpox


Dato : 06-02-06 20:15
Kommentar
Fra : El_Skaarup


Dato : 06-02-06 23:28

Jeg har rodet noget rundt med noget kode fra msdn (godt nok ikke lige det du linker til), men det hentede kun kontaktpersonerne i clientens outlook og ikke fra serveren.

Kommentar
Fra : berpox


Dato : 06-02-06 23:46

Hmmm..... ja, det kan godt være. Men i bund og grund, er det vel også det du skal bruge, idet det er klientens retmæsige adgang til data på exchangeserveren du skal gøre brug af.

Ellers skal du helt over i noget med at trække data ud fra exchange databasen, som kan lade sig gøre via kald til SQL.

Det har jeg dog slet ikke selv afprøvet - men prøv at kigge nærmere på disse link:
http://www.outlookexchange.com/articles/glenscales/sqlexch.asp
http://www.outlookcode.com/d/database.htm

mvh berpox

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 08:11

Jeg har endnu ikke kigget på dine seneste links.

Men som jeg ser problemstillingen, så skal jeg ikke bruge noget med klientens adgang til exchange-serveren. Jeg skal bare have fat i de kontaktpersoner, der er oprettet på serveren. Så vil listen nemlig være ens for alle.

Laver klienten så nogle nye kontaktpersoner, så bliver de oprettet lokalt, og derfor vil brugerne ikke kunne se den samme liste.

Meningen er, at det skal bruges til at auto-udfylde en afsender af f.eks. et brev, og da enkelte godt kan blive sat til at skrive et brev for en anden, så skal der være mulighed for at vælge alle i f.eks. en drop-down. Når dette så er gjort, skal kontaktinfo. tilknyttet det valgte person, så hente for senere at bliver lagt over i Word skabelonen.

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 11:06

Citat
'Med F2 kan du i Object Browseren se hvilke muligheder du har for at finde data i Outlook.
'Og så er det ellers bare med at kode derudaf :-)


Hvordan kan jeg se hvilke der specifikt høre til Outlook delen eventuelt også Exchange?

Kommentar
Fra : berpox


Dato : 07-02-06 11:45

Når du har trykket F2, så skulle du gerne kunne se en rude hvor der står <All Libraries>

Hvis du dér vælger "Outlook" så får du de tilhørende objekter.

Ruden under denne, er et søgefelt - indtast f.eks. "recipi" og tryk [ENTER] eller "kikkerten"....

Exchange API'er finder du dér hvor exchange afvikles.

Det er derfor jeg antager, at du er nødt til at gå via Outlook's API for at få fat i Exchangeserverens indhold. Om det er muligt at lave en reference til et modul på serveren ved jeg ikke.

/berpox


Kommentar
Fra : berpox


Dato : 07-02-06 11:47

Men - jeg er lige ved at tro, at det er nemmere, at skabe et nyt worddokument med indlejrede oplysninger indefra Outlook...

Har du tænkt den vej rundt?

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 15:22

Citat
Når du har trykket F2, så skulle du gerne kunne se en rude hvor der står <All Libraries>

Hvis du dér vælger "Outlook" så får du de tilhørende objekter.

Ruden under denne, er et søgefelt - indtast f.eks. "recipi" og tryk [ENTER] eller "kikkerten"....


Så er det derfor jeg ikke kan finde den, her nemlig ingen som hedder Outlook

Citat
Men - jeg er lige ved at tro, at det er nemmere, at skabe et nyt worddokument med indlejrede oplysninger indefra Outlook


Indlejrede? Fordel og hvordan gøres det?

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 15:32

Glem den første bemærkning. Jeg havde set forkert og havde kun Microsoft Office <x.x> Object Library" <x.x> slået til og ikke Outlooks.

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 15:35

<offtopic>
Den jeg har lavet, som hiver fat i klientens kontaktpersoner. Den løber jo ind i det problem, at Outlooks sikkerhed er hævet. Så nu skal man give tilgang i x antal minutter, og udløber denne skal man gøre det igen, når man vil tilgå Outlook. Kan dette ikke undgåes, på en eller anden måde?
</offtopic>

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 16:26

Øn, er der ikke en side eller en bog, man kan bruge til at finde noget ordentligt information om hvad de forskellige kommandoer gør?

Jeg tænker her på noget lignede php.net, hvor der er en rimelig forklaring og måske også nogle eksempel fra andre brugere.

Jeg kan bl.a. se at jeg kan bruge en funktion der hedder olUser, men hvad den gør og hvordan den bruges, kan jeg ikke udmiddelbart finde.

Kommentar
Fra : berpox


Dato : 07-02-06 21:47

Indlejrede oplysninger.....

Jeg mener bare, at jeg forestiller mig følgende scenarie:

1) Indefra Outlook vælges en kontaktperson i adressekartoteket
2) Derefter aktiveres en "knap" der afvikler en makro der åbner et nyt worddokument.
3) Worddokumentet baseret på en skabelon har diverse bogmærker.
4) Outlook-macroen sørger for, at worddokumentet udfyldes med de rigtige oplysninger, og Word tildeles fokus herefter. Nu kan du så arbejde videre herfra.

- på denne måde HAR du på forhånd udvalgt modtageren (din "Selection") og kan udfra denne trække oplysningerne ud, og smække dem over i Word.



Kommentar
Fra : berpox


Dato : 07-02-06 21:48

Så vidt jeg ved, nej, ingen bøger specifikt om dette.

Den bedste "hjælp" er din sunde fornuft, erfaring og kvalificerede gæt, sammen med early binding, option explicit og "in context" hjælpen der dukker op når du skriver din kode....
Når du har reference til outlook library, så fungerer API/VBA hjælpen også til dette.

Nu er jeg godt igang med at fylde link's på dig, så måske der er noget at hente her:
http://www.microsoft.com/downloads/details.aspx?familyid=135f4d99-f480-4a81-af8f-f6e4896611e2&displaylang=en

mvh berpox

Kommentar
Fra : El_Skaarup


Dato : 07-02-06 22:14

Citat
1) Indefra Outlook vælges en kontaktperson i adressekartoteket
2) Derefter aktiveres en "knap" der afvikler en makro der åbner et nyt worddokument.
3) Worddokumentet baseret på en skabelon har diverse bogmærker.
4) Outlook-macroen sørger for, at worddokumentet udfyldes med de rigtige oplysninger, og Word tildeles fokus herefter. Nu kan du så arbejde videre herfra.

- på denne måde HAR du på forhånd udvalgt modtageren (din "Selection") og kan udfra denne trække oplysningerne ud, og smække dem over i Word.


Jeg tro vi snakker lidt forbi hinanden.

Jeg har fået lavet en makro som direkte fra Word, kan hente f.eks. modtageroplysninger. Desværre beder Outlooks sikkerhed mig om at åbne hver gang, ikke optimalt.

Det jeg har brug for at adgang Exchange serverens user infomationer, og dem har jeg ikke adgang til fra Outlook adresse kartotek.

Som jeg har skrevet tidligere, så er det til at kunne vælge AFSENDER af et brev. Jeg kunne eventuelt lave en database til dette, men come on, kunne man få fat i de oplysninger som i forvejen ligger i Exchange, så ville det være meget lettere administrationmæssigt.

Kommentar
Fra : berpox


Dato : 08-02-06 19:48

Når din forbindelse til Exchange ryger med jævne mellemrum, så er det fordi det er en database du snakker med.

For at kunne manipulere med data i databasen vil jeg mene, at brugeren skal have administratorrettigheder i exchangedatabasen for at kunne gennemføre transaktioner der ligger ud over hvad outlook klienten giver mulighed for.

Det er muligt at denne artikel kan lede dig på sporet:
http://msdn.microsoft.com/msdnmag/issues/02/01/OutlookSQL/

Jeg står af her - det er noget langhåret noget du har fat i, og jeg tvivler meget stærkt på at der er nemme løsninger på din opgave.

Måske du alligevel kan bruge modellen: (let omskrevet)
1) Indefra Outlook vælges en kontaktperson i adressekartoteket
2) Derefter aktiveres en "knap" der afvikler en makro der åbner et nyt worddokument.
3) Worddokumentet baseret på en skabelon har diverse bogmærker.
4) Outlook-macroen sørger for, at worddokumentet udfyldes med de rigtige oplysninger, og Word tildeles fokus herefter. Nu kan du så arbejde videre herfra.

- på denne måde HAR du på forhånd udvalgt AFSENDEREN (din "Selection") og kan udfra denne trække oplysningerne ud, og smække dem over i Word.

Problemet med at exchange lukker af, er en hard-coded timeout. Der er en maksimal tid til at gennemføre transaktioner i databasen. (det er i alle tilfælde sådan jeg har forstået at exchange hænger sammen)

mvh berpox

Kommentar
Fra : El_Skaarup


Dato : 08-02-06 20:06

Jeg kan stadig bare ikke rigtigt se, hvordan jeg har udvalgt afsenderen. Nu kender jeg godt nok ikke VBA så meget, men det eneste jeg lige kunne få frem om brugeren der var logget ind, var brugernavnet og da vi bruger initialer der, så holder det ikke.

Så hvis du gider at skære det ud i pap, please

Kommentar
Fra : berpox


Dato : 09-02-06 02:16

1) Åbn Outlook.
2) Opret en Userform1
3) Opret 2 knapper, med navnene cmdCreateLetter / caption "Opret Brev" samt
cmdCancel / caption "Afbryd"
4) Kopiér nedenstående kode ind i kildekoden for userform1

Kode
Option Explicit

Dim objApp As Outlook.Application
Dim objSel As Outlook.Selection
Dim objItem As Outlook.ContactItem
Dim MyItem As Outlook.ContactItem

Private Sub cmdCancel_Click()
Unload UserForm1
End
End Sub

Private Sub cmdCreateLetter_Click()
GetCurrentItem 'Call function
CreateNewWordDoc
End Sub

Function GetCurrentItem() As Object

Set objApp = CreateObject("Outlook.Application")

Select Case objApp.ActiveWindow.Class
Case olExplorer
Set objSel = objApp.ActiveExplorer.Selection
If objSel.Count > 0 Then
Set objItem = objSel.Item(1)
Set MyItem = objApp.ActiveExplorer.Selection.Item(1)
'Debug.Print MyItem.FullName
'Debug.Print MyItem.HomeTelephoneNumber
'Debug.Print MyItem.HomeAddress

MsgBox (MyItem.FullName & vbNewLine & MyItem.HomeTelephoneNumber & vbNewLine & MyItem.HomeAddress)
End If
Case Else
' can't handle any other kind of window
End Select

Set GetCurrentItem = objItem
Set objItem = Nothing
Set objSel = Nothing
Set objApp = Nothing

End Function
Sub CreateNewWordDoc()
' add a reference to the Word-library
' create a new folder named C:\Foldername or edit the filnames in the code
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim i As Integer
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
'Set wrdDoc = wrdApp.Documents.Add ' create a new document
' or
Set wrdDoc = wrdApp.Documents.Open("C:\Template.dot")
' open an existing document

With wrdDoc

.Content.InsertAfter "Til"
.Content.InsertParagraphAfter
.Content.InsertAfter MyItem.FullName
.Content.InsertParagraphAfter
.Content.InsertAfter MyItem.HomeAddress
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter

For i = 1 To 25
.Content.InsertAfter "Eksempeltekst linie #" & i
.Content.InsertParagraphAfter
Next i
'If Dir("C:\Foldername\MyNewWordDoc.doc") <> "" Then
' Kill "C:\Foldername\MyNewWordDoc.doc"
'End If
'.SaveAs ("C:\Foldername\MyNewWordDoc.doc")
'.Close ' close the document
End With

'wrdApp.Quit ' close the Word application
'Set wrdDoc = Nothing
'Set wrdApp = Nothing
End Sub

Private Sub UserForm_Click()

End Sub


5) Opret en Sub Main() i modulet "DenneOutlookSession" med flg. indhold:

Kode
Sub main()
UserForm1.Show
End Sub


6) Udpeg en adresse i kontaktpersoner i Outlook , og tryk på knappen du lige lavede.
Tryk på knappen [Opret brev med denne afsender]
Der kommer lige en messagebox op først med Navn og Adresse på den du har valgt (hjemmeadresse i dette tilfælde!)
Klik på [OK]
Og så oprettes der et worddokument på baggrund af en skabelon jeg har kaldt c:\template.dot

I dette tilfælde har jeg sat navn og adresse ind øverst i dokumentet, men du kan jo placere det som du vil.

Håber dette er brugbart og skåret nok ud i pap


mvh berpox

Kommentar
Fra : berpox


Dato : 09-02-06 02:21

Du får altså ikke lokket mig til at bevæge mig ud i SQL sætninger også, det si'r jeg dig bare



mvh berpox

Kommentar
Fra : El_Skaarup


Dato : 09-02-06 10:21

, kigger lige på koden. SQL der kan jeg måske selv finde ud af noget, mit problem er pt. bare at jeg ikke ved hvordan dælen jeg kan får tilgang til User Info i Exchange, hvis man overhovedet kan det.

Måske er det kun Microsoft selv, som har adgang hertil når man skriver en ny mail

Kommentar
Fra : El_Skaarup


Dato : 09-02-06 11:07

Jeg får en fejl i CreateNewWordDoc() i linien Dim wrdApp As Word.Application

Kommentar
Fra : El_Skaarup


Dato : 09-02-06 11:11

Den siger at typen ikke er defineret

Kommentar
Fra : berpox


Dato : 09-02-06 11:47

Har du tilføjet reference til "Word-library" ?

Den hedder Microsoft Word <x.x> Object Library ... ellers kan man jo ikke forbinde til word

mvh berpox

Kommentar
Fra : El_Skaarup


Dato : 09-02-06 11:55

Nej ,det havde jeg ikke, kom i tanke om det samtidig som jeg så du havde lagt et indlæg.

Desværre gør den ikke det jeg gerne vil have.

Det indsætter modtageren af brevet, og det er jo afsenderen jeg skal have fat i.

Derudover kan jeg ikke under kontaktpersoner se, de personer som kommer via Exchange. Kontaktpersoner viser jo kun de personer som klienten har lagt ind.

Kommentar
Fra : berpox


Dato : 09-02-06 13:05

Altså - istedet for at vælge modtageren i "kontaktpersoner" - så kan man jo vælge sig selv i stedet.

Og mon ikke det kan lade sig gører udfra login-name at finde og selecte sig selv vha. macroen?

Kommentar
Fra : berpox


Dato : 09-02-06 13:09

Nej - kontaktpersoner viser skam også de adresser der er "globalt" på serveren!

Hvis ikke - så er det din opsætning den er gal med! Eller serverens.

/berpox

Kommentar
Fra : berpox


Dato : 24-02-06 19:01

Hej! Jeg faldt lige over denne - måske der er noget at hente her.....
http://www.independentsoft.de/webdavex/index.html

/berpox

Kommentar
Fra : El_Skaarup


Dato : 04-07-06 12:04

Jeg har nu fået hjælp til det fra en konsulentfirma

Annuller spørgsmålet
Fra : El_Skaarup


Dato : 04-07-06 12:04

Jeg har fået hjælp til det fra en konsulentfirma

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177433
Tips : 31962
Nyheder : 719565
Indlæg : 6407973
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste