Hirdetés
- Vivo X200 Pro - a kétszázát!
- Bemutatkozott a Poco X7 és X7 Pro
- Mobil flották
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Realme GT 2 - aláírjuk
- Indiában Philips okostelefonokat is lehet majd választani
- Fotók, videók mobillal
- Samsung Galaxy A56 - megbízható középszerűség
- Szerkesztett és makrofotók mobillal
- Samsung Galaxy Watch7 - kötelező kör
-
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
- VADIÚJ Bontatlan! Honor 400 Lite 8/256 AMOLED 120Hz Velvet Grey, Dual SIM 2év gar
- BESZÁMÍTÁS! MSI Katana15 HX B14WEK notebook - i7 14650HX 16GB DDR5 1TB SSD nVidia RTX 5050 8GB WIN11
- HP 150W töltők (19.5V 7.7A) kis kék, kerek, 4.5x3.0mm
- Samsung Galaxy S22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Most èrkezett! Kingston 1TB NV3!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő


