Autor
|
Thema: Datei vorhanden??? (1278 mal gelesen)
|
robert_de Mitglied Student
Beiträge: 31 Registriert: 24.04.2005
|
erstellt am: 26. Okt. 2005 14:04 <-- editieren / zitieren --> Unities abgeben:
Hallo CATIA - Begeisterte , Habe wieder mal ein kleines Problem mit einem Makro. Mein Makro list Daten aus und speichere diese dann in einer Excel-Tabelle an sprich im *.xls Format. Jetzt möchte ich noch folgende Funktion realisieren! Bezieht sich darauf wenn eine Datei schon vorhanden ist. Wenn ich diese Datei überschreiben will soll überprüft werden ob sie gerade verwendet wird (denn somit kann sie nicht überschrieben werden). Wenn sozusagen der Wert ausgegeben wird, dass sie bearbeitet wird sollen folgende Auswahlmöglichkeiten angeboten werden. Gleicher Name wie angeben nur mit Anhang Kopie soll erstellt werden können oder ein anderer Name soll eingegeben werden können oder es soll der Speichervorgang Abgebrochen werden. Wäre super wenn jemand von euch dafür vielleicht eine Lösung hätte. Vielen Dank schon jetzt für die hoffentlich zahlreichen Tipps und Anregungen zum Code. ------------------ Viele Grüße Robert und vielen Dank für jeden Beitrag!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gdir Mitglied
Beiträge: 157 Registriert: 25.06.2003
|
erstellt am: 27. Okt. 2005 07:47 <-- editieren / zitieren --> Unities abgeben: Nur für robert_de
Zitat: Original erstellt von robert_de: Hallo CATIA - Begeisterte ,[...] Wenn ich diese Datei überschreiben will soll überprüft werden ob sie gerade verwendet wird (denn somit kann sie nicht überschrieben werden). [...]
Woher weisst Du, dass eine Datei gerade verwendet wird? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 28. Okt. 2005 06:45 <-- editieren / zitieren --> Unities abgeben: Nur für robert_de
Hallo, gdir: ich glaube das wollte er von uns wissen ;-) robert_de: ich würde auch gerne wissen wie man diese Information abgreift. Ich schätze mal die Lösung wird/könnte darin liegen, das man das über irgendwelche betriebssystemspezifischen Programmierfunktionen lösen kann. Hab mal was gelesen über LastAccessDatum. Genaueres kann ich dir leider nicht sagen, da ich hierfür gerne selber ne Möglichkeit wüsste. Aber vielleicht bring deine Anfrage ja noch die Lösung hier im Forum. Ansonsten mal in anderen Foren posten, die sich mit Betriebssystemprogrammierung (WindowsScript, VB...) beschäftigen und dann natürlich die Lösung hier posten ;-)
------------------ MfG Randle ! It's not a bug, it's a feature ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 28. Okt. 2005 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für robert_de
Hallo, wenn man unter Windows ein Excel-file öffnet, welches schon ein anderer User geöffnet hat, so wird das Excel-file automatisch schreibgeschütz geöffnet. Dann kann man den Schreibschutz einfach über die Property ReadOnly des ActiveWorkbooks abfragen, also so: '--------------Excel auf NamExcel = Catia.FileSelectionBox("Select Excel","*.xls", CatFileSelectionModeOpen) If NamExcel = "" Then End '---------in VB End / im CATSCript Exit Sub End If Set objXL = CreateObject("Excel.Application") objXL.Visible = True objXL.Workbooks.Open NamExcel bReadWrite = objXL.ActiveWorkbook.ReadOnly '---True = Schreibgeschützt / False = nicht ... ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
robert_de Mitglied Student
Beiträge: 31 Registriert: 24.04.2005
|
erstellt am: 28. Okt. 2005 13:37 <-- editieren / zitieren --> Unities abgeben:
Hallo tomtom1972, vielen Dank für deinen Tip. Leider bekomme ich das nicht ganz hin das in meinem Code umzusetzen. Deswegen habe ich dir den teil der bei mir das erstellen der Excel Datei übernimmt einfach mal in den Anhang geschrieben. Villeicht kannst du mir da etwas besser zeigen wie deine Lösung gemeint ist. Ach ja bin nur auf diese fragestellung gestoßen da mir uafgefallen ist das wenn ich die Tabelle geöffnet habe und meien Makro noch einmalüber mein Product laufen lasse und dann keine neu Datei erstellen sondern einfach die alte erstzen will einen Fehler wegen Print bekomme da diese Datei ja gerade verwendet wird. Vielen dabk schon jetzt für alle Hilfreichen Tips und Kniffe villeicht kann mir ja jetzt jemand noch etwas genauer wieterhelfen wenn er meinen Code sich angeschaut hat. ------------------ Viele Grüße Robert und vielen Dank für jeden Beitrag!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 31. Okt. 2005 06:53 <-- editieren / zitieren --> Unities abgeben: Nur für robert_de
Hallo robert_de, der vorhergehende (o.s.) Code macht folgendes: -öffnet Fenster zur Auswahl eines xls.files -lädt xls.file -überprüft, ob xls.file schreibgeschütz Dein Probelm ist ja ein anderes. Versuche einmal folgendes: 'Dim bFileExists as Boolean bFileExists = false Set oFileSystem = CreateObject("Scripting.FileSystemObject") Set oFolder = oFileSystem.GetFolder(sFolderToCheck) '----sFolderToCheck = absolter Pfadname (String) des Ordners, in den dein File gesichert werden soll, also z.B. c\test\test2\123 Set oFiles = oFolder.Files For Each File In oFiles If oFiles.Item(File.Name) = sSearchedFileName Then '---sSearchedFileName = Dateiname (String), der gesucht wird, also z.B. 456.xls bFileExists = True Exit For End If Next Wenn deine Datei schon existiert, hat der Boolean bFileExists nach dem Durchlauf des Scripts den Wert = True. Hoffe das hilft dir weiter. Gruss TomTom
------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
robert_de Mitglied Student
Beiträge: 31 Registriert: 24.04.2005
|
erstellt am: 02. Nov. 2005 15:00 <-- editieren / zitieren --> Unities abgeben:
Hallo tomtom1972, vielen Dank für deine erneute Erklärung. Aber irgendwie bekomme ich das ganze nicht wirklich hin, habe dir mal eine verkürze Version meine Makros angehängt, dein Code ist auch schon mit eingebunden. Nur scheine ich genau da den Fehler zu machen, dass es bei mir einfach nicht funktionieren will. Wäre echt nett wenn du es dir mal anschauen würdest, vielleicht kannst mir dann ja etwas besser helfen. Gibt es eigentlich die Möglichkeit das ganze dynamischer zu gestalten? Denn mit deinem Code ist man ja an einen Speicherort und Dateinamen gebunden. Kann ich da meine Variable "Datensatz" nutzen (siehe Makro)? Jetzt schon vielen Dank für deine Antwort wenn du dir noch mal die Arbeit machen solltest und dich mit meinem Problem beschäftigst.
------------------ Viele Grüße Robert und vielen Dank für jeden Beitrag!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 04. Nov. 2005 07:35 <-- editieren / zitieren --> Unities abgeben: Nur für robert_de
Hallo, die Pfadangaben/Namen waren ein Bsp. Dein Problem mit dem überschreiben verstehe ich immer noch nicht. Man kann (zumindest unter Windows) keine xls-file überschreiben, den jemand anders geöffnet hat. Im Anhang findest du ein Script, was nichts anderes Macht, als ein leeres xls-file zu erzeugen. Du bekommst eine Abfrage, falls es eine gleichnamige schon einmal gibt. Überschreiben geht nicht, falls diese schon mal geöffnet ist. Dann bist du im Script in einer Schleife und das ganze fängt von vorne an. Probiers aus. Das ganze Zeug ist gedimmt (hilft beim Verständnis) und ein bischen erklärt. Kopiers einfach in dein Script rein. Hoffe es geht jetzt alles Gruss TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |