Używanie klasycznego programu Outlook w systemie Windows na potrzeby osobistej poczty e-mail, kalendarza i zarządzania kontaktami
Kurka od lat nikt nie zadał pytanie o kod. Super.
Tomek ale nie obraź się, bo coś mi tu źle pachnie.... i coś mi się wydaje że nie rozumiesz tego kodu a że nie działa to szukasz pomocy. Wytłumacz się z tego proszę, tylko bez kręcenia.
Komentarze podobne do AI, nazwy funkcji też, zaawansowane jak na początkującego odwołania też, ale jednak pewne ruchy całkiem nielogiczne jak u człowieka, który coś strasznie popaprał:
Np w funkcji ReadKeywordsFromIni masz odwołania do ukończenia procedury więc już błąd, a skoro funkcja to powinna coś sama zwracać, a nie zwraca nic bo nie ma ReadKeywordsFromIni = coś.
Generalnie polecam taki przycisk jak:
Menu/debug/compile a wyjdą Ci kwiatki. :)
wychwycisz takie błędy składniowe bo ten kod po prostu nie ruszy.
Zdarzenie WithEvents powinno być w klasie głównej, a nie z w module (w module nie może być bo deklaracje są pivate), no chyba że całość kodu dodałeś w klasie, dlaczego?
Przypisanie do zmiennej $ wynik funkcji:
Dim scriptPath As String
scriptPath = GetScriptFolderPath()
a potem tylko ścieżka?
Function GetScriptFolderPath() As String
GetScriptFolderPath = "C:\skrypt"
End Function
Nie można było do razu:
Dim scriptPath As String
scriptPath ="C:\skrypt"
albo lepiej do stałej, bo przecież ścieżka się nie zmienia?
Const scriptPath As String = "C:\skrypt"
Patrząc dalej nie podoba mi się procedura InitializeInbox gdzie używasz pętli oczekując po 25 sekund co mail?
waitUntil = Now + TimeValue("00:00:25")
... generalnie ja bym tak nie robił bo to polecenie z pętlą zabiera 100% procesora.
i to na 25 sekund? aby co przenosić po jednym mailu?
W Excelu jest parametr ontime i tam to jest łatwiej, ale niemniej jednak dlaczego - wytłumaczysz mi, bo może czegoś nie łapie? Co miałeś na myśli przez to czekanie?
Ale swoją drogą jeśli to faktycznie ty i dogrzebałeś się do .Restrict? no szacun.
Używałem tego w 2019 w takim rozwiązaniu: http://vbatools.pl/wyszukaj-w-outlooku/
Nie widziałem u nikogo na forach, kto by z tego korzystał. Więc to bardzo rzadka potrzeba. Poza tym w tym poleceniu używa się odwołania do "@SQL=" & Chr(34) & "urn:schemas:httpmail:" & zapytanie & Chr(34)
I nie spotkałem się aby było tak prosto jak u ciebie.
potem widzę:
keywordsArray(-1 To -1)
exclusionsArray(-1 To -1)
a nie można było kolekcji użyć, a nie tablicy i dlaczego takiej dziwnej od -1 do 1...
No i ten regexp - niby jest tam jakiś patern, ale jaki, słowo z ini? przecież to jest miejsce na definicje https://learn.microsoft.com/en-us/dotnet/standard/base-types/the-regular-expression-object-model
Poza tym nie mam ani twojej struktury, ani plików jakie by podchodziły pod te warunki.... więc mogę tylko przypuszczać jakie są błędy i czy proponować jakieś zmiany, ale tego z pewnością nie przetestuje.
Sam na poziomie debugowania musisz to stwierdzić. Krokowo przelecieć cały kod i z lokalsami sprawdzić co się ładuje do tych tablic. A czy optymalne?, no tak jak pow pokazałem można pewnie więcej rzeczy uprościć, a niektórych ruchów nie rozumiem nie mają przykładu.
Niemniej jednak da się odczuć tutaj AI wiec fajnie by było abyś odpowiedział mi rzetelnie jak dochodziłeś do tych linijek
p.s.
Poza tym w Outlooku jest coś takiego jak folder wyszukania, gdzie możesz spokojnie, jak mi się wydaje po pobieżnym oblookaniu kodu wykonać. Spróbuj sprawdzić, było by prościej na poziomie filtrowania i nowego widoku, niż przenoszenie danych, no chyba ze chodzi przy okazji o regułę przenoszenia do folderów.
Folder wyszukania działa też po SQLu a więc szybko.
Po zapoznaniu się z treścią tego posta zamknij go zaznaczać prawidłową odpowiedź aby liczyć na moje wsparcie na tym forum w przyszłości lub kontynuuj jeśli masz jakies pytania w tej sprawie. Liczę na to że zrobisz to po uzyskaniu odpowiedzi.
Pozdrawiam.