20. Apr 2024, 11:16
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0403
  OLK: Zellenspringen bis Zelle leer
 Von Sensewell
 Am 17. Dezember 2007 um 14:01:48
 Frage Mahlzeit,

Hallo zusammen. Ich habe ein riesiges Problem was ich so schnell wie möglich lösen möchte. Ich habe schon in einem anderen Forum gepostet nur die wussten nicht mehr weiter. Also hier mal meine Problemstellung:

Ich habe schon mal fleisig einen Code geschrieben. Ich möchte im VBA von Outlook eine Excel Datei auslesen und ihre zellenwerte A1,A2,A3.....Ax in ein Array lesen. Die grenze wieviel Zeilen es sind ist nicht vorgegeben. Also muss erst ein count gemacht werden. NUn soollen die Werte der Arrays (z.B: A1: "31.12.2007","01.01.2008","02.01.2008","03.01.2008","04.01.2008","07.01.2008","08.01.2008","09.01.2008") mit dem heutigen Datum: faelligkeit= Date verglichen werden. Sollte in dem Array das heutige Datum vorkommen so soll eine Prozedur mit dem Namen AssignTask starten.

Dim varA As String
Const Tabelle = "Serientyp_jedenTag_liste.xls" 'Name der Exceldatei
Const Path = "C:\Dokumente und Einstellungen\llibrs1\Desktop\" 'Path, wo die Exceldatei liegt
Sub Excel_Datei_Oeffnen()
Dim xlApp As Excel.Application
Dim xlWb As Workbook
Set x1App = New Excel.Application
Set x1Wb = GetObject(Path & Tabelle)
x1Wb.Application.Visible = True
x1Wb.Parent.Windows(1).Visible = True


End Sub
Public Sub Excel_auslesen()
Dim xlApp As Excel.Application
Dim xlWb As Workbook
Dim xlWs As Worksheet
'Exceltabelle öffnen
Set xlApp = GetObject(, "Excel.Application")
Set xlWb = xlApp.ActiveWorkbook
Set xlWs = xlWb.Worksheets(1)
With xlWs
varA = .Range("A1").Value
End With
Set xlApp = Nothing
Application.Quit
End Sub

Sub test()
Dim dummy(99) As String
Dim zaehler As Integer
Dim starteBei As Integer
Dim faelligkeit As Date

faelligkeit = Date
starteBei = 1
zaehler = 0

For j = 1 To Len(Cells(1, 1))
If Mid(Cells(1, 1), j, 1) = "," Then
zaehler = zaehler + 1
dummy(zaehler) = Mid(Cells(1, 1), starteBei, j - starteBei)
starteBei = j + 1

If dummy(zaehler) = faelligkeit Then
AssignTask
End If
End If
Next j

End Sub
mit diesem Code klappt es noch nicht ganz.Er kann die Werte aus dem Array nicht lesen. Ein weiteres Problem wäre: in B1 und C1 und D1 und E1 stehen Ausdrücke die zu A1 gehören. Diese werden durch die Prozedur AssignTask hinzugefügt:
'Nebenprozedur
'Deklaration von MyItem als Aufgabe
'Deklaration von MyDelegate als Emailversand
'Erstellt eine neue Aufgabe
'Ordnet der Variable myItem die Aufgabe zu
Sub AssignTask()
Dim myItem As Outlook.TaskItem
Dim myDelegate As Outlook.Recipient
Set myItem = Application.CreateItem(olTaskItem)
myItem.Assign
'Fügt die Gruppierfelder System,IV Gruppe,Administrationstätigkeit ein
Set myProp = myItem.UserProperties.Add("System", olText)
Set myProp = myItem.UserProperties.Add("Freier Filter", olText)
Set myProp = myItem.UserProperties.Add("IV Gruppe", olText)
'Fügt einen Adressanten ein
Set myDelegate = myItem.Recipients.Add("Brakowski Simon (LLI)")
'Löst den Adressanten im Adressbuch auf
myDelegate.Resolve
'Wenn der Adressant aufgelöst werden konnte wird die IF Anweisung ausgeführt.
If myDelegate.Resolved Then
'Fügt der Aufgabe den Namen: ... an
'Fügt einen Inhalt In das Hauptfenster der Aufgabe hinzu
'Der Aufgabenfälligkeit wird ein Wert zugeteilt (z.B: Now=heutige Systemdatum)
'Der Aufgabe wird ein Wert im Feld "System" zugeteilt
'Der Aufgabe wird ein Wert im Feld "IV Gruppe" zugeteilt
'Der Aufgabe wird ein Wert im Feld "Administrationstätigkeit" zugeteilt
'Die Aufgabe wird versendet
'Ende der Schleife& Ende der Prozedur
myItem.Subject = "Test 123456"
myItem.Body = "Hallo Welt"
myItem.DueDate = Now
myItem.UserProperties.Find("System").Value = "Test"
myItem.UserProperties.Find("IV Gruppe").Value = "ERP"
myItem.UserProperties.Find("Freier Filter").Value = "Backup"
myItem.Send
End If
'Application.Quit
End Sub
Nun sind die myItem Eigenschaften wie zum beispiel body oder system subject etc. in den Zellen C1,D1,E1 etc in der Exceldatei geschrieben. Jetzt möchte ich, dass wenn er A1,A2 etc. durchläuft und was findet, sagen wir in A2 dann auch in AssignTask die Propeties etc. von C2,D2,E2 nimmt. Also muss er ihm quasi ein Wert übergeben. Bzw. die Zahl nach dem A. und bei den Propeties muss dann als Wert quasi stehen: = Cx und genau das X soll von oben übernommen werden. Ich hoffe ich habe es verständlich rüber gebracht. Ich bin mit meinem VBA Latein am Ende. Würde mich über jede Hilfe freuen


Liebe Grüße,

Simon





[ VB-/VBA-Forum | Archiv 0403 | Archiv-Übersicht ]
 Antworten
OLK: Zellenspringen bis Zelle leer - Sensewell 17. Dezember 2007 um 14:01:48
Re: Zellenspringen bis Zelle leer - r.mueller@sz-online.de 17. Dezember 2007 um 17:21:11
Re: Zellenspringen bis Zelle leer - Sensewell 18. Dezember 2007 um 14:21:52

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum