Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
416to420
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
416to420
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

HTML die Zweite (mit *.XLT)

HTML die Zweite (mit *.XLT)
Dieter
Hallo Excel-Experten,
hallo Gerd,
ich hatte schon gehofft mein Problem mit dem folgenden Code gelöst zu haben, aber leider......
Option Explicit

Private Sub Oeffnen()
Dim oExplorer As Object
Dim var As Variant
var = ThisWorkbook.Path & "\VAHilfe.htm"
If Dir(ThisWorkbook.Path & "\" & "VAHilfe.htm") = "" Then
MsgBox "Datei nicht gefunden!"
Else
Set oExplorer = CreateObject("InternetExplorer.Application")
With oExplorer
.Width = 600
.Height = 350
.Top = 100
.Left = 100
.Navigate var
.StatusBar = False
.MenuBar = False
.Toolbar = False
.Visible = True
.Resizable = False
.Offline = True
End With
Set oExplorer = Nothing
End If
End Sub

Heisst: öffne ich die Originalvorlage funktioniert das Makro, auf meinen FP und auf CD. Erstelle ich jedoch aus der "XLT", die dieses Makro enthält, eine neue Datei, findet Excel die gesuchte html-Datei nicht.
Ich muß die Datei bestimmt erst speichern. Das soll jedoch automatisch erfolgen
(Verzeichnis erstellen: z.B. C:\Test und dann Speichern unter "Test1").
Wie kann ich das in dem Makro zusätzlich erreichen?
Danke für Eure Hilfe.
Gruß
Dieter
AW: HTML die Zweite (mit *.XLT)
Oberschlumpf
Hallo Dieter
Ändere den Eintrag "ThisWorkbook.Path" gegen DEN Verzeichnispfad, in dem sich die HTM-Datei befindet.
Hintergrund:
Wenn Du die Vorlagendatei /xlt)über Datei/Neu öffnen kannst, befindet sich die XLT-Datei NICHT im gleichen Verzeichnis wie die HTM-Datei. Aus diesem Grund kann die HTM-Datei auch nicht im gleichen Verzeichnis gefunden werden.
Ciao
Thorsten
AW: HTML die Zweite (mit *.XLT)
Dieter
Hallo Torsten,
in meinem speziellen Fall befindet sich die htm-Datei im selben Verzeichnis wie die XLT.
Vieleicht sollte ich die Sache etwas genauer erklären:
Beispiel: die XLT und die htm befinden sich auf einer CD im gleichen Verzeichnis. Erstelle ich aus der XLT mit einem Doppelklick im Explorer eine neue Datei kann das Makro die htm-Datei nicht finden (Eigenschaften für die neue Datei werden erst beim speichern gesetzt). Ich muß also nach dem erstellen der neuen Datei automatisch prüfen ob ein Verzeichnis vorhanden ist, dieses ansonsten erstellen und die Datei VOR DEN ERSTEN EINTRÄGEN dort abspeichern (aber automatisch).
Ist die XLT auf der Festplatte in Verzeichnis X oder Y (htm-Datei steht wiederum ebenfalls im selben Verzeichnis) tritt das Problem genauso auf.
In beiden Fällen sind VOR DEM SPEICHERN noch keine Dateieigenschaften (Pfad etc.) gesetzt. das geschieht erst mit der Speicherung.
Wenn die Datei geschlossen wird, soll ebenfalls nochmals ohne Abfrage gespeichert und der erstellte Dateinamen hierbei überschrieben werden.
(wäre bestimmt besser Schriftsteller geworden, bei den langen Texten)
Gruß
Dieter
Anzeige
AW: HTML die Zweite (mit *.XLT)
Oberschlumpf
Hi Dieter
Und ich hab, glaub ich, doch Recht :-)
Habe gerad mal Deinen Code getestet.
Zuerst in einer normalen XLS-Datei und dann in einer XLT-Datei.
In der XLS-Datei funktioniert alles einwandfrei.
Aber nicht in der XLT-Datei. (alles auf Festplatte, nicht CD)
Beim Doppelklick auf die XLT-Datei befindet sich zwar in der geöffneten Datei das Makro, aber bei dieser Datei handelt es sich noch um eine NICHT gespeicherte Datei, da beim Öffnen einer Vorlagendatei nicht die Datei an sich geöffnet wird, sonder nur eine Kopie von der Vorlage.
Und die Kopie ist eben noch nicht gespeichert.
Demzufolge kann die Eigenschaft ThisWorkbook.Path auch noch keine Zuweisung erhalten haben. Du schreibst ja selbst genau dies.
Und trotzdem verwendest Du ThisWorkbook.Path ?
Ich denke, der bessere Weg wird sein, dass Du nach der HTM-Datei suchst, und dessen eigenen Speicherpfad dann verwendest.
Eine mögliche Lösung wäre die Folgende:
(Du musst den kompletten Code in einem allgemeinen Modul speichern)


Private Declare Function SearchTreeForFile Lib "imagehlp.dll" (ByVal RootPath As StringByVal FileName As StringByVal OutputPath As StringAs Long
Public var
Sub Oeffnen()
   
Dim oExplorer As Object
Dim liLWsuche As Integer
var = ""
'es werden alle Laufwerke nach der Datei durchsucht; wenn gefunden, wird die For-Schleife abgebrochen
For liLWsuche = 67 To 90
Call FindFile(Chr(liLWsuche) & ":\", "VAHilfe.htm")
If var <> "" Then
Exit For
End If
Next
Set oExplorer = CreateObject("InternetExplorer.Application")
        
With oExplorer
.Width = 600
.Height = 350
.Top = 100
.Left = 100
.Navigate var
.StatusBar = False
.MenuBar = False
.Toolbar = False
.Visible = True
.Resizable = False
.Offline = True
End With
         
Set oExplorer = Nothing
End Sub
Function FindFile(ByVal Path As StringByVal File As StringAs String
    
Dim As String * 1024
        
If SearchTreeForFile(Path, File, s) Then
FindFile = Left$(s, InStr(s, vbNullChar) - 1)
var = FindFile
End If
End Function


Mit diesem Code wird außer C:\ jedes Laufwerk nach der HTM-Datei durchsucht, da jedes Laufwerk ja ein CD-Laufwerk sein könnte.
Da ich davon ausgehe, dass die HTM-Datei auf jeden Fall irgendwo vorhanden ist, habe ich auf eine Fehlerkontrolle verzichtet, was passieren soll, wenn die Datei nicht gefunden wird.
Und wenn Du sicher gehen möchtest, dass NUR auf CD-Laufwerken gesucht werden soll, müsstest Du eine weitere Funktion einbauen, die vor der Dateisuche, die Art der Laufwerke bestimmt.
Habe gerad mal nach irgendeiner HTM-Datei auf einer CD suchen lassen. Es hat nur ca. 3 Sekunden gedauert.
So :-)
Ich hoffe, dass ich nun nix falsch verstanden hatte, und dass vor allem sich der Name der HTM-Datei nicht ändert. Dann wäre fast alles umsonst :-)
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: HTML die Zweite (mit *.XLT)
Dieter
Hallo Torsten,
war die letzten 1 1/2 Stunden offline.
Wenn Du das sagst, wird es wohl stimmen (meine VBA-Kenntnisse beschränken sich auf abgucken in diesem Form und den "Herber-CD's).
Ich werde Deinen neuen Code umgehend ausprobieren.
Der Name der htm-Datei wird sich nicht ändern. Falls doch (für eine andere Excel-Applikation) kann doch das Makro angepasst werden, oder liege ich hier schon wieder daneben? (FindFile(Chr(liLWsuche) & ":\", "?.htm")
Gebe Dir gleich Bescheid.
Gruß
Dieter
AW: HTML die Zweite (mit *.XLT)
Oberschlumpf
Hi Dieter
ups...ich war zwar nicht offline, habe aber trotzdem nicht mitbekommen, dass Du geantwortet hast :-)
Nein, Du hast Recht. Natürlich kann man den Code anpassen.
Es ist halt nur schon später. auch ich mache (Denk)fehler...grins
Und? Hattest Du den Code schon getestet? Du wolltest doch berichten.
Ciao erstmal
Thorsten
Anzeige
siehe 00:18:59 ;-)) o.T.
24.04.2004 00:58:45
Dieter
Hallo Torsten!
Siehe Oben
Gruß
Dieter
AW: HTML die Zweite (mit *.XLT)
Dieter
Hi Torsten,
Makro funzt einwandfrei! Super!
Möchte aber trotzdem bei öffnen bzw. erstellen einer neuen Datei aus der Vorlage, einen Dateinamen vergeben (diesen lasse ich vorher in einer bestimmten Zelle kreieren), nach vorhandenem Verzeichnis auf Laufwerk suchen und ggf. erstellen, dann diese Datei dort speichern (ohne das vorher Daten eingegeben werden können). Nach Bearbeitung der Datei diese unter dem zuerst erstellten Namen erneut speichern, bzw. beim schließen automatisch speichern.
Eventuell schwer nachvollziehbar was ich da machen möchte.
Würde die Datei ja auch mal hochladen, aber diese Applikation wird mit einem anderen Produkt (Investitionsgut) an unsere Kunden weitergegeben. Könnte Dir das ganze aber per E-Mail als ZIP senden. Falls Interesse besteht, melde Dich kurz.
Nochmals besten Dank.
Gruß
Dieter
Anzeige
HIER gehts weiter..und bitte..NUR hier :-)
Oberschlumpf
Hi Dieter
Willst mich wohl ärgern, oder wie?
Erst den einen Eintrag beantworten, und darauf hin dann woanders weiter antworten...tzz :)
Aber OK. Ich versuch es weiter :-)
Aber (das 2.) :-)
Du musst mir auf die Sprünge helfen.
Du schreibst, Du willst den Dateinamen aus einer BESTIMMTEN Zelle verwenden.
Warum erzählst Du nicht, aus WELCHER Zelle? :-)
Wir wüssten dann besser bescheid, und müssten nicht mit den Worten beginnen:
"Angenommen, der Wert steht in A1, dann...."
Verstehst Du, was ich meine?
Gib immer soo viele Informationen raus, wie geht...am besten alle! :-)
Schick mir die Datei mal bitte an thgob@web.de
Unnnd...füge bitte erklärende Worte hinzu....wo was nicht läuft, welche Werte wo eingesetzt werden sollen, usw.
Danke :-)
Ciao erst mal
Thorsten
Anzeige
AW: HIER gehts weiter..und bitte..NUR hier :-)
Dieter
Hallo Torsten,
tut mir leid. Habe immer noch meine Probleme wo ich gerade im Thread antworten soll oder muß. Werde versuchen mich zu bessern.
Habe Dir die Datei gerade mit einigen Erläuterungen gemailt. Ich hoffe Du kommst damit klar (habe allerdings absolut keine bedenken).
Melde Dich.
Danke
Dieter
AW: HIER gehts weiter..und bitte..NUR hier :-)
Oberschlumpf
Hi Dieter
Ich wieder :-)
Also...(erst mal etwas by the way ;-) )
Der Grund, weshalb ich nun gar nix mehr verstand, ist der, dass ich Deine Einstiegsfrage in diesem Thread total vergessen hatte.
- Ursprünglich wolltest Du wissen, wie man innerhalb einer XLT-Datei die geöffnete Kopie derselben irgendwo (z Bsp unter C:\Test\Test1.xls) speichern kann
- irgendwann kamen wir von dieser Frage ab, und es ging schleichend über in eine neue Frage: "Wieso wird die HTM-Datei nicht gefunden"
Na ja, und daran hatten wir uns ja etwas "festgebissen" :-)
Und da nun, mich hats auch gefreut :-), das Prob mit der HTM-Datei gelöst war, muss ja immer noch die 1. Frage beantwortet werden ;-)
Oki...nun bin ich wieder im Bild....und wir können weiter tun :-)
-----by the way ende ------- :-)
Und nun direkt zu Deinen Fragen ;-)
Versuch mal dies:
1. Wenn mein Kunde die Dateien NICHT auf seine Festplatte kopiert, soll die neu erstellte XLS trotzdem in einem zu erstellenden Verzeichnis gespeichert werden...
Schreib zu Deinem Code im AutoOpen-Makro diese Zeilen (unterhalb dem, was da schon steht)


Dim lstrDatName as String
'wenn in E6 (noch) nix drin steht, dann soll die Datei unter C:\Varius-II\Varius-II.xls gespeichert werden; dadurch erübrigt sich auch Frage 2. aus der Mail
If Sheets("Kundendaten").Range("E6")="" then
    'Kontrolle, ob das Verzeichnis Varius-II auf C:\ schon existiert
    lstrDatName = Dir("C:\Varius-II", vbDirectory)
        'wenn nicht, wird es nun erstellt
        If lstrDatName="" then MKDir("C:\Varius-II")
    'und die Datei wird gespeichert
    ThisWorkbook.Save "c:\Varius-II\Varius-II.xls"
    
End If


3. Wenn mein Kunde (oder jeder andere User) Daten in die Datei eingegeben hat und (was häufig geschieht) die Tabelle über das Kreuz schließt, soll automatisch unter dem vergebenen Dateinamen ohne Rückfrage gespeichert werden.
Schreib dieses:


Private Sub Workbook_BeforeClose(Cancle As Boolean)
'erst Dein Code, der hier schon steht
If Sheets("Kundendaten").Range("E6")="" then
        ThisWorkbook.Save "c:\Varius-II\Varius-II.xls"
        ThisWorkbook.Close
    Else
        ThisWorkbook.Save "c:\Varius-II\ & Sheets("Kundendaten").Range("E6").Value & ".xls"
        ThisWorkbook.Close    
End If
End Sub


So, erst mal fertig für heute :-)
Es kann sein, dass Du vielleicht nachkorrigieren musst, da ich diesen Code hier einfach nur so reinschrieb, ohne zu testen....aber ich bin müde :-)
Bin neugierig auf Deinen nächsten Beitrag hierzu ;-)
Ciao & wech...
Thorsten

Anzeige
AW: HIER gehts weiter..und bitte..NUR hier :-)
Dieter
Hallo Torsten,
bin wieder da, wenn auch erstmal nur kurz (muß dringend einiges erledigen).
Ich werde Deine Zusätze heute ausprobieren und melde mich dann.
(das Durcheinander mit der Fragerei im Thread war nicht beabsichtigt)
Gruß
Dieter
AW: HIER gehts weiter..und bitte..NUR hier :-)
Oberschlumpf
Hi Dieter
Viel Spaß und Erfolg bei dem was Du vorhast.
Das mit den unterschiedlichen Fragen ist hier nicht so das Prob (man (auch ich) darf nur nicht die Hälfte vergessen..grins), da haben wir hier schon ganz andere Dinge erlebt :-)
Bis denne..
Thorsten
AW: HIER gehts weiter..und bitte..NUR hier :-)
Dieter
Hallo Torsten,
habe gerade mal versucht den ersten Teil Deiner Nachricht einzubauen.
Nach Fehlermeldungen habe ich diesen Teile für sich allein in eine neue Mappe gestellt.
Beim Aufruf der Datei erhalte ich folgende Fehlermeldung:
Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung.
Bleibt dann in Zeile - ThisWorkbook.Save "c:\Varius-II\Varius-II.xls" - hängen.
.SAVE wird mir hierbei unterstrichen.
Werde selbst noch versuchen ein bischen zu basteln.
(Schalte ich diese Zeile aus, wird das Verzeichnis auf "C" einwandfrei erstellt, bis dahin läuft das Makro also fehlerfrei)
Gruß
Dieter
Anzeige
AW: HIER gehts weiter..und bitte..NUR hier :-)
Dieter
Hallo Torsten,
Fehler gefunden. Zeile muß lauten: - ThisWorkbook.SaveAS "c:\Varius-II\Varius-II.xls" -
Es gibt beim Syntax bestimmt Unterschiede in den Excel-Versionen. Ich erstelle alles in 8.0 um aufwärtskompatibel zu sein.
Na dann werde ich mal weiter basteln.
Gruß
Dieter
AW: HIER gehts weiter..und bitte..NUR hier :-)
24.04.2004 13:45:18
Oberschlumpf
upppsss :)
Hi Dieter
Ich glaub, bei dem Fehler handelt es sich nicht um einen Versionskonflikt, sondern ICH hatte nur den falschen Befehl verwendet :-)
Da es sich ja um eine noch nicht gespeicherte Datei handelt, muss ich, na klar!, SaveAs verwenden. (denk ich mir jetzt mal so :-) )
Nun denn, Du hast ja den Fehler schnell gefunden.
Bis zum nächsten...grins :-)
Thorsten
Anzeige
AW: HTML die Zweite (mit *.XLT)
Gerd
If Dir(ThisWorkbook.Path & "\" & "VAHilfe.htm") = "" Then
MsgBox "Datei nicht gefunden!"
'---------------------------------------------------
Exit Sub
'---------------------------------------------------
Else
Set oExplorer = CreateObject("InternetExplorer.Application")
'............
Das mit der Vorlage hast du bisher noch nicht erwähnt, das geht dann
so auch nicht. Bin aber jetzt bis Montag offline.
Gerd
AW: HTML die Zweite (mit *.XLT)
24.04.2004 01:25:18
Dieter
Hallo Gerd,
sorry. Das mit der Vorlage hatte ich vergessen zu erwähnen (Vorlagen sind für mich eigentlich der Standard um mit meinen Datei zu arbeiten).
Ich hoffe übers Wochenende (bis Du wieder online bist) eine adäquate Lösung gefunden zu haben.
Gruß
Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige