Erweiterung- oder neues Vba-Modul

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Erweiterung- oder neues Vba-Modul
von: Wolf Ludwig
Geschrieben am: 27.08.2015 13:08:18

Werte Excel Gemeinde,
ich habe im HERBER Archiv folgendes Vba Modul unter:
https://www.herber.de/forum/archiv/740to744/t740055.htm
von: Josef Ehrensberger
Geschrieben am: 03.03.2006 16:49:07
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

Bild

Betrifft: Lob an Sepp
von: Michael
Geschrieben am: 27.08.2015 14:41:38
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

Bild

Betrifft: AW: Lob an Sepp
von: Wolf Ludwig
Geschrieben am: 27.08.2015 15:51:11
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.

Bild

Betrifft: AW: Lob an Sepp
von: Michael
Geschrieben am: 27.08.2015 17:03:10
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

Bild

Betrifft: zum Verständnis
von: Michael
Geschrieben am: 28.08.2015 01:08:42
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

Bild

Betrifft: AW: zum Verständnis
von: Wolf Ludwig
Geschrieben am: 28.08.2015 09:27:30
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.

Bild

Betrifft: AW: zum Verständnis
von: Michael
Geschrieben am: 28.08.2015 12:31:55
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

Bild

Betrifft: AW: zum Verständnis
von: Wolf Ludwig
Geschrieben am: 29.08.2015 10:44:10
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


Bild

Betrifft: Fragen, Lösung?
von: Michael
Geschrieben am: 29.08.2015 17:09:25
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "von InputBox Zeile suchen und ergänzen"