Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1444to1448
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

Erweiterung- oder neues Vba-Modul

Erweiterung- oder neues Vba-Modul
27.08.2015 13:08:18
Wolf
Werte Excel Gemeinde,
ich habe im HERBER Archiv folgendes Vba Modul unter:
https://www.herber.de/forum/archiv/740to744/t740055.htm
gefunden. Ich arbeite damit sehr viel und gerne, es funktioniert wunderbar.
Dem Verfasser Josef Ehrensberger, ich hoffe er sieht es und kann an meinen
Fragen auch mitwirken, an dieser Stelle ein grosses Lob und Danke.
1. Beim Download der Dateien kommen unerwünscht Button mit, die nicht ge-
braucht werden (wichtig ist der Text), kann man diese während oder nach
dem Download löschen?
2. Während dem Download werden die Dateien mit vorgebenen Angaben beschriftet
und fliessen allesamt in einen Win Ordner.
Meine Frage: Ist es möglich, gleichzeitig pro Datei einen Win Ordner zu
generieren, diesen mit dem Dateinamen zu beschriften und die entsprechende
Datei in den Einzelordner kopieren. Die Dateien im Sammelordner müssen
erhalten bleiben. Kann man dies in das o.g. Modul mit einbauen? Wenn
nicht, dann als seperates Modul.
Wäre schön, wenn es hierfür eine Lösung gäbe.
MfG wolf ludwig

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lob an Sepp
27.08.2015 14:41:38
Michael
Hi wolf ludwig,
ich habe mal den Betreff entsprechend angepaßt, damit es der Sepp auch sieht.
Der Code lädt, so wie er unter dem Link zu finden ist, anscheinend nur jpg-Datein, und die können ja kaum buttons enthalten.
Laß uns bitte wissen, welche Art von Datein Du herunterlädst und speicherst.
Schöne Grüße,
Michael

AW: Lob an Sepp
27.08.2015 15:51:11
Wolf
Sorry, ich bin zur Zeit in der Reha und werde lfd. Zu irgendwelchen Anwendungen geholt.
Ich lade damit .*html Seiten runter. Später importiere ich den Text. Button oder auch Objekte sind nach dem runterladen eh inaktiv.

AW: Lob an Sepp
27.08.2015 17:03:10
Michael
Hi,
wo ist dann das Problem?
Sagen wir mal so: wenn alles importiert und "verwurschtelt" ist, kannst Du mit dem Win-Explorer das komplette Verzeichnis löschen - das geht händisch oder auch mit Excel, und zwar mit einem Shell-Aufruf und einer Kombination von Befehlen wie
del c:\blabla\import\html-Datein /s
und
rd
Gib mal in der Konsole rd /? und del /? ein und sieh Dir die Parameter an.
Schöne Grüße,
Michael

Anzeige
zum Verständnis
28.08.2015 01:08:42
Michael
Hallo nochmal,
nur zum Verständnis: geht es Dir darum, nicht die kompletten html-Seiten herunterzuladen (mitsamt allen Grafiken, Buttons usw.), sondern von vornherein nur den enthaltenen Text?
Gruß,
Michael

AW: zum Verständnis
28.08.2015 09:27:30
Wolf
Guten Morgen Michael,
es geht um folgendes: Die *.html Seiten werden dank Sepp Vba-Script zu hundert oder mehr Seiten in einen bestimmten Ordner mit samt den Button (Objekte) u.v.m. heruntergeladen. Diese sind dann inaktiv (nutzlos u. sehen hässlich aus). Die html-Seite muss ohne die Button voll erhalten bleiben. Ich will Dir ein Gegenbeispiel geben: Wenn ich die Seiten in ein Sheet importiere, dann erscheinen die Objekte auch. Um diese los zu werden mache ich folgendes: Bearbeiten/Gehe zu/Objekte , es werden dann auf dem Sheet sämtliche Objekte ausgewählt und mit Inhalte löschen in einem Schwung gelöscht.
Sowas sollte es entweder in Sepp's Script oder Seperat für Einzelseiten in dem bestimmten Ordner geben.

Anzeige
AW: zum Verständnis
28.08.2015 12:31:55
Michael
Hallo Wolf Ludwig,
bitte sag, was ist der Vorname?
Also, wenn Du das in Excel importieren und hier weiterverarbeiten kannst, werden Dir die beiden Testfunktionen die Augen öffnen:
Option Explicit
Sub ShapesAnzeigen()
Dim shp As Shape
'For Each shp In Sheets("DeinTabellenBlatt").Shapes
'oder so:
For Each shp In ActiveSheet.Shapes
If shp.Type = 12 Then
If MsgBox(shp.Name & " (Typ: " & shp.Type & ") löschen?", 3) = vbYes Then shp.Delete
Else
MsgBox shp.Name & " Typ: " & shp.Type & " " & shp.TopLeftCell.Address
End If
Next
End Sub
Sub ObjekteAnzeigen()
Dim o As Object
ActiveSheet.DrawingObjects.Select
For Each o In Selection
If MsgBox(o.Name & " löschen?", 3) = vbYes Then o.Delete
Next
End Sub
Die Basis für ObjekteAnzeigen war die Aufzeichnung des Makros mit dem Rekorder, wie Du es beschrieben hast: F5-Taste (das wirft "Gehe zu" an, ohne über das Menü zu gehen), Objekte ergibt die aufgezeichnete Code-Zeile
ActiveSheet.DrawingObjects.Select

Das restliche Drumherum durchläuft alle Objekte, die selektiert wurden, und löscht sie nach Rückfrage.
Bei Objekten steht die Eigenschaft .type offensichtlich nicht zur Verfügung, deshalb würde ich den oberen Code bevorzugen, mit dem nur Objekte oder vielmehr Shapes gelöscht werden, die einen bestimmten Typ haben: vielleicht möchtest Du ja Buttons raus haben, aber Bilder erhalten, wobei... Wobei die Herren Grafiker oft auch irgendwo ziemlich sinnlose Mini-Grafiken für Menüs oder die berüchtigten "1-Pixel-GIFs" verwenden - dann könnte man noch die Größen von Bildern abfragen und nur die löschen, die größer sind als meinetwegen 200x200.
Natürlich willst Du nicht bei jedem Shape ne Abfrage, aber ich würde vorschlagen,
- daß Du mit dem Code mal herumspielst, um ein Gespür dafür zu bekommen, was Du löschen willst und was nicht und
- daß Du mir Dein Makro für den Import in Excel hochlädst, denn daran ließe sich die Lösch-Funktion dann andocken.
Schöne Grüße,
Michael

Anzeige
AW: zum Verständnis
29.08.2015 10:44:10
Wolf
Guten Morgen Michael,
Danke nochmal für Dein Vba, es hat auf an Hieb funktioniert, Kompliment, ich wollte so etwas können.
Nur leider, es geht am Bedarf vorbei.
Das Makro von Sepp hat folgende Aufgabe: In einem Sheet stehen in b1 bis... Bezeichnungen, in c1 bis...
Url's. Das Makro arbeitet diese Url nacheinander ab und transferiert die html-Seiten in einen eigens dafür
vorgesehen Windows-Ordner "Download" auf die Festplatte. Gleichzeitig werden die einzelnen html-Dateien mit den
Bezeichnungen aus b1 bis... versehen.
Um was geht es jetzt:
Auf jeder runtergeladenen Seite sind diese besagten Shapes drauf, die hässlich aussehen und für die spätere
Weiterverwendung nutzlos sind. Somit ist mein Gedanke, während dem download oder in einem separaten Arbeitsgang
die Shapes auf den Dateien, nicht die Dateien selbst, in dem Download-Ordner zu löschen. Anbei setze ich das Makro
von Sepp so wie ich es verwende mit rein.
Wäre schön wenn Du Dich der Sache noch einmal annehmen könntest.
MfG Wolf
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Private Declare

Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Sub DownloadFiles()
Dim lngResult As Long, lngRow As Long, lngLast As Long
Dim strFolder As String, strError As String
strFolder = "C:\Users\Wolf Ludwig\Documents\Download" 'Zielverzeichnis - Anpassen
If Right(strFolder, 1)  "\" Then strFolder = strFolder & "\"
lngLast = Cells(Rows.Count, 2).End(xlUp).Row
For lngRow = 1 To lngLast
lngResult = URLDownloadToFile(0, Cells(lngRow, 3), strFolder & Cells(lngRow, 2) & ".html", 0,  _
0)
If lngResult  0 Then
strError = strError & Cells(lngRow, 3) & vbLf
End If
Next
If Len(strError) > 0 Then
MsgBox "Folgende Dateien konnten nicht geladen werden!" & vbLf & vbLf & _
strError, vbInformation, "Hinweis"
End If
End Sub

Anzeige
Fragen, Lösung?
29.08.2015 17:09:25
Michael
Hallo Wolf,
die Betonung liegt auf "Weiterverarbeiten".
Wie und womit möchtest Du weiterverarbeiten? Wenn mit Excel, dann kann man meinen obigen Code an passender Stelle einfügen.
Nur: direkt beim Herunterladen mit der vorhandenen Befehlskombination hat man keine weiteren Einflußmöglichkeiten.
Außer quasi, die Datei direkt nach dem Herunterladen zu öffnen und zu beackern, und da gibt es eben auch verschiedene Möglichkeiten: a) als .HTM in Excel öffnen, die Shapes löschen und wieder als .HTM speichern (aber ich könnte mir vorstellen, daß das dauert) oder b) als TEXT in Excel einlesen und den Text bearbeiten.
Oder den ganzen Download anders gestalten.
Ich muß zugeben, daß ich vom Fleck weg erwartet hätte, daß Sepps Befehl ALLES kopiert und alle nicht-HTM-Elemente in einen extra Ordner ablegt.
Zur Veranschaulichung:
Userbild
Du kannst eine Internet-Seite vom Browser aus (übers Menü oder mit Strg+s) speichern, und zwar wahlweise als reine HTM-Datei oder "vollständig", so daß zusätzlich zur HTM-Datei ein gleichnamiger Ordner erzeugt wird, in dem sich die Grafiken usw. tummeln.
Deshalb mein eingangs erwähnter Vorschlag, einfach diese zusätzlichen Ordner zu löschen.
URLDownloadToFile lädt aber offensichtlich nur die reine HTML-Datei, die dann etwa so aussieht, wenn Du sie im Browser öffnest:
Userbild
Anstelle von Hans' Bild sieht man nur den dafür reservierten Platz - bei Buttons wäre es ähnlich.
So. Ist es DAS, was Du meinst?
Daß Du derart "reservierte", aber nicht genutzte "Flächen" entfernt haben möchtest?
Ich habe Ransis Code aus ...
https://www.herber.de/forum/archiv/1220to1224/1222895_Internetlink_oeffnen_und_Datei_speichern.html
... um die Löschfunktion erweitert ...
Public Sub machs()
Dim WB As Workbook
Dim shp As Shape
Set WB = Workbooks.Open("https://www.herber.de/autor.html")
With WB
.SaveAs "C:\Dein_Ordner\Download\Herber_mit_X.xls"
.SaveAs "C:\Dein_Ordner\Download\Herber_mit_H.htm"
' ********************************* von hier ***********************
For Each shp In .ActiveSheet.Shapes
shp.Delete
Next
' **** bis hier werden alle Shapes gelöscht ************************
.SaveAs "C:\Dein_Ordner\Download\Herber_ohne_X.xls"
.SaveAs "C:\Dein_Ordner\Download\Herber_ohne_H.htm"
.Close True
End With
End Sub

... und er speichert je mit und ohne Shapes als xls oder htm ab - allerdings wird das HTM-Design mangels .css - Datein dabei völlig zerschossen - aber so hast Du den enthaltenen Text annähernd frei von mißliebigen Elementen.
Du mußt nur evtl. Pfade anpassen (oder leg Dir nen Ordner C:\Dein_Ordner (samt Unterordner) an, dann mußt Du Dich nicht immer in die Tiefen des Users durchhangeln.
Außerdem habe ich mit X2000 entwickelt; ggf. kannst Du statt .xls .xlsx verwenden.
Wenn die ausgegebenen Datein für Dich ok sind, läßt sich das easy in die vorhandene Schleifenstruktur reinpfriemeln, und Excels Warnhinweise kann man auch abschalten.
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige