PDA

Vollständige Version anzeigen : Laufzeitfehler 13


Silentwolf
02.10.2017, 14:13
Hallo an alle )

hab leider einen Laufzeitfehler 13 in den Code darunter...

Private Sub btnMails_Click()
Dim objFolder As Outlook.Folder
Dim objItem As Object
Dim objMailItem As Outlook.MailItem

Dim i As Integer

Set objMailItem = GetFolderByPath(Me!txtFolder)

For i = Me!lstMails.ListCount - 1 To 0 Step -1
Me!lstMails.RemoveItem (i)
Next i

For Each objItem In objFolder.items
If TypeName(objItem) = "MailItem" Then
Set objMailItem = objItem
With objMailItem
Me!lstMails.AddItem (.EntryID & " ;" & .ReceivedTime & ";" & .Subject)
End With
End If
Next objItem
End Sub

Public Function GetFolderByPath(strPath As String) As Outlook.Folder
Dim objFolder As Outlook.Folder

For Each objFolder In GETMAPI.Folders
If objFolder.FolderPath = strPath Then
Set GetFolderByPath = objFolder
Exit Function
Else
Set GetFolderByPath = GetFolderByPath_Rek(strPath, objFolder)
If Not GetFolderByPath Is Nothing Then
Exit Function
End If
End If
Next objFolder
End Function

Public Function GetFolderByPath_Rek(strPath As String, objParent As Outlook.Folder) As Outlook.Folder
Dim objFolder As Outlook.Folder

For Each objFolder In objParent.Folders
If objFolder.FolderPath = strPath Then
Set GetFolderByPath_Rek = objFolder
Exit Function
Else
Set GetFolderByPath_Rek = GetFolderByPath_Rek(strPath, objFolder)
If Not GetFolderByPath_Rek Is Nothing Then
Exit Function
End If
End If
Next objFolder
End Function

Der Fehler tritt am Anfang bei Set objMailItem = GetFolderByPath(Me!txtFolder) auf

zudem verstehe ich nicht warum im Code
For each objItem in objFolder.items
mir die intellisence Item anzeigt aber sobald ich es auswähle wird es wieder klein geschrieben....

Kann mir hier bitte jemand von Euch Experten helfen?
P.S. Der Code steht in Outlook 2010...

Dankeschön :)

mumpel
02.10.2017, 14:44
Hallo!

1. Me.txtFolder. Also mit Punkt, nicht Ausrufezeichen.
2. Wenn item kleingeschrieben wird liegt irgendwo eine Inkompatibilität vor. Wenn z.B. eine Variable "Item" genutzt wird die kleingeschrieben ist merkt sich VBA das und schreibt Item dann automatisch klein. Daher sollte man es vermeiden interne Bezeichner als Variable zu nutzen.

Gruß, René

Silentwolf
02.10.2017, 14:52
Hallo Renè

danke für die Nachricht! Ich habe Me.txtFolder auch schon probiert das hat leider nicht geholfen..
2. Ich werde mal auf die suche gehen.. und hoffe ich finde die variable ;)

Dankeschön! ..Melde mich wieder wenn ich noch Probleme haben sollte oder es nicht finden sollte.

mumpel
02.10.2017, 15:10
Ich nehme mal an dass "Me" eine Userform ist. Wenn ja dann nimm statt "Me" den Namen der Userform.

Wenn es keine Userform ist dann kannst Du "Me" nur innerhalb eines Tabellenmoduls nutzen. ln einem allgemeinen Modul wird "Me" nicht unterstützt. Dann referenziert man auf die Tabelle, nimmt also den Namen der Tabelle.

Silentwolf
02.10.2017, 15:15
Hallo Renè,
Ja ich hab eine Userform in outlook gebaut und hier hab ich ein textfeld txtFolder ...
Habe jezt auch den Code gefunden der items als variable hatte.. diesen Code habe ich gelöscht .. wie kann ich nun VBA lernen das es sich wieder normal verhält ?
Wollte die .items mit .Items replacen aber das half nichts...
Sonst hab ich keine variablen mehr mit items im Code..

mumpel
02.10.2017, 15:22
Hallo Renè,
(...) wie kann ich nun VBA lernen das es sich wieder normal verhält (...)

Speichere/exportiere alle Module, Userformen etc. auf Festplatte. Lösche dann die VBAProject.otm. Dann kannst Du alles wieder importieren.

Silentwolf
02.10.2017, 15:26
Ok Danke,
das werde ich gleich machen!

Habe es nun auch mit
set objMailItem=getFolderByPath(frmMails.txtFolder) probiert...... geht auch nicht..
Werde noch verrückt .. warum gggg

Private Sub btnPickFolder_Click()
Dim objFolder As Outlook.Folder
Set objFolder = GETMAPI.PickFolder

If Not objFolder Is Nothing Then
txtFolder = objFolder.FolderPath
' Me.btnSaveAttachments.Enabled = True
End If

End Sub
mit diesen Code fülle ichdie textbox...
vielleicht liegt hier noch ein Fehler vor..

Werde mal alles löschen und neu einfügen..
Danke in der Zwischenzeit mal recht herzlich!!

mumpel
02.10.2017, 15:43
Versuch es mal mit Dim objFolder As Outlook.MAPIFolder

Silentwolf
02.10.2017, 15:44
Lösche dann die VBAProject.otm
hab nun alle module und userforms gelöscht.. nur wie kann ich die Project1(VbaProject.OTM) löschen?

Hab versucht diese nicht zu löschen und die Userform wieder einzubetten im Projekt aber das geht noch nicht mit den .Items

ThisOutlookSession hab ich auch gelöscht zumindest den Inhalt.. hoffe das war ok??

mumpel
02.10.2017, 15:57
Zuerst Outlook beenden. Die VBAProject.otm findest Du in C:Users Username AppData Roaming (die Pfadtrenner werden hier leider durch den Forenparser gelöscht). Der Ordner AppData ist standardmäßig ausgeblendet. Outlook legt die VBAProject.otm beim nächstens Start neu an.

Silentwolf
02.10.2017, 16:03
Ok Danke ich werde es versuchen...
Melde mich dann wieder mit mehr Infos .)

Silentwolf
02.10.2017, 16:28
Hab noch diese Codes gefunden pff

Private m_MAPI As Outlook.NameSpace

Public Function GETMAPI() As Outlook.NameSpace
If m_MAPI Is Nothing Then
Set m_MAPI = GetOutlook.GetNamespace("MAPI")
End If
Set GETMAPI = m_MAPI
End Function

Das Problem ist das ich diese Codes aus einem Access Codebuch habe und von Outlook Programmieren nicht so viel Ahnung habe...

Deshalb werden einige Dinge ein wenig vermischt die dann wohl zu Fehlern führen.

Das mit dem Löschen hat funktioniert! Vielen Dank..!! Das neue Projekt nennt sich nun Projekt1 das stimmt hoffentlich so?

Vielen Dank für die Mühe!!

mumpel
02.10.2017, 16:45
Das neue Projekt nennt sich nun Projekt1 das stimmt hoffentlich so?

Der interne Projektname ist eigentlich unwichtig.


Das Problem ist das ich diese Codes aus einem Access Codebuch habe und von Outlook Programmieren nicht so viel Ahnung habe
Etwas zum Lernen. So benutze ich das in meinem Excel-Testprojekt (ist zwar verbesserungswürdig, aber läuft so trotzdem schnell und flüssig). Vielleicht kannst Du damit etwas anfangen.

<pre style='border:thin solid #FF8000; padding:12px 24px; margin-left:12px; color:#000000'><span style='color:#0000EE'>Option</span> <span style='color:#0000EE'>Explicit</span> <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Outlook-Objekte </span> <span style='color:#0000EE'>Dim</span> olApp <span style='color:#0000EE'>As</span> Outlook.Application <span style='color:#0000EE'>Dim</span> olName <span style='color:#0000EE'>As</span> Outlook.Namespace <span style='color:#0000EE'>Dim</span> olFolder <span style='color:#0000EE'>As</span> Outlook.MAPIFolder <span style='color:#0000EE'>Dim</span> nspMapi <span style='color:#0000EE'>As</span> Outlook.Namespace <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Objekte </span> <span style='color:#0000EE'>Dim</span> olAcCount <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Z&auml;hler </span> <span style='color:#0000EE'>Dim</span> olItemsCount <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> <span style='color:#0000EE'>Dim</span> letzteZeile <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> ReadMailINWebBrowser() <span style='color:#0000EE'>Dim</span> strUrl <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>String</span> <span style='color:#0000EE'>Dim</span> strHTML <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>String</span> <span style='color:#0000EE'>Dim</span> StoreID <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>String</span> <span style='color:#0000EE'>Dim</span> EntryID <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>String</span> <span style='color:#0000EE'>Dim</span> Item <span style='color:#0000EE'>As</span> Outlook.MailItem <span style='color:#0000EE'>Dim</span> FSO <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>Dim</span> FilePath <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>Dim</span> objFile <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>If</span> tbxNullCount.Text = <span style='color:#FF0000'>&quot;Null&quot;</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Exit</span> <span style='color:#0000EE'>Sub</span> <span style='color:#0000EE'>Set</span> Item = olName.GetItemFromID(ListBox1.List(ListBox1.ListIndex, <span style='color:#DDAA00'>7</span>), ListBox1.List(ListBox1.ListIndex, <span style='color:#DDAA00'>6</span>)) <span style='color:#0000EE'>Set</span> FSO = CreateObject(<span style='color:#FF0000'>&quot;Scripting.FileSystemObject&quot;</span>) <span style='color:#0000EE'>Set</span> FilePath = FSO.GetSpecialFolder(<span style='color:#DDAA00'>2</span>) strUrl = ThisWorkbook.Path & <span style='color:#FF0000'>&quot;tempViewInBrowser.html&quot;</span> <span style='color:#0000EE'>Set</span> objFile = FSO.CreateTextFile(strUrl, <span style='color:#0000EE'>True</span>) <span style='color:#0000EE'>With</span> objFile strHTML = Item.HTMLBody .Write <span style='color:#FF0000'>&quot;&quot;</span> & strHTML .Close <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> WebBrowser1.Navigate (strUrl) <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> OutBar1_ItemClick(<span style='color:#0000EE'>ByVal</span> Group <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span>, <span style='color:#0000EE'>ByVal</span> Item <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span>, Button <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Integer</span>) <span style='color:#0000EE'>If</span> Button = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>On</span> <span style='color:#0000EE'>Error</span> <span style='color:#0000EE'>Resume</span> <span style='color:#0000EE'>Next</span> <span style='color:#0000EE'>Dim</span> varCount <span style='color:#0000EE'>Dim</span> varText <span style='color:#0000EE'>Dim</span> strText <span style='color:#0000EE'>Dim</span> shText <span style='color:#0000EE'>Dim</span> xlSearchIDN <span style='color:#0000EE'>With</span> OutBar1.Groups(Group).Items(Item) varText = Split(.Caption, <span style='color:#FF0000'>&quot;=&gt;&quot;</span>) <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>For</span> varCount = <span style='color:#DDAA00'>0</span> <span style='color:#0000EE'>To</span> <span style='color:#0000EE'>Ubound</span>(varText) strText = strText & vbCrLf & varText(varCount) <span style='color:#0000EE'>Next</span> varCount <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Ubound</span>(varText) &lt; <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> olFolder = olName.Session.Folders(OutBar1.Groups(Group).Caption).Folders(varText(<span style='color:#DDAA00'>0</span>)) <span style='color:#0000EE'>ElseIf</span> <span style='color:#0000EE'>Ubound</span>(varText) = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> olFolder = olName.Session.Folders(OutBar1.Groups(Group).Caption).Folders(varText(<span style='color:#DDAA00'>0</span>)).Folders(varText(<span style='color:#DDAA00'>1</span>)) <span style='color:#0000EE'>ElseIf</span> <span style='color:#0000EE'>Ubound</span>(varText) &gt; <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> olFolder = olName.Session.Folders(OutBar1.Groups(Group).Caption).Folders(varText(<span style='color:#DDAA00'>0</span>)).Folders(varText(<span style='color:#DDAA00'>1</span>)).Folders(varText(<span style='color:#DDAA00'>2</span>)) <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> letzteZeile = ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;A&quot;</span> & Rows.Count).End(xlUp).Row <span style='color:#0000EE'>If</span> Len(OutBar1.Groups(Group).Caption) &gt; <span style='color:#DDAA00'>21</span> <span style='color:#0000EE'>Then</span> tbxFolderNameLang.Text = OutBar1.Groups(Group).Caption tbxFolderNameKurz.Text = Left(OutBar1.Groups(Group).Caption, <span style='color:#DDAA00'>21</span>) <span style='color:#0000EE'>Else</span> tbxFolderNameLang.Text = OutBar1.Groups(Group).Caption tbxFolderNameKurz.Text = OutBar1.Groups(Group).Caption <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>If</span> cbxReadAll = <span style='color:#0000EE'>True</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>For</span> olItemsCount = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>To</span> olFolder.Items.Count <span style='color:#0000EE'>With</span> olFolder.Items.Item(olItemsCount) ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Activate <span style='color:#0000EE'>Set</span> xlSearchIDN = ActiveSheet.Columns(<span style='color:#DDAA00'>8</span>).Find(.EntryID, lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True) <span style='color:#0000EE'>If</span> xlSearchIDN <span style='color:#0000EE'>Is</span> <span style='color:#0000EE'>Nothing</span> <span style='color:#0000EE'>Then</span> letzteZeile = ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;A&quot;</span> & Rows.Count).End(xlUp).Row + <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Ubound</span>(varText) &lt; <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;A&quot;</span> & letzteZeile).Value = varText(<span style='color:#DDAA00'>0</span>) <span style='color:#0000EE'>ElseIf</span> <span style='color:#0000EE'>Ubound</span>(varText) = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;A&quot;</span> & letzteZeile).Value = varText(<span style='color:#DDAA00'>0</span>) & <span style='color:#FF0000'>&quot;=&gt;&quot;</span> & varText(<span style='color:#DDAA00'>1</span>) <span style='color:#0000EE'>ElseIf</span> <span style='color:#0000EE'>Ubound</span>(varText) &gt; <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;A&quot;</span> & letzteZeile).Value = varText(<span style='color:#DDAA00'>0</span>) & <span style='color:#FF0000'>&quot;=&gt;&quot;</span> & varText(<span style='color:#DDAA00'>1</span>) & <span style='color:#FF0000'>&quot;=&gt;&quot;</span> & varText(<span style='color:#DDAA00'>2</span>) <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;B&quot;</span> & letzteZeile).Value = .Sender ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;C&quot;</span> & letzteZeile).Value = .SenderEmailAddress ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;D&quot;</span> & letzteZeile).Value = .ReceivedTime ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;E&quot;</span> & letzteZeile).Value = .Subject ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;G&quot;</span> & letzteZeile).Value = olFolder.StoreID ThisWorkbook.Sheets(tbxFolderNameKurz.Text).Range(<span style='color:#FF0000'>&quot;H&quot;</span> & letzteZeile).Value = .EntryID <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>Next</span> olItemsCount <span style='color:#0000EE'>If</span> cbxInListBox = <span style='color:#0000EE'>True</span> <span style='color:#0000EE'>Then</span> ListBox1.RowSource = <span style='color:#FF0000'>&quot;&quot;</span> CommandButton5_Click <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>ElseIf</span> Button = <span style='color:#DDAA00'>2</span> <span style='color:#0000EE'>Then</span> MsgBox <span style='color:#FF0000'>&quot;Rechte Maustaste ist nicht belegt&quot;</span>, <span style='color:#DDAA00'>64</span>, <span style='color:#FF0000'>&quot;Hinweis&quot;</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> ActiveSheet.Columns.AutoFit <span style='color:#0000EE'>On</span> <span style='color:#0000EE'>Error</span> <span style='color:#0000EE'>GoTo 0</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> UserForm_Initialize() <span style='color:#0000EE'>Dim</span> myWsh <span style='color:#0000EE'>As</span> Worksheet <span style='color:#0000EE'>Dim</span> xlSCount <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> <span style='color:#0000EE'>Dim</span> oApp <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>New</span> Outlook.Application <span style='color:#0000EE'>Dim</span> Folder <span style='color:#0000EE'>As</span> Outlook.MAPIFolder <span style='color:#0000EE'>Dim</span> subfolder1 <span style='color:#0000EE'>As</span> Outlook.MAPIFolder <span style='color:#0000EE'>Dim</span> subfolder2 <span style='color:#0000EE'>As</span> Outlook.MAPIFolder <span style='color:#0000EE'>Dim</span> subfolder3 <span style='color:#0000EE'>As</span> Outlook.MAPIFolder <span style='color:#0000EE'>Set</span> olApp = <span style='color:#0000EE'>New</span> Outlook.Application <span style='color:#0000EE'>Set</span> olName = olApp.GetNamespace(<span style='color:#FF0000'>&quot;MAPI&quot;</span>) <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span><br><br><hr style='color: #FF8000; background-color:#FF8000; height:1px; border:none;' /><p style='font-size:9px; font-family: Verdana; text-align: left; '><a href='http://www.rholtz-office.de/vba-html' target='_blank'>VBA/HTML-CodeConverter</a>, AddIn f&uuml;r Office 2002-2016 - in VBA geschrieben von <a href='http://www.office-loesung.de/viewprofile19265.php'>Lukas Mosimann</a>. Projektbetreuung:<a href='http://www.rholtz-office.de'>RMH Software & Media</a></p><p style='font-size:11px; font-weight:bold; color:#0000EE; font-family:Verdana; text-align:left;'>Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0</p></pre>

Silentwolf
02.10.2017, 17:38
Danke Renè

werde es mir genau ansehen!
Vielen Dank für die Mühe!!