Anzeige
Archiv - Navigation
1636to1640
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
VBA: speichern mit Namen aus Zelle dynamisch
03.08.2018 19:53:58
Bernd
Hallo zusammen,
Ich möchte Webseiten als MHT-Datei in einen FestplattenOrdner speichern. Diese sollen aus Spalte B2:B6 abgearbeitet werden. D.h. wenn der Link aus B2 beabeitet wird, soll die Datei den Namen aus Zelle A2 bekommen plus die Endung .mht. Dazu habe ich im Web nachfolgenden Code gefunden.
Sub SaveAsMHT(ByVal url As String, Optional ByVal path As String = ".")
Dim file As String
path = Sheets("Tabelle1").Range("C2").Value
With CreateObject("CDO.Message")
.CreateMHTMLBody url, 31
file = path & "/" & Sheets("Tabelle1").Range("A2").Value & ".mht"
With CreateObject("Scripting.FileSystemObject")
If .FileExists(file) Then .DeleteFile file, True
End With
.CreateMHTMLBody url
.GetStream.SaveToFile file
End With
End Sub

Sheets("Tabelle1").Range("A2").Value
Bei diesem Codeteil komme ich nicht weiter, dieser soll analog der Zeile in Spalte B sein. D.h. wird Datei aus Zeile 2 Spalte B bearbeitet, so nehme aus der selben Zeile den Dateinamen aus Spalte A.
MusterDatei: https://www.herber.de/bbs/user/123119.xlsm
Vielen Dank schon mal im Voraus!
Userbild
Office Version 2016 Pro 32bit - Windows10 Pro 64 bit
"Wenn du jemanden ohne Lächeln triffst, schenke ihm dein's!"

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
04.08.2018 09:01:11
Oberschlumpf
Hi Bernd,
hier, versuch mal (getestet + funktioniert (bei mir))
https://www.herber.de/bbs/user/123121.xlsm
Ich hab am Ende von For/Next ein MsgBox "fertig" eingefügt, damit du erkennst, dass der Code durchgeführt wurde.
Außerdem habe ich im eigtl Speicher-Sub ein DoEvents eingefügt.
zumindest auf meinem PC hatte es einige Male zu lange gedauert, bis ein Speichervorgang abgeschlossen war.
Die Folge: Excel hatte sich "aufgehängt".
Weitere Infos zu DoEvents findest du in der Excel-Hilfe oder bei Google.
Hilft meine Datei?
Ciao
Thorsten
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
04.08.2018 19:41:14
Bernd
Hallo Thorsten,
Sorry, das ich mich erst jetzt melde, aber es waren dringende Gartenarbeiten zu erledigen, naja und wenn es nach den Frauen geht, muss immer alles gestern fertig sein.
Zu deiner Datei mit der Code-Korrektur, alles so wie ich es haben wollte, toll.
Mir ist beim Testen etwas aufgefallen und es ist eine Frage entstanden und zwar, wenn ich den Link öffne im Internet-Explorer und dann mit der Maus im IE das Kontext-Menü mit rechter Maustaste aufrufen, kann ich die Datei auch im Format TXT speichern, was nur ein Drittel an Speichervolumen hat.
Wäre es möglich meinen Code so zu ändern, dass er nicht das MHT- sondern das TXT-Format verwendet?
Danke schon mal im Voraus!!!
Sonnige Grüße aus Bremen
Bernd
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 09:00:44
Oberschlumpf
Hi Bernd,
eigentlich wollte ich antworten mit:
"Leider weiß ich nicht, wie man den Code anpassen muss (ob es überhaupt möglich ist), damit im txt-Format gespeichert wird"
Aber dann habe ich mich dohc mal "rangetraut" :-)
Erst mal:
Ich habe vollständig neuen Code geschrieben. Du findest mein Makro im Modul namens "Oberschlumpf".
(ich wollte die Übersicht in schon vorhandenem Code nicht durcheinanderbringen, und du kannst den Namen des Moduls natürlich auhc ändern)
Meine Herangehensweise ist das Automatisieren von Datenimport von Webseiten in Excel.
Ich denke mal, dein MHT-Makro wird es ähnlich machen:
Seite aufrufen, umwandeln + speichern in MHT-Dateien.
Ich habe automatisiert, was du in Excel über Daten/externe Daten abrufen/aus dem WEB manuell tun könntest.
1. zuerst wird ein Tabellenblatt hinzugefügt
das wird als Hilfstabelle für den Datenimport benötigt
2. dann wird Zeile für Zeile in Spalte B deiner Datentabelle die URL's in die Hilfstabelle importiert
3. im vorletzten Abschnitt meines Codes wird jedes mal der Inhalt aus der Hilfstabelle in eine txt-Datei importiert, die im angegebenen Verzeichnis in Zelle C2 gespeichert wird
4. am Ende wird dann die Hilfstabelle gelöscht....und es erscheint..."Fertig" :-)
hier die Datei
https://www.herber.de/bbs/user/123141.xlsm
Hilfts?
Ciao
Thorsten
...grüß mal deine Frau von mir + erinner sie daran, dass auch Männer manchmaaaal ihren PC-Spaß haben wollen und nicht immer im Garten schuften dürfen... :-)))))
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 14:01:32
Bernd
Hallo Thorsten,
...grüß mal deine Frau von mir + erinner sie daran, dass auch Männer manchmaaaal ihren PC-Spaß haben wollen
Wie Recht du hast ...
Vorab ein riesiges Dankeschön für deine Mühe!!!!
Habe die Datei getestet, leider erhalte ich Fehlermedung 1004 in der Zeile ".Refresh BackgroundQuery:=False"
Was muss ich ändern?
Sonnige Grüße aus Bremen
Bernd
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 14:27:49
Oberschlumpf
Hi Bernd,
einfach nur Fragen wie:
"Was muss ich ändern?"
finde ich blöd, sorry.
Wie soll ich dir diese Frage von hier aus beantworten?
Ich kenne deinen PC nicht.
Ich weiß nicht, welche Excel-Version du nutzt
Wieso gibst du an der Stelle eigtl "Alle Versionen" an? Da du ja dein Problem hier vorgestellt hast, konntest du es bisher nicht lösen (was auch voll ok ist!). Aber vielleicht liegt es ja genau an der Excel-Version....diese Überlegungen nur mal so am Rande
Und...so kann ich dir echt nicht helfen, denn meine Datei funktioniert auf meinem PC mit Office 2013 problemlos.
Ciao
Thorsten
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 14:50:39
Bernd
Hallo Thorsten,
entschuldige die "flache Frage", ich hatte angenommen, dass es sich um eine Kleinigkeit handelt, die ich dann selbst korrigieren kann.
Ich kann leider meine Office Version im Menü nicht angegen, daher wähle ich immer "alle" aus.
Ich benutze Office 2016 Pro 32bit auf einem Win10 Pro 64bit Rechner.
Folgende Verweise sind im VB-Editor gesetzt:
1.Visual Basic for Application
2. Microsoft Excel 16.0 Object Library
3. OLE Automation
4. Microsoft Office 16.0 Object Library
5. Microsoft Internet Controls
6. Microsoft Sripting Runtime
7. Micosoft Visual Basic for Application Extensibility 5.3
Ich bin mir nicht sicher, ob die Infos ausreichen, um dir eine Antwort auf meine Fehlermeldung zu geben. Wenn ja würde ich mich freuen.
Lieben Gruß aus Bremen
Bernd
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 15:31:19
Oberschlumpf
Hi Bernd,
danke, das sind schon mal mehr Infos.
An den gesetzten Verweisen liegt es nicht. Ich hab für die Datei keinen zusätzlichen Verweis gesetzt.
Die Zeile, die den Fehler verursacht, ist der Moment, in dem die Internet-Abfrage gestartet wird.
a) Kommt der Fehler schon in meiner Datei oder erst, wenn du versuchst, den Code auf deine Datei zu übertragen?
b) Wenn du sofort versucht hast, den Code nur in deiner Datei zu verwenden, hast du einen Test mit meiner Datei durchgeführt?
c) Um welche URL handelt es sich, wenn der Fehler auftritt?
d) kommt der Fehler gleich mit der 1. Datenzeile oder funktioniert der Code mit einigen Zeilen, bevor dann der Fehler kommt?
Ciao
Thorsten
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 16:01:39
Bernd
Hallo Thorsten,
zu a) ja, kommt bei Aufruf des Makros "Sub sbURLtoTXT()"
zu b) nicht angewendet
zu c) müsste die Erste sein "https://www.onvista.de/aktien/kurshistorie.html?ISIN=US90130A1016&RANGE=36M"
zu d) siehe Hardcopy VBE
Userbild
Ich hoffe die Infos reichen.
Lieben Gruß aus Bremen
Bernd
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 18:15:44
Oberschlumpf
Hi Bernd,
nee, ohne dass ich auf deinem PC die Datei testen könnte, fällt mir nix weiter ein.
Hab vor n paar Minuten noch mal auf meinem PC getestet:
Userbild
Alle 5 Dateien, nach Wunsch Name aus Spalte A wurden durch den Code um 1809h erstellt.
Vielleicht gibt es ja doch etwas, das zwischen Off2016 + Off2013 nicht kompatibel ist. Ich weiß es nicht.
Ciao
Thorsten
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
05.08.2018 18:36:38
Oberschlumpf
Hi Bernd,
1. Kopiere die "Fehler-URL" in die Zwischenablage
2. Füge ein neues Tabellenblatt hinzu
3. Starte den Makro-Recorder
4. Starte das Einfügen externer Daten über "Daten/externe Daten abrufen/aus dem Web"
(zumindest ist der Weg so bei Office 2013)
Es müsste sich ein Internetexplorer geöffnet haben. Die Standard-Startseite beginnt bei mir mit "http://www.msn.com"
5. Füge anstelle der jetzigen Startseite die zuvor kopierte URL ein + klick direkt rechts neben der URL auf den OK-Button
6. Nach Aufruf der Seite ershceint bei mir oben links das OnVista-Logo. Direkt links daneben ist ein schwarzer Pfeil mit gelbem Hintergrund. Klick auf den Pfeil. Der Hintergrund wird grün. Der Pfeil wird ein Haken.
7. Klick unten rechts auf den Button "Importieren"
kann jetzt n paar Sekunden dauern
8. Die Voreinstellungen "bestehendes Arb.blatt" + "=$A$1" nicht verändern. Klick auf OK
9. Beende die Aufzeichnung des Makro-Recorders
10. Speicher die Datei + zeig sie hier per Upload
Vielleicht sieht der Code in 2016 ja anders aus als in 2013.
Aber das ist dann auch meine letzte Idee.
Ciao
Thorsten
6.
Anzeige
AW: VBA: speichern mit Namen aus Zelle dynamisch
06.08.2018 11:18:28
Bernd
Hallo Thorsten,
Hier ist das aufgezeichnete Makro...
Sub Makro1()
' Makro1 Makro
Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;https://www.onvista.de/aktien/kurshistorie.html?ISIN=US90130A1016&RANGE=36M", _
Destination:=Range("$A$1"))
.CommandType = 0
.Name = "kurshistorie.html?ISIN=US90130A1016&RANGE"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Sobald ich den im Dialogfenster (siehe dein Punkt 8) anklicke, bricht das Makro ab und eine Fehlermeldung erscheint, "...kann die Webseite nicht öffnen ..." sinngemäß.
Mir scheint, als wenn die Funktion "Daten/externe Daten abrufen/aus dem Web" bei mir beschädigt ist. Beim Öffnen erscheint "Scriptfehler", was immer das bedeutet.
Natürlich habe ich auch weiter im Netz recherhiert und einen Code von Nepumuk gefunden, Stichwort "WebBrowser Navigate", den ich etwas verändert habe und es schaffe, eine Webseite in die Arbeitsmappe zu bekommen. Allerdings bei der Schleife auf die Linkspalte bezogen komme ich nicht weiter.
Kannst du dir die Datei mal ansehen?
Musterdatei: https://www.herber.de/bbs/user/123158.xlsm
Lieben Gruß aus Bremen
Bernd
Anzeige
leider nicht
06.08.2018 20:13:47
Oberschlumpf
Hi Bernd,
leider kann ich nicht weiter helfen.
Ich hab mich an deiner neuen Bsp-Datei versucht.
Aber ich möchte dich darüber informieren, dass ich heute auf dem PC eines Kollegen (Office 2016 ist installiert) die letzte Bsp-Datei, die ich hier per Upload zeigte, problemlos starten konnte.
Alle URL's aus Spalte B wurden per Excel-Datenimport eingelesen. Immer wurden die gewünschten txt-Dateien erstellt.
Mein Code funktioniert also auch mit Office 2016 tadellos.
So scheint es wohl wirklich an deinem Office zu liegen.
Vielleicht hilft ja eine Neu-Installation von Office 2016 oder wenigstens eine Reparatur von Office 2016 auf deinem Computer.
Ciao + weiter viel Erfolg
Thorsten
AW: leider nicht
07.08.2018 11:23:43
Bernd
Hallo Thorsten,
Nicht so schlimm, weil ich gemerkt habe, dass ich auf dem falschen Weg bin!
Ich möchte mich nochmal recht♥ bedanken für diene Hilfe. Ich durfte wieder eine Menge dazu lernen!
Sonnige Grüße aus Bremen
Bernd
hmm, das mit ....
07.08.2018 19:27:37
Oberschlumpf
Hi Bernd,
...dem falschen Weg hast du aber "schnell" gemerkt.
Ciao
Thorsten

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige