Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

seltsames remove duplicates Problem

seltsames remove duplicates Problem
24.11.2021 10:53:21
Daniel
Liebe Experten-Gemeinde,
Dank der tollen Hilfe hier ist mein Arbeitsprojekt ziemlich weit fortgeschritten. Nunmehr stellt sich eine Remove.Duplicate Prozedur quer, sobald die Arbeitsmappe freigegeben wird (was sie verpflichtend muss). Was wird gemacht? Es werden gefilterte Namen (visible via specialcell) ausgelesen, in eine Hilfsspalte eines anderen Arbeitsblattes ohne Filter kopiert und dort auf Dopplungen geprüft. Anschließend wird ein passender Email Adress-Verteiler erzeugt, die Hilfsspalte geleert und eine Email mit den Filter-Daten im Html-Body aufgerufen.
Die VBA-Lösung läuft im Single-Mode perfekt - aber nicht im Freigabe-Modus, was sich mir nicht erschließt. Es sind keine Zellen, Arbeitsblätter oder sonst irgendein Bereich ausgeblendet oder gesperrt. Copy-Paste-Delete und Filter kann man doch auch in freigegebenen Mappen durchführen ... anbei die Datei https://www.herber.de/bbs/user/149352.xlsm und der fragliche Code:
Bin für jede Hilfe dankbar.

Sub CommandButton1_Click()
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
Dim LastRow As Long
Dim i As Long, j As Long
Dim emailList As String
Dim foundEmails As Long
Set rng = Nothing
On Error Resume Next
With Application
.EnableEvents = False
.ScreenUpdating = False
.Visible = True
End With
'nur sichtbare Zellen der Filter
With Worksheets("Testbedarf BvB")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range("A5:G" & LastRow).SpecialCells(xlCellTypeVisible)
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
' Kopiert die Namen in temporäre Spalte "Z" in "Bibliothek" und entfernt die Dopplungen
.Range("G5:G" & LastRow).SpecialCells(xlCellTypeVisible).Copy
End With
With Worksheets("Bibliothek")
.Range("Z1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
.Range("$Z1:Z" & LastRow).RemoveDuplicates Columns:=1, Header:=xlNo
'erzeugt Email Liste insofern in Spalte "M" Bibliothek gematched
emailList = ""
foundEmails = 0
LastRow = .Cells(.Rows.Count, "Z").End(xlUp).Row
For i = 1 To LastRow
Debug.Print i, .Range("Z" & i)
For j = 4 To 1000
If .Range("K" & j).Value = "" Then Exit For
If .Range("K" & j).Value = .Range("Z" & i).Value Then
emailList = emailList & .Range("M" & j).Value & ";"
foundEmails = foundEmails + 1
Exit For
End If
Next j
Next
'lösche temporäre Spalte Z in Bibliothek
.Range("Z:Z").ClearContents
If MsgBox("Aktuelle Testgruppe als Email exportieren?" & vbCrLf & vbNewLine & _
foundEmails & " Ausbilder(innen) stehen im Verteiler:" & vbCrLf & vbNewLine & _
Replace(emailList, ";", vbCrLf), vbYesNo + vbQuestion) = vbYes Then
Else
Application.EnableEvents = True
Exit Sub
End If
End With
On Error GoTo 0
If rng Is Nothing Then
MsgBox "Auswahl ungültig." & _
vbNewLine & "Bitte erneut versuchen oder Blattschutz entfernen.", vbOKOnly
Exit Sub
End If
xMailBody = "[Anrede / Info-Block etc.]"
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
'On Error Resume Next
With OutMail
.To = emailList
.CC = ""
.BCC = ""
.Subject = "Information: Testgruppe gebildet"
.HTMLBody = xMailBody & RangetoHTML(rng)
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
.Visible = True
End With
End Sub
Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set 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).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
FileName:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: seltsames remove duplicates Problem
24.11.2021 11:18:00
EtoPHG
Hallo,
Die VBA-Lösung läuft im Single-Mode perfekt - aber nicht im Freigabe-Modus, was sich mir nicht erschließt.
...ist weder eine Fehlerbeschreibung, noch sehr hilfreich um Hilfestellung zu geben. Was passiert? Fehlermeldungen?
Zwei Anmerkungen:
1. Specialcells kann u.U. keinen! Bereich zurückliefern. Das musst du abfangen.
2. Excel-Experten raten praktisch durchwegs von der Verwendung der XL Freigabefunktion ab. In diesen Mappen laufen v.a. VBA-Codes mehr oder minder eratisch oder gar nicht.
Gruess Hansueli
AW: seltsames remove duplicates Problem
24.11.2021 11:35:50
Daniel
Makros laufen schon in Freigegebenen Mappen.
Es ist nur generell so, dass es Aktionen gibt, die in freigegebenen Mappen nicht zulässig sind (bspw das Aufheben eines Blattschutzes).
Solche Aktionen können dann natürlich nicht nur vom Anwender nicht genutzt werden, sondern auch von einem Makro nicht.
Da müsste man mal prüfen, ob dies hier der Fall ist.
Gruß Daniel
Anzeige
AW: seltsames remove duplicates Problem
24.11.2021 12:07:32
Daniel
Hallo zurück,
das Gute zuerst: Es kommt keine Fehlermeldung vom VBA-Script. Den Fehler erkennt man, dass der erzeugte Email-Verteiler im Multi immer Duplikate enthält, während die gleiche Email im Single keine Redundanzen aufweist. Es muss also unmittelbar damit zusammenhängen. Leider kann man im Multi die VBA-Konsole nicht mit F8 durchlaufen lassen ... ihr könnt es ja auch gerne mal selber probieren: Filter Team = Ca/Sk + Jä/Di + Jä/Fl + Jä/Sk + Filter Bemerkungen = A. Macht 16 gelistete Personen; dann "Testgruppe exportieren"
SU richtig: Email mit 11 Adressen
MU falsch: Email mit 16 Adressen (1x 2 gleiche Adressen; 1x 3 gleiche Adressen)
Wie gesagt, es ist nichts geschützt oder gesperrt oder ausgeblendet ... verrückt oder?
Liebe Grüße
Daniel Jäger
Anzeige
AW: seltsames remove duplicates Problem
24.11.2021 12:45:18
Daniel
also jetzt zum zweiten mal und in FETT, damit du es auch liest:
Es gibt im freigegebenen Modus Funktionen, die nicht zugelassen und gesperrt sind. Diese können dann nicht ausgeführt werden, weder vom Anwender direkt, noch von Makros!
du erkennst solche Funktionen daran, dass sie im Menü ausgegraut sind und nicht mehr angeklickt werden können.
Das trifft auf alle Menüpunkte der Gruppe DATENTOOLS zu, somit auch auf das Duplikate entfernen.
Du kannst das hier nicht anwenden, weil Microsoft das nicht erlaubt hat.
vermultlich hatten sie bei solchen Aktionen Probleme, diese mit den anderen parallel geöffneten Versionen der Mappe zu syncronisieren und sie daher einfach "ausgeschaltet".
du musst dir also was anderes einfallen lassen, um eine Duplikatfreige Liste zu erstellen.
Da du die Mailadressen ja in einem String sammelst, kannst du ja einfach mit INSTR prüfen, ob sie schon drin ist und nur dann anfügen, wenn nicht, also im Prinzip so:

if Instr( ";" & emailList, ";"& .Range("M" & j).value & ";") = 0 then
emailList & .Range("M" & j).Value & ";"
End If
Gruß Daniel
Anzeige
AW: seltsames remove duplicates Problem
24.11.2021 14:17:02
peterk
Hallo Daniel
Ich hab alles um die Hilfsspalte Z raugenommen und die Findung der eindeutigen Emails über Dictonary gelöst (damit entfällt auch removeDuplicates).
https://www.herber.de/bbs/user/149360.xlsm
Willst Du mehr über Dictionary erfahren, hier ein guter Überblick (in Englisch)
https://excelmacromastery.com/vba-dictionary/#A_Quick_Guide_to_the_VBA_Dictionary
P.S:
In Deiner Datei TestBedarf in Zeile 44 steht "Fr. Lorenz" es gibt aber nur "Fr. Lorenz, E." bzw. "Fr. Lorenz, K."
In Deiner Datei Bibliothek Zeile 21,22 sind die Email Adressen vertauscht Pilz - Piepho
Peter
Anzeige
AW: seltsames remove duplicates Problem
25.11.2021 08:38:55
Daniel
Guten Morgen Peter,
Danke erneut für diese tolle Lösung! Jetzt funktioniert die neue Testzentrale (die große Tabelle hat ein paar Reiter mehr) tadellos.
Natürlich habe ich schon eine neue Frage (hat mit den Bibliotheken zu tun), aber die gehört an eine andere Stelle ...
Bis bald und liebe Grüße im Namen des gesamten Psychologen-Teams
Daniel Jäger
AW: seltsames remove duplicates Problem
25.11.2021 08:44:56
peterk
Hallo Daniel
Danke für die Rückmeldung, für weitere Fragen bzgl. Deiner Testzentrale stehe ich weiterhin zur Verfügung.
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige