gibt es eine Möglichkeit, per VBA eine Zeile aus einem Arbeitsblatt bei
Shortcut oder Anklicken als Termin in den Outlook-Kalender zu schieben?
Vielen Dank für Eure Antwort im voraus.
Gruß Ingrid
wenn Du mir eine kleine Demomappe mailst, dann programmier ich dir das
gerne.
held-...@t-online.de
Viele Grüße
Bernd
MVP für Microsoft Excel
VBA-Bücher mit Leseproben(PDF) und Schulungen
unter http://held-office.de
"Ingrid Reske" <i...@msc.de> schrieb im Newsbeitrag
news:cmaq2l...@news.msc-ge.com...
Bernd Held schrieb am 03.11.2004
> wenn Du mir eine kleine Demomappe mailst, dann programmier ich dir das
> gerne.
Also ich denke, dass Fragen, die hier in der NG gestellt werden auch hier
in der NG beantwortet werden sollten....
...zumindest wäre es schön, nach erfolgter Impementierung hier den Code
(wenn vielleicht auch verallgemeinert) zu posten.
--
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -
[Win XP Pro SP-1 / xl2000 SP-3]
Ich benötige die Demodatei, damit ich in etwa weiß wie ich vorgehen soll.
Leider habe ich keine fertige Lösung parat, die ich hier präsentieren
könnte.
Eine Vorstellung der Lösung würde ich selbstverständlich ins Forum stellen,
keine Frage
Gruß
Bernd
"Thomas Ramel" <t.r...@MVPs.org> schrieb im Newsbeitrag
news:1xr0fw5x28ira.1aw77ttcgyb93$.dlg@40tude.net...
Thomas Ramel schrieb:
>
> ...zumindest wäre es schön, nach erfolgter Impementierung hier den
> Code (wenn vielleicht auch verallgemeinert) zu posten.
gebe ich dir uneingeschränkt Recht.
Also für Alle:
(Der Code stammt von Kieseler, zu finden unter www.kieseler.de)
Es handelt sich um eine Access-Datenbank.
1) Hier der Code für einen Termin:
(Die Feldbezeichungen sind einfach durch die Zellen zu ersetzen und das
alles in einem Modul untergebracht)
'Set objOutlook = CreateObject("Outlook.Application")
'Set itm = objOutlook.CreateItem(olAppointmentItem)
'itm.Start = "6/1/98 10:00 AM"
'itm.Duration = 2400
'itm.Subject = "Review monthly budget"
'itm.Display
Dim objOutlook As Outlook.Application
Dim apptOutlook As Outlook.AppointmentItem
Set objOutlook = CreateObject("Outlook.Application")
Set apptOutlook = objOutlook.CreateItem(olAppointmentItem)
Dim Betreff1 'Betreff
Dim Text1 'Notizen zum Termin
Dim Termin 'Fälligkeit des Termines
Dim ZeitT 'Zeit des Termines
Dim Anm 'Kommentar zu Feld Notizen hinzufügen
Dim AnmDate 'Datum der Versendung an Outlook
Dim Kat 'Kategorie des Termines
Dim RemDate 'Erinnerungsdatum
AnmDate = Now()
'Zuerst prüfen, ob der Notizentext leer ist
If Len(Trim(Nz([Notes]))) = 0 Then
' Feld ist leer
Beep
MsgBox "Bitte geben Sie einen Text in das Notizenfeld ein!" & vbCrLf
& vbCrLf _
& "Führen Sie dann die Aktion erneut aus!", vbCritical, "Keine
Notizen!"
Me.Notes.SetFocus 'Focus auf das Notizenfeld
Exit Sub 'Prozedur beenden
Else
' Feld enthält Daten
'Notizbereich (Body) des Termines zusammenstellen
Text1 = Me.Notes.Value & vbCrLf _
& "Der Besuch war am: " & Me.Datum.Value & " um: " &
Me.CustomerStart & " Uhr" _
& vbCrLf & "(Von Access empfangen! " & AnmDate & " Uhr)"
End If
'Jetzt geht's ab zu Outlook
With apptOutlook
'entweder mit Datum und Zeit des Termines
'Fälligkeit auslesen (Format: "TT/MM/JJ hh:mm" z.B.: "24/12/98
18:00")
Termin = Me.OL98Dat.Value
ZeitT = Me.CustomerStart.Value
.Start = Termin & " " & ZeitT
'Länge des Termines in Minuten, wenn nicht AllDayEvent
.Duration = 30
'Erinnerung vor dem Termin in Minuten
'.ReminderSet = True
.ReminderMinutesBeforeStart = 20
'oder Ganztägiges Ereignis
'.AllDayEvent = True
'Betreff, Notzibereich und Ort des Termines
Betreff1 = Me.Customer.Value
.Subject = Betreff1
.Body = Text1
.Location = "Test"
'Asisstenten, die dabei sein sollen
'.RequiredAttendees = "Ernst Test;Franz Beispiel"
'Kategorie setzen
.Categories = "Test"
'möglich wäre hier auch die Werteübernahme aus dem aktuellen
Form
'Kat = Me.Category.Value
'.Categories = Kat
'Hier können Sie wählen, ob Anzeigen oder Speichern oder beides
'.Save
.Display
End With
'+++Fertig mit Outlook
'Das Feld Notizen um den Eintrag "(*** Als Outlook-Termin versendet!
***)" erweitern
Anm = Me.Notes.Value & vbCrLf _
& "(=> OL 2000! " & AnmDate & " Uhr)"
Me.Notes.Value = Anm
Set apptOutlook = Nothing
Set objOutlook = Nothing
Fehler_3163_Msg:
'Fehler bei zu vielen Zeichen im Textfeld
If Err = 3163 Then
Beep
MsgBox "Das Feld Notizen hat schon zu viele Zeichen!" & vbCrLf _
& "Es konnte kein Outlook-Versendehinweis eingetragen werden" &
vbCrLf & vbCrLf _
& "Die Aufgabe wurde trotzdem ordnungsgemäß nach Outlook
versendet!", vbCritical, "Problem!"
End If
2) Hier der Code für eine Aufgabe:
(Felder einfach durch Excel-Zellen austauschen)
'Fehler entsteht, wenn Textfeld Notizen zu klein ist,
'um die zusätzliche Versendungs-Info aufzunehmen
On Error GoTo Fehler_3163_Msg
'++++++++Die Wiedervorlage als *Aufgabe* zu Outlook 98 hinzufügen
Dim Betreff1 'Betreff
Dim Text1 'Notizen zur Aufgabe
Dim Termin 'Fälligkeit der Aufgabe
Dim ZeitT 'Zeitpunkt Aufgabe
Dim RT 'Reminder Datum + Zeit
Dim Anm 'Kommentar zu Feld Notizen hinzufügen
Dim AnmDate 'Datum der Versendung an Outlook
AnmDate = Now()
'Prüfen, ob ein Kunde eingetragen ist
If Len(Trim(Nz([Customer]))) = 0 Then
Beep
MsgBox "Kein Kunde!", vbCritical, "Problem"
Me.Customer.SetFocus
Exit Sub
Else
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End If
'Dann prüfen, ob der Notizentext leer ist
If Len(Trim(Nz([Notes]))) = 0 Then
' Feld ist leer
Beep
MsgBox "Bitte geben Sie einen Text in das Notizenfeld ein!" & vbCrLf
& vbCrLf _
& "Führen Sie dann die Aktion erneut aus!", vbCritical, "Keine
Notizen!"
Me.Notes.SetFocus 'Focus auf das Notizenfeld
Exit Sub 'Prozedur beenden
Else
' Feld enthält Daten
'Variable für Betreff auslesen
Betreff1 = Me.Customer.Value
'Notizbereich (Body) der Aufgabe zusammenstellen
Text1 = Me.Notes.Value & vbCrLf _
& "Der Besuch war am: " & Me.Datum.Value & " um: " &
Me.CustomerStart & " Uhr" _
& vbCrLf & "(Von Access empfangen! " & AnmDate & " Uhr)"
'Erinnerungsdatum auslesen
'RemDate = Me.RetryDate
End If
'-----------------------------------------------------------------------
'Und ab geht's zu OL98
Dim appOutLook As Outlook.Application
Dim taskOutLook As Outlook.TaskItem
Set appOutLook = CreateObject("Outlook.Application")
Set taskOutLook = appOutLook.CreateItem(olTaskItem)
With taskOutLook
'Betreff und Body der Aufgabe
.Subject = Betreff1 'Betreff setzen
.Body = Text1 'Body setzen
'Die beiden Variablen festlegen
Termin = Me.OL98Dat.Value
ZeitT = Me.CustomerStart.Value
'Fälligkeitsdatum setzen, Wichtig: Halten Sie diese Reihenfolge ein
'Erst die Fälligkeit und den Beginn,
'erst dann Erinnerungszeit setzen
.DueDate = Termin 'Fällig am
.StartDate = Termin 'Beginnt am
'Erinnerungszeit setzen
'.ReminderOverrideDefault = True 'Nur, falls User in OL Unsinn
eingestellt hat
'(3 Vorschläge für Setzen der Erinnerung)
.ReminderTime = Termin & " 10:00" 'Datum aus Formular - Zeit
fest
'.ReminderTime = Termin & " " & ZeitT 'Datum und Zeit aus
Access-Formular
'.ReminderTime = DateAdd("h", 1, Now)
'.ReminderSet = True 'Reminder einschalten
.ReminderPlaySound = True
'Pfad zu einer .wav Datei
'.ReminderSoundFile = "C:\Windows\Media\Ding.WAV"
If Len(Trim(Nz([Category]))) = 0 Then
Beep
MsgBox "Keine Kategorie!", vbCritical, "Problem!"
Me.Category.SetFocus
Exit Sub
Else
.Categories = Me.Category.Value
End If
'Entweder Sichern oder Anzeigen
'.Save
.Display
End With
'Das Feld Notizen um den Eintrag "(*** Als Outlook-Aufgabe
versendet! ***)" erweitern
Anm = Me.Notes.Value & vbCrLf _
& "(=> OL 2000! " & AnmDate & " Uhr)"
Me.Notes.Value = Anm
Set taskOutLook = Nothing
Set appOutLook = Nothing
Fehler_3163_Msg:
'Fehler bei zu vielen Zeichen im Textfeld
If Err = 3163 Then
Beep
MsgBox "Das Feld Notizen hat schon zu viele Zeichen!" & vbCrLf _
& "Es konnte kein Outlook-Versendehinweis eingetragen werden" &
vbCrLf & vbCrLf _
& "Die Aufgabe wurde trotzdem ordnungsgemäß nach Outlook
versendet!", vbCritical, "Problem!"
End If
###########
Den Code funktioniert sogar mit OL 2003. Das umarbeiten müssen andere
machen.
Gruß Ahmed
--
Antworten bitte nur in der Newsgroup.
anbei die folgende Lösung, ausgehend dass in Spalte A das Datum, in Spalte B
ein Text sowie in spalte C eine Uhrzeit steht.
Sub TerminUebertragen()
Dim intz As Integer
Dim objOutlook As Outlook.Application
Dim apptOutlook As Outlook.AppointmentItem
Set objOutlook = CreateObject("Outlook.Application")
For intz = 2 To ActiveSheet.UsedRange.Rows.Count
Set apptOutlook = objOutlook.CreateItem(olAppointmentItem)
With apptOutlook
.Subject = "[Eintrag aus Excel: " & _
Cells(intz, 2).Value & "]"
.Body = Cells(intz, 2).Value
.Start = Cells(intz, 3).Value
.AllDayEvent = False
.ReminderSet = False
.Save
End With
Next intz
End Sub
Viele Grüße
Bernd
Bernd Held schrieb am 03.11.2004
> Ich benötige die Demodatei, damit ich in etwa weiß wie ich vorgehen soll.
Wenns individuell sein soll, ist dies klar.
> Leider habe ich keine fertige Lösung parat, die ich hier präsentieren
> könnte.
> Eine Vorstellung der Lösung würde ich selbstverständlich ins Forum stellen,
> keine Frage
Fein, dann sprechen wir dieselbe Sprache :-)
Bernd Held:
> Dim intz As Integer
Mein üblicher Integer-Hinweis: Long statt Integer.
Letzteres ist seit dem 486er obsolet, da Integers für den
Prozessor sowieso in Long hochgerechnet werden müssen und
hinterher wieder runter. Man tut mit Integer also im
Gegensatz zu früher kein gutes Werk mehr. (Es ist
allerdings auch keine Katastrophe.)
> For intz = 2 To ActiveSheet.UsedRange.Rows.Count
...
> Next intz
Unter Performance-Aspekten sehr schlechtes Konstrukt,
da ActiveSheet.UsedRange.Rows.Count in jedem
Schleifendurchlauf wieder bestimmt wird.
Viel besser:
Dim i as Long, n as long
n = ActiveSheet.UsedRange.Rows.Count
For i = 1 To n
...
Next i
Grundregel: Werte oder Objekte, die mehrfach verwendet
werden, Variablen zuweisen.
Gruß aus Mainz
Michael
wenn es interessiert, hier nun die Lösung:
"Thomas Ramel" <t.r...@MVPs.org> schrieb im Newsbeitrag
news:71gdvi4gj3vd.yhadm8nz9fb7$.dlg@40tude.net...
Sub TermineUebertragen()
Dim intz As Integer
Dim intMAx As Integer
Dim intT As Integer
Dim objOutlook As Outlook.Application
Dim apptOutlook As Outlook.AppointmentItem
intT = 0
Set objOutlook = CreateObject("Outlook.Application")
intMAx = ActiveSheet.UsedRange.Rows.Count
For intz = 2 To intMAx
If Cells(intz, 7).Value = "X" Then
Set apptOutlook = objOutlook.CreateItem(olAppointmentItem)
With apptOutlook
.Subject = "[" & Cells(intz, 2).Value & "]"
.Body = Cells(intz, 2).Value & vbLf & _
Cells(intz, 1).Value & vbLf & _
Cells(intz, 3).Value & vbLf & _
Cells(intz, 4).Value & vbLf & _
Cells(intz, 6).Value
.Start = Cells(intz, 5).Value
.AllDayEvent = True
.ReminderSet = False
.Save
intT = intT + 1
End With
End If
Next intz
MsgBox "Es wurden " & intT & " Termine übertragen!"
End Sub
Sub OutlookKalenderBereinigen()
Dim appOutlook As Outlook.Application
Dim aptAppointment As Outlook.AppointmentItem
Dim folAppointment As Outlook.MAPIFolder
Dim itmAppointments As Outlook.Items
Dim nspOutlookNameSpace As Outlook.Namespace
Dim lngCount As Long
Dim lngIndex As Long
On Error Resume Next
Set appOutlook = New Outlook.Application
If Err.Number = 0 Then
Set nspOutlookNameSpace = appOutlook.GetNamespace("MAPI")
Set folAppointment = nspOutlookNameSpace.GetDefaultFolder(olFolderCalendar)
Set itmAppointments = folAppointment.Items
lngCount = itmAppointments.Count
For lngIndex = lngCount To 1 Step -1
On Error Resume Next
If Left(itmAppointments(lngIndex).Subject, 1) = "[" Then
itmAppointments(lngIndex).Delete
If Err.Number = 0 Then
End If
Next
Else
With Err
MsgBox "Error " & .Number & vbCr & vbCr & .Description, vbCritical +
vbOKOnly, _
"Die Outlook-sitzung kann nicht gestartet werden"
End With
End If
MsgBox "Die Excel-Termine wurden aus dem Outlook-Kalender wieder entfernt!"
"Michael Zimmermann" schrieb:
> > For intz = 2 To ActiveSheet.UsedRange.Rows.Count
> ...
> > Next intz
>
> Unter Performance-Aspekten sehr schlechtes Konstrukt,
> da ActiveSheet.UsedRange.Rows.Count in jedem
> Schleifendurchlauf wieder bestimmt wird.
wie kommst du denn nur auf so etwas?
Probier es doch aus, es wird nur ein einziges mal berechnet!
Sub testForNext()
Dim lngMaxDurchläufe As Long
Dim i As Long
lngMaxDurchläufe = 100000
For i = 1 To lngMaxDurchläufe * 1
lngMaxDurchläufe = 10
Next
MsgBox i - 1
End Sub
Wenn deine Aussage stimmen würde, müsste 10 ausgegeben werden,
tatsächlich wird 100000 ausgegeben.
Auch wenn man den Zeitbedarf einer solchen Schleife mit einem Festwert
als >>Ende<< und einer Zeitaufwendigen Berechnung als >>Ende<<
vergleicht, ergibt sich das gleiche Bild: Es wird nur ein einziges mal
berechnet!
MfG
Michael
--
-------------------------------------------
Michael Schwimmer
Home : http://michael-schwimmer.de
Bernd Held schrieb am 03.11.2004
> wenn es interessiert, hier nun die Lösung:
[Excel --> Outlook-Steuerung gesnippt]
Danke, Bernd.
Gerade was die Zusammenarbeit von Excel mit anderern Office-Applikationen
angeht scheint es mir wichtige, die jeweiligen Lösungen zu dokumentieren
und hierhin zu stellen - im Google-Archiv sind sie dann jeweils wieder
auffindbar und dienen somit auch anderen Anwendern (und 'uns' Helfern) als
Grundlage und Basis für die Lösung ihrer Probleme.
Michael Zimmermann schrieb:
>> For intz = 2 To ActiveSheet.UsedRange.Rows.Count
> ...
>> Next intz
>
> Unter Performance-Aspekten sehr schlechtes Konstrukt,
> da ActiveSheet.UsedRange.Rows.Count in jedem
> Schleifendurchlauf wieder bestimmt wird.
>
> Viel besser:
>
> Dim i as Long, n as long
>
> n = ActiveSheet.UsedRange.Rows.Count
>
> For i = 1 To n
> ...
> Next i
>
> Grundregel: Werte oder Objekte, die mehrfach verwendet
> werden, Variablen zuweisen.
dieser Grundregel stimme ich absolut zu.
Aber du irrst dich, die For-Zeile wird *nicht* bei jedem Schleifendurchlauf
mit durchlaufen und neu berechnet, sondern nur *einmal* zu Beginn der Schleife.
Zu testen ganz einfach, indem man die Schleife mit F8 durchläuft, oder
folgende Sub probiert:
Public Sub Schleifenzähler()
Dim lngRow As Long
' Zellen A1:A5 sind belegt
For lngRow = 1 To ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Cells(lngRow + 5, "A").Value = lngRow
Debug.Print ActiveSheet.UsedRange.Rows.Count
Next lngRow
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
> Michael Zimmermann schrieb:
> > > For intz = 2 To ActiveSheet.UsedRange.Rows.Count
> > ...
> > > Next intz
> >
> > Unter Performance-Aspekten sehr schlechtes Konstrukt,
> > da ActiveSheet.UsedRange.Rows.Count in jedem
> > Schleifendurchlauf wieder bestimmt wird.
> >
> > Viel besser:
> >
> > Dim i as Long, n as long
> >
> > n = ActiveSheet.UsedRange.Rows.Count
> >
> > For i = 1 To n
> > ...
> > Next i
> >
> > Grundregel: Werte oder Objekte, die mehrfach verwendet
> > werden, Variablen zuweisen.
>
Melanie Breden:
> dieser Grundregel stimme ich absolut zu.
>
> Aber du irrst dich, die For-Zeile wird *nicht* bei jedem
> Schleifendurchlauf mit durchlaufen und neu berechnet,
> sondern nur *einmal* zu Beginn der Schleife.
Michael Schwimmer:
| wie kommst du denn nur auf so etwas?
Ganz einfach: Meine ersten Basic-Kontakte liegen über 30
Jahre zurück. In dem Basic, das mich geprägt hat (noch vor
VB), wurde die For-Zeile bei jedem Schleifendurchlauf
mitgenommen, um - obwohl es eher verpönt war - in der
Schleife nicht nur den Zähler sondern auch Endwert und
Schrittweite manipulieren zu können.
In anderen Programmiersprachen, mit denen ich regelmäßig
arbeite wie Java oder C/C++, wird ebenfalls die For-Zeile
bei jedem Schleifendurchlauf ausgewertet. Ich wäre
daher nie auf die Idee gekopmmen, daß es in VB anders
sein könnte.
Es ist kein Verlust, daß es in VB nicht mehr so ist, wie
im Ur-Basic - ich war sowieso nie ein Freund davon -, aber
ich bin aus den genannten Gründen davon ausgegangen, und
dann wäre die Berechnung bei jedem Durchlauf ausgeführt
worden.
Im vorliegenden konkreten Einzelfall war meine Kritik
also unberechtigt.
Im allgemeinen bleibe ich aber dabei:
1.)
Oft wird in For-Schleifen der Endwert in der Schleife
selbst ebenfalls benutzt - z. B. Fortschrittsanzeigen
o. ä. Auch in solchen Fälleb habe ich oft gesehen, daß
der berechnende Ausdruck statt einer Variablen benutzt
wird, was dann die von mir geschilderte Problematik
hervorruft.
2.)
In Do-Loop oder While-Wend wird die Startzeile mit
durchgeschleift. Auch hier gilt das von mir Gesagte.
3.)
In anderen Programmiersprachen wird ebenfalls die
For-Zeile immer wieder gelesen. Auch hier also
Variablen benutzen.
Gruß aus Mainz
Michael
In einer Exceltabelle verwalte ich Seminartermine, die ich den Teilnehmern
gerne per VBA als Outlooktermin zusenden möchte.
Das ist auch an und für sich kein Problem, nur tauche ich dann als
Besprechungsplanung auf.
Tatsächlich möchte ich mit dem versendeten Termin aber später nichts mehr zu
tun haben, es soll aussehen, als hätte der Teilnehmer den Termin selbst
erstellt.
Tja, geht das? Und wenn ja, wie?
Bin gespannt auf eure Antworten
Gruß
Jürgen
>> wie kommst du denn nur auf so etwas?
> Ganz einfach: Meine ersten Basic-Kontakte liegen über 30
> Jahre zurück. In dem Basic, das mich geprägt hat (noch vor
> VB), wurde die For-Zeile bei jedem Schleifendurchlauf
> mitgenommen, um - obwohl es eher verpönt war - in der
> Schleife nicht nur den Zähler sondern auch Endwert und
> Schrittweite manipulieren zu können.
ich habe nur deshalb so verwundert gefragt, weil ich es
überhaupt nicht anders kenne. Seit VB4 jedenfalls wird nur
einmal berechnet.
Wie das zu Zeiten von GW-Basic oder in den 80ern mit dem
Basic-Dialekt des C64 war, weiß ich nicht mehr, oder
hatte mir damals noch keine Gedanken darüber gemacht. Da
stand das Abtippen und zum Laufen bringen von Listings im
Vordergrund ;-)
> In anderen Programmiersprachen, mit denen ich regelmäßig
> arbeite wie Java oder C/C++, wird ebenfalls die For-Zeile
> bei jedem Schleifendurchlauf ausgewertet. Ich wäre
> daher nie auf die Idee gekopmmen, daß es in VB anders
> sein könnte.
> Es ist kein Verlust, daß es in VB nicht mehr so ist, wie
> im Ur-Basic - ich war sowieso nie ein Freund davon -, aber
> ich bin aus den genannten Gründen davon ausgegangen, und
> dann wäre die Berechnung bei jedem Durchlauf ausgeführt
> worden.
> Im vorliegenden konkreten Einzelfall war meine Kritik
> also unberechtigt.
> Im allgemeinen bleibe ich aber dabei:
> 1.)
> Oft wird in For-Schleifen der Endwert in der Schleife
> selbst ebenfalls benutzt - z. B. Fortschrittsanzeigen
> o. ä. Auch in solchen Fälleb habe ich oft gesehen, daß
> der berechnende Ausdruck statt einer Variablen benutzt
> wird, was dann die von mir geschilderte Problematik
> hervorruft.
Die Anmerkung von mir bezog sich ja auch nur auf die
For Next Schleife. Ansonsten stimme ich dir voll zu!
> 2.)
> In Do-Loop oder While-Wend wird die Startzeile mit
> durchgeschleift. Auch hier gilt das von mir Gesagte.
ACK
> 3.)
> In anderen Programmiersprachen wird ebenfalls die
> For-Zeile immer wieder gelesen. Auch hier also
> Variablen benutzen.
ACK
Im übrigen pflichte ich dir auch bei deinen Anmerkungen
zum Datentyp Integer bei.
Integer wird auch bei mir nur noch benutzt, wenn es nicht
anders geht, wie zum Beispiel bei manchen API-Funktionen.
Es gibt so viel, mit dem man seinen Code verbessern
kann, leider wird man auf Fehler und Optimierungsmöglichkeiten
nicht sehr häufig hingewiesen. Deshalb kann ich Codekritik nur
ausdrücklich befürworten.
MfG
Michael
Gruß
stefan
"Jürgen Dietze" <Jrgen...@discussions.microsoft.com> schrieb im
Newsbeitrag news:4A9D2970-4ED8-41C8...@microsoft.com...
Klicke ich dort auf Termin eintragen, geht ein Outlook-Terminfenster auf,
das ich dann speichern kann (das wird dort aber wohl nicht mit VBA gemacht.)
Tja, und so etwas hätte ich halt gern in VBA...
Gruß
Jürgen
Einfacher ist da mE, Teilnehmer/n eine Besprechungsanfrage zu schicken:
noch eine Codebeispiel: http://www.outlookcode.com/codedetail.aspx?id=88
(es steht da zwar VBScript, es geht aber auch mit VBA (habs getestet)).
Vorraussetzung ist allerdings, dass die Besprechungsanfrage auch mit Outlook
geöffnet wird, um in den Kalender eingetragen zu werden.
Gruß
stefan
"Jürgen Dietze" schrieb:
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
DTSTART:20041206T140000Z
DTEND:20041206T163000Z
LOCATION;ENCODING=QUOTED-PRINTABLE:EDV Schulungsraum
UID:040000008200E00074C5B7101A82E008000000007056F8B033C3C4010000000000000000100
000001F6699EA2015134EBD1DB717E69696C2
CATEGORIES;ENCODING=QUOTED-PRINTABLE:Schulungen
SUMMARY;ENCODING=QUOTED-PRINTABLE:Excel (G) 2.3
PRIORITY:3
END:VEVENT
END:VCALENDAR
So etwas als Textdatei zu erzeugen ist kein Thema. Ich habe mal auf die
Einträge UID , ProdID und Version verzichtet, funktioniert trotzdem.
Allerdings findet der Termin in Wirklichkeit von 15 - 17:30 statt, also eine
Stunde später. Ich denke, das hängt mit Sommer-/Winterzeit zusammen.
Solltest Du noch Informationen über vcs-Dateien haben oder bekommen, lass es
mich bitte wissen.
Unter dem Strich ist das wohl die Lösung.
Schönes Wochenende
Jürgen
Michael Schwimmer:
> Es gibt so viel, mit dem man seinen Code verbessern
> kann, leider wird man auf Fehler und
> Optimierungsmöglichkeiten nicht sehr häufig hingewiesen.
> Deshalb kann ich Codekritik nur ausdrücklich befürworten.
Schön, jemanden zu treffen, der das auch so sieht.
Selbstverständlich ist diese Einstellung nicht.
Gruß aus Mainz
Michael