Hirdetés
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Samsung Galaxy A54 - türelemjáték
- Telekom mobilszolgáltatások
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Xiaomi 15T Pro - a téma nincs lezárva
- Vivo X200 Pro - a kétszázát!
- Megérkeztek a Xiaomi 15T sorozatának telefonjai Magyarországra
-
Mobilarena
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
TheSaint
aktív tag
válasz
Fferi50
#52503
üzenetére
Ezek stimmelnek.
Így néz ki a teljes kód, egy adatbázislekérés van a táblázatban. Még sose futottam bele ilyen megmagyarázhatatlan hibába:Private Sub Workbook_Open()' Adatkapcsolatok frissítéseThisWorkbook.RefreshAll' Azonnal elindítjuk az időzítőt, amely a háttérben futStartTimerEnd SubSub StartTimer()' Időzítő beállítása 15 másodpercreApplication.OnTime Now + TimeValue("00:00:15"), "ThisWorkbook.ProcessAfterDelay"End SubSub ProcessAfterDelay()' Ellenőrizze, hogy a munkafüzet meg van-e nyitvaIf ThisWorkbook.Name = "e.xlsm" Then' Változók deklarálásaDim ws1 As Worksheet ' "Munka1" lapDim ws3 As Worksheet ' "Munka3" lapDim filterRange As RangeDim filterValues() As VariantDim filterValue As VariantDim bodyText As StringDim emailTable As ObjectDim CDO_Mail As ObjectDim CDO_Config As Object' CDO konfiguráció beállításaSet CDO_Mail = CreateObject("CDO.Message")Set CDO_Config = CreateObject("CDO.Configuration")CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.."CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = ""CDO_Config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""CDO_Config.Fields.UpdateSet CDO_Mail.Configuration = CDO_Config' Munkalapok beállításaSet ws1 = ThisWorkbook.Sheets("Munka1")Set ws3 = ThisWorkbook.Sheets("Munka3")ws1.AutoFilterMode = False' Szűrési tartomány beállítása a "Munka1" lapon (A-M oszlop)Set filterRange = ws1.Range("A3:M" & ws1.Cells(ws1.Rows.Count, "K").End(xlUp).Row)' Kiválasztott nevek definiálásafilterValues = Array("X", "Y")' E-mail címek táblázatának inicializálása a "Munka3" laponSet emailTable = CreateEmailTable(ws3)' Minden egyedi értékhez készítünk egy külön e-mailtFor Each filterValue In filterValues' Szűrés a K oszlop alapján a "Munka1" laponfilterRange.AutoFilter Field:=11, Criteria1:=filterValue' Csak folytatjuk, ha vannak szűrt sorokIf Application.WorksheetFunction.Subtotal(103, filterRange.Columns(1)) > 1 Then' E-mail tartalma összeállításabodyText = "" & filterValue & " m:" & vbCrLf & vbCrLfbodyText = bodyText & "" & vbCrLf & vbCrLf' HTML formátumban konvertált táblázat hozzáadása az üzenethezbodyText = bodyText & RangetoHTML(filterRange.SpecialCells(xlCellTypeVisible))' E-mail cím meghatározása a filterValue alapján a "Munka3" laponDim emailCim As StringemailCim = GetEmailFromTable(emailTable, filterValue)' Csak folytatjuk, ha sikerült e-mail címet meghatározniIf emailCim <> "" Then' E-mail küldése CDO objektummalWith CDO_Mail.Subject = "D".From = "@.hu".To = emailCim.cc = "@.hu".HTMLBody = bodyText ' HTML formátumú tartalom hozzáadása az üzenethez.SendEnd WithEnd IfEnd If' Szűrés törlésews1.AutoFilterMode = FalseNext filterValue' CDO objektumok bezárásaSet CDO_Mail = NothingSet CDO_Config = Nothing' Időzítő újraindítása 1 percreApplication.OnTime Now + TimeValue("00:01:00"), "ThisWorkbook.SaveAndCloseWorkbook"End IfEnd SubSub SaveAndCloseWorkbook()' Táblázat mentése és bezárásaThisWorkbook.SaveThisWorkbook.CloseEnd SubFunction RangetoHTML(rng As Range)' Függvény a táblázat HTML formátumban történő konvertálásáhozDim fso As ObjectDim ts As ObjectDim TempFile As StringDim TempWB As WorkbookTempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"' Táblázat exportálása HTML fájlbarng.CopySet TempWB = Workbooks.Add(1)With TempWB.Sheets(1).Cells(1).PasteSpecial Paste:=8.Cells(1).PasteSpecial xlPasteValues, , False, False.Cells(1).PasteSpecial xlPasteFormats, , False, False.Cells(1).SelectApplication.CutCopyMode = FalseOn Error Resume Next.DrawingObjects.Visible = True.DrawingObjects.DeleteOn Error GoTo 0End With' HTML fájlba mentésWith TempWB.PublishObjects.Add( _SourceType:=xlSourceRange, _Filename:=TempFile, _Sheet:=TempWB.Sheets(1).Name, _Source:=TempWB.Sheets(1).UsedRange.Address, _HtmlType:=xlHtmlStatic).Publish (True)End With' HTML tartalom olvasásaSet fso = CreateObject("Scripting.FileSystemObject")Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)RangetoHTML = ts.ReadAllts.CloseRangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _"align=left x:publishsource=")' Táblázat törlése és ideiglenes munkafüzet bezárásaTempWB.Close SaveChanges:=FalseKill TempFileSet ts = NothingSet fso = NothingSet TempWB = NothingEnd FunctionFunction CreateEmailTable(ws As Worksheet) As Object' E-mail címek táblázatának létrehozása és feltöltéseDim emailTable As ObjectSet emailTable = CreateObject("Scripting.Dictionary")Dim i As LongDim lastRow As LonglastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).RowFor i = 1 To lastRowDim nev As StringDim email As Stringnev = ws.Cells(i, 2).Valueemail = ws.Cells(i, 3).ValueemailTable(nev) = emailNext iSet CreateEmailTable = emailTableEnd FunctionFunction GetEmailFromTable(emailTable As Object, key As Variant) As String' E-mail cím lekérdezése a táblázatból a megadott kulcs alapjánOn Error Resume NextGetEmailFromTable = emailTable(key)On Error GoTo 0End Function
Új hozzászólás Aktív témák
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Battlefield 6
- E-roller topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- iPhone topik
- Hardcore café
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Samsung Galaxy A54 - türelemjáték
- Vigneau interaktív lokálblogja
- Spórolós topik
- További aktív témák...
- GYÖNYÖRŰ iPhone 13 128GB Starlight- 1 ÉV GARANCIA, Kártyafüggetlen,MS3435
- Bomba ár! Lenovo ThinkPad T450s - i5-5GEN I 8GB I 240GB SSD I 14" HD+/FHD I Cam I W10 I Garancia!
- ASUS TUF Dash F15 - 15.6"FHD 144Hz - i7-11370H - 16GB - 1,5TB SSD - RTX 3060 6GB - Win11
- GYÖNYÖRŰ iPhone 12 mini 256GB Red -1 ÉV GARANCIA -Kártyafüggetlen, MS3627
- HIBÁTLAN iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3276
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest


