Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Text Datei bearbeiten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Text Datei bearbeiten (1580 mal gelesen)
G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 08. Nov. 2007 16:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Tag zusammen!

Ich habe nun den Beitrag http://ww3.cad.de/foren/ubb/Forum226/HTML/000528.shtml  und diesen http://ww3.cad.de/foren/ubb/Forum226/HTML/000808.shtml  gelesen und versucht zu verstehen.
Bahnhof.

Mein Problem ist, dass ich diverse Suchbegriffe habe wie "Nodes", "Quad" usw und diese Zeilen löschen will.
Oder noch besser: Alles was nach "Quad" ist gleich weglöschen.

Die einzelnen Zeile filtern von
0 123.456 78.901
1 323.456 178.901
.
.
38875 38.328 59.333

auf

123.456 78.901
323.456 178.901
.
.
38.328 59.333

sollte ich eigentlich irgendwie hinkriegen - Denke ich! 

Leider habe ich in der Excel Hilfe auch nichts darüber gefunden, wie ich eine Zeile mit dem gefundenen Begriff weglösche.

Irgendwelche Ideen / Ansätze?

Vielen Dank schon mal!

PS:
Dateien mit bis zu 50'000 Zeilen sind sehr mühsam von Hand zu editieren! 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



Sehen Sie sich das Profil von tunnelbauer an!   Senden Sie eine Private Message an tunnelbauer  Schreiben Sie einen Gästebucheintrag für tunnelbauer

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 08. Nov. 2007 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von G. Dawg:

Die einzelnen Zeile filtern von
0 123.456 78.901
1 323.456 178.901
.
.
38875 38.328 59.333

auf

123.456 78.901
323.456 178.901
.
.
38.328 59.333


Da brauchst du eigentlich nur das File umbenennen auf .sdf und dann mit Hilfe des Import-Assistenten von Excel öffnen; dann bekommst du diese 3 Werte in seperaten Spalten. Danach brauchst du nur noch die erste Spalte löschen...


Zu deiner ersten Anfrage: das war mir auf die Schnelle zuviel Text - kannst du da nicht ein Beispiel bringen?

------------------
Grüsse

Thomas

Korrekturen zum Kochbuch AutoLISP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 08. Nov. 2007 17:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


output.txt


real_output.txt

 
tunnelbauer, danke für die rasche Antwort.
Doch genau mit dem Import-Dingsda habe ich es bisher gemacht. Doch es werden noch ganz, ganz viele Dateien auf mich zukommen! :-\

Nun wollte ich das Ganze automatisieren.
Angehängt ist nun so eine Datei (output.txt) und wie sie aussehen sollte (real_output.txt).

Ich brauche nur den ersten Abschnitt dieser Datei. Sprinch, bis zum Abschitt Quad. Dann muss ich nur den ersten Teil neu formatieren. Achja, die erste Zeile muss auch weg.

Die Formatierung:
Da sind immer 3 Zahlengruppen: # X Y
Die # brauche ich auch nicht. Ich möchte schlussendlich nur die reinen XY Koordinaten in einer anderen Datei zurückspeichern. Also, alles bis zur zweiten Zahlengruppe löschen.

Das Löschen bereitet mir Probleme. Ich konnte schon alle Punkte mit Kommas ersetzten ... da ich aber in der Schweiz zuhause bin, sind die Punkte die Dezimaltrennzeichen.  Aber das ist so ein Thema für sich! Ich bin immernoch der Meinung, dass die in D alles falsch machen! ;D

------------------
   

[Diese Nachricht wurde von G. Dawg am 08. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 08. Nov. 2007 17:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Dein Quad kommt immer in der Datei vor und es ist immer alles zu löschen was darunter ist ?

Versuche es halt mal als Basis mit dem Makro - Recorder. Erst mal in der ersten Spalte das Quad suchen, dann von da an bis Ende Tabelle alles selektieren und löschen, dann erste Spalte selektieren und löschen, zweite Spalte selektieren formatieren, dritte Spalte selektieren und formatieren. Dann solltest Du schon eine gute Basis haben um  daraus ein allgemein gültiges Makro zu bauen.

Axel

Mal Quick and Dirty  :

Code:
Sub Makro2()
    Columns("A:A").Select
    Selection.Find(What:="Quad", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
   
    Range(ActiveCell, Cells(65000, 25)).Select
    Selection.Delete Shift:=xlUp
    Columns("A:B").Select
    Selection.Delete Shift:=xlToLeft
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
End Sub


[Diese Nachricht wurde von Axel.Strasser am 08. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 08. Nov. 2007 17:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Axel! 

Unglaublich! Da hat sich was getan mit dem MacroRecorder seit Excel 97 (habe jetzt Excel 2007)! 
Das ist ja scho fast brauchbar! Jetzt nur noch mit den Makros von den anderen Beiträge mischen und fertig!

Den MakroRecorder hätte ich nie im Leben versucht! 

Vielen Dank für den Tipp!
Ich werde mich mit dem fertigen Makro melden, wenn es wirklich zu 100% funktioniert!
Hoffentlich bis bald einmal! 

Gruss,
Gilbert.

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 08. Nov. 2007 18:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mist... per Import, fügt Excel alles in Spalte A ein!     
Und jedesmal die Datei von "Hand" importieren macht auch kein Spass. Werde dem Excel-API schon noch auf die Schliche kommen. 

Note to myself: Sonst versuche ich es direkt mit der SWX-API, wenn es wirklich nicht anders geht. Da gibts schon das Gen3DCloud. Vielleich lässt sich dort was manupulieren?!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



Sehen Sie sich das Profil von tunnelbauer an!   Senden Sie eine Private Message an tunnelbauer  Schreiben Sie einen Gästebucheintrag für tunnelbauer

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 08. Nov. 2007 18:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Wenn alles in der Spalte A ist, dann solltest du eventuell den Delimiter von , oder . auf [Leerzeichen] bzw [Tab] ändern...

------------------
Grüsse

Thomas

Korrekturen zum Kochbuch AutoLISP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 08. Nov. 2007 21:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Das Einlesen kannst Du ja mal mit diesem Konstrukt versuchen:

Code:
    ChDir "C:\Dokumente und Einstellungen\Axel\Desktop"
    Workbooks.OpenText Filename:= _
        "C:\Dokumente und Einstellungen\Axel\Desktop\output.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
        Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _
        , 1), Array(4, 1)), TrailingMinusNumbers:=True

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 08. Nov. 2007 21:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Da du erwähnst, dass du bis zu 50000 Zeilen bearbeiten musst und du nur die Bereinigte Datei brauchst,
würde ich das komplett mittels Vba machen und nicht erst versuchen die Datei nach Excel zu importieren,
irgendwann gehen dir die Zeilen aus 

Deine txt Datei zeilenweise einlesen, den String kürzen und neu raus schreiben,
kann natürlich in Bezug der Auswahlmöglichkeit des Inputs/Outputs (Dialog) komfortabler gestaltet werden ,-)

Code:
Sub test()
Dim fso ' FileSystemObject
Dim textfile ' Dateiobjekt
Dim test() As String 'Stringarray für die einzelnen Zeilen
Dim outtext As String
Dim i As Double ' Indexvariable [von Integer auf Double geändert ;) ]
i = 0

astring1 = "Nodes"
estring2 = "Quad"

Set fso = CreateObject("Scripting.FileSystemObject") 'Das FSO wird gesetzt
Set textfile = fso.OpenTextFile("W:\input.txt", ForReading) 'Das Dateiobjekt wird auf die Datei gesetzt
Open "W:\output.txt" For Output As #1
'Schleife bis EOF(End Of File)
Do While textfile.AtEndOfStream <> True
ReDim Preserve test(i) 'Dynamisches vergrössern des Arrays
test(i) = textfile.ReadLine ' eine Zeile lesen
If InStr(1, test(i), astring1) Then GoTo jump  'Wenn "Nodes" gefunden
If InStr(1, test(i), estring2) Then GoTo jump1 'Wenn "Quad" gefunden
outtext = Mid$(test(i), 16, 99)'einfaches trimmen
Print #1, outtext
i = i + 1 'Index erhöhen
jump:
Loop
jump1:
Close #1 'zu schreibende Datei wieder schliessen
textfile.Close 'Datei wieder schließen
End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 08. Nov. 2007 22:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

@Thomas: soweit ich erfahren habe mit 2007 nicht mehr  , Kollege meinte er wäre mal in einer Tabelle runtergefahren und bei 1'000'000 hätte er dann aufgehört.

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 08. Nov. 2007 22:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Guten Abend zusammen,

es sind 1.048.576, er war fast am Ende . Ne gute Quelle ist xLimits.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 07:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Thomas Harmening:

Code:

Set textfile = fso.OpenTextFile("h:\tmp\input.txt", ForReading) 'Das Dateiobjekt wird auf die Datei gesetzt


Danke, Thomas Harmening!
Das sieht schon mal vielversprechend aus.
Jetzt aber: ich musste das Objekt "OpenTextFile" anders definieren:

Code:

Set textfile = fso.OpenTextFile("h:\tmp\input.txt", 1,0) 'Das Dateiobjekt wird auf die Datei gesetzt

[nochmals versuchen.... unnötige-lange-quitschende-musik-um-künstliche-nervende-spannung-zu-erzeugen]

Aaaah!!!  Jetzt aber!!!! Gleich nochmals mit einer anderen Datei...
[jeopardy-countdown-musik und dazu kurz noch schnell eine Datei auf +270000 Zeilen (10MB) aufblasen]

Thomas... es läuft nicht mal eine Sekunde und schon sind die 270000 Zeilen gefiltert!!!! 
Vielen, vielen, vielen Dank!!!
Ich dachte nicht, dass das so schnell geht! Weder das verarbeiten, noch das erlangen eines funktionierenden Scrits!!!

Unendlichen Dank, Thomas!!!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 08:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Morgen auch,

FWIW, ich hätte das so angefangen.

CUSee You, Bernd
--

Code:
Option Explicit

Sub x()
  Dim intInpHandle As Integer  ' Handle Eingabedatei
  Dim intOutHandle As Integer  ' Handle Ausgabedatei
  Dim strOneLine As String      ' Eine Zeile
  Dim intPos As Integer        ' Position des 1. Leerzeichens in einer Zeile
 
  intInpHandle = FreeFile
  Open "e:\test\inp.txt" For Input As #intInpHandle
 
  intOutHandle = FreeFile
  Open "e:\test\out.txt" For Output As #intOutHandle
 
  Do While Not EOF(intInpHandle)
      Line Input #intInpHandle, strOneLine
      If InStr(1, strOneLine, "Nodes", vbTextCompare) < 1 Then
        If InStr(1, strOneLine, "Quad", vbTextCompare) > 0 Then
            Exit Do
        Else
            intPos = InStr(strOneLine, " ")
            If intPos > 0 Then strOneLine = Mid(strOneLine, intPos + 1)
            Print #intOutHandle, strOneLine
        End If
      End If
  Loop
  Close #intInpHandle
  Close #intOutHandle
End Sub



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 08:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

bst, was ist da der Vorteil gegenüber dem Script von Thomas? Ich denke, dass da ein Vorteil ist, sonst hättest Du das nicht beigetragen.

Ich werde es auf jeden Fall mal versuchen und auch einen Geschwindigkeitsvergleich machen.

EDIT:
Ok, sieht gut aus aber es filtert die erste Zahlengruppe nicht raus. 


------------------
   

[Diese Nachricht wurde von G. Dawg am 09. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 10:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hi,

Zitat:
aber es filtert die erste Zahlengruppe nicht raus.

Hmm, dann hatte ich wohl die Anfrage nicht richtig verstanden. Ich dachte Deine Eingabedaten hätten die Form:

0 123.456 78.901
1 323.456 178.901
.
.
38875 38.328 59.333

und Du willst da die erste Zahl rauslöschen, also alles vom Zeilenanfang bis inklusive des ersten Leerzeichens.

Zitat:
bst, was ist da der Vorteil gegenüber dem Script von Thomas?

IMHOIn my humble oppinion (Meiner Meinung nach) sollte es:
a) noch schneller sein, da es auf den hier unnötigen "Redim Preserve" verzichtet und
b) auch mit (fast) beliebig grossen Dateien funktionieren und nicht bei 32.767 Zeilen ohne "Nodes" und "Quad" schlapp machen. (Dim i as integer) 

CUSee You, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

bst, der genau Inhalt ist in den Daten die ich hochgeladen habe:

Code:
Nodes
          0    33.36039    10.46330
          1    33.36039    10.93934
          3    33.36039    10.73939
          3    33.36039    10.93991
          4    33.36039    11.99993
          9    33.36039    11.33999
          6    33.36039    11.93997
          7    33.36039    11.73993
          3    33.36039    11.93999
        139    33.36039    99.19000
      33410    33.36039    99.39790


Leider beginnt (fast) jede Zeile mit mehr als einem Leerzeichen und da steht es bei mir an! :(

Code:
outtext = Mid$(test(i), 16, 99)'einfaches trimmen

Filtert zwar ab Zeichen 16 (welchen ich auch 12 geändert habe, weil vielleicht mal ein grösseres Teil kommt, welches auch mal über 100mm lang ist) bis 99. Ich wollte dann mit der Anweisung "count" bis zur zweiten Zahlengruppe zählen und den Wert auf die Mid$ Funktion übertragen.

Leider bin ich zu doof, die Count-Funktion zu nutzen. Unser VB-Spezi ist gerade eben 3 Wochen im grünen Urlaub (Militärdienst).
Ich habe es nicht zustande gebracht, die Lücken auf der n Zeile zu zählen, dann wieder zählen bis wieder eine Lcke kommt und dann Mid$ anzuwenden.

Doch jetzt funktioniert es mit "Mid$(test(i), 12,99" sehr gut!

Vielleicht kann ich den Teil in Dein Script einfügen, bst.

Ich werde mich melden.... schon mal ein grosses DANKE an Alle!!! 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 09. Nov. 2007 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe es so versucht

Code:
 
strOneLine = "          6    33.36039    11.93997 "
strOneLine = Mid$(strOneLine, 12, 99) 'einfaches trimmen
debug.print strOneLine ' "    33.36039    11.93997 "
Do
Dim vDummy
vDummy = InStr(strOneLine, " ")
strOneLine = Right(strOneLine, Len(strOneLine) - vDummy)
debug.print strOneLine ' ***
Loop While vDummy <> 0

meine Zeile von den übrig bleibenden vorab-Leerzeichen zu befreien. Es löschte mir die ganze Zeile! 

*** debug.print ( "_" als Leerzeichen für die Formatierung):
____33.36039    11.93997
___33.36039    11.93997
__33.36039    11.93997
_33.36039    11.93997
33.36039    11.93997
___11.93997
__11.93997
_11.93997
11.93997

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hi,

ist Dir das Ausgabeformat egal, d.h. kann es auch:

33.36039X11.93997

sein wobei X exakt ein Leerzeichen ist?

Oder müssen da exakt 4 Leerzeichen sein, oder exakt so viele wie eingelesen wurden, oder ??

CUSee You, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 09. Nov. 2007 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Gilbert, ich würde Excel die Arbeit machen lassen und die Datei ins Excel nehmen, dann hast Du das ganze Problem mit den Blanks nicht. Sonst musst Du Dich noch mit Trim und Such Funktion umeinanderschlagen

Axel

[Diese Nachricht wurde von Axel.Strasser am 09. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 12:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Leider weiss ich nie genau, wieviele Leerzeichen es wirklich sind.
Das kommt ganz auf die Geometrie des Teiles an.... leider!!! 

Was ich weiss:
[xLeerzeichen] [Zahlen die ich nicht brauche] [xLeerzeichen] [Zahlen die ich brauche] [xLeerzeichen] [Zahlen die ich brauche] und später einmal, kommt noch eine dritte (bzw. vierte) Spalte mit Zahlen, die ich brauche ....

btw: es schneit!!!! 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 12:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hi,

hmm, jetzt habe auch ich (endlich) die angehängten Dateien gefunden ...

Ist Dir mit sowas gedient?

Ersetzt an jedem Zeilenanfang Leerzeichen + Ziffern + Leerzeichen durch nichts, via:

re.Pattern = "^\s+\d+\s+"

^ Anfang der Zeile
\s+ beliebig viele Leerzeichen
\d+ beliebig viele Ziffern
\s+ beliebig viele Leerzeichen

CUSee You, Bernd
--

Code:

Option Explicit

Sub x()
  Dim intInpHandle As Integer  ' Handle Eingabedatei
  Dim intOutHandle As Integer  ' Handle Ausgabedatei
  Dim strOneLine As String      ' Eine eingelesene Zeile
  Dim intPos As Integer        ' Position des 1. Leerzeichens in einer Zeile
  Dim re As Object              ' Eingabezeile getrennt nach Leerzeichen
 
  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "^\s+\d+\s+"
  intInpHandle = FreeFile
  Open "e:\test\inp.txt" For Input As #intInpHandle
 
  intOutHandle = FreeFile
  Open "e:\test\out.txt" For Output As #intOutHandle
 
  Do While Not EOF(intInpHandle)
      Line Input #intInpHandle, strOneLine
      If InStr(1, strOneLine, "Nodes", vbTextCompare) < 1 Then
        If InStr(1, strOneLine, "Quad", vbTextCompare) > 0 Then
            Exit Do
        Else
            Print #intOutHandle, re.Replace(strOneLine, "")
        End If
      End If
  Loop
  Close #intInpHandle
  Close #intOutHandle
End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 12:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von bst:
Ist Dir mit sowas gedient?

Ersetzt an jedem Zeilenanfang Leerzeichen + Ziffern + Leerzeichen durch nichts, via:

re.Pattern = "^\s+\d+\s+"

^ Anfang der Zeile
\s+ beliebig viele Leerzeichen
\d+ beliebig viele Ziffern
\s+ beliebig viele Leerzeichen


Das glaub' ich ja nicht! Ich hatte keine Ahnung das VB auch RegEx kann (ich kenn das nur von PHP)!!!    Ist ja geil!!
*gutesbierzuschiebundaufswochenendetrinken*

Ich werde das nach dem Mittagessen gleich ausprobieren!!! Kann es kaum erwarten.... 


@Axel: nun muss ich das nicht mehr tun! RegEx hat die Funktionen schon eingebaut! Das ist wie Weihnachten und Geburtstag und Ostern und St.Patrick's Day zusammen!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 09. Nov. 2007 13:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:
Original erstellt von bst:
Code:

Print #intOutHandle, re.Replace(strOneLine, "")


Hat bei mir nicht funktioniert.   


EDIT:
So gehts:

Code:
          strOneLine = re.Replace(strOneLine, "")
          Print #intOutHandle, strOneLine

------------------
   

[Diese Nachricht wurde von G. Dawg am 09. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hi,

kann ich nicht nachvollziehen. Bei mir hier geht das auch direkt.

CUSee You, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 14:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Er hat einfach nichts in die Datei geschrieben?!? Keine Ahnung!

Hier ist, was ich bis jetzt habe!
Es gibt noch ein paar kleine Anpassungen ist aber soweit sehr viel besser, als das was ich heute Morgen hatte!

Code:
Option Explicit
' declarations, used windows API calls and constants
' Deklarationen, benötigte Windows API-Calls und Konstanten

Public Enum swLengthUnit_e
    swMM = 0
    swCM = 1
    swMETER = 2
    swINCHES = 3
    swFEET = 4
    swFEETINCHES = 5
    swANGSTROM = 6
    swNANOMETER = 7
    swMICRON = 8
    swMIL = 9
    swUIN = 10
End Enum

' Windows API to get the free discspace
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" ( _
    ByVal lpRootPathName As String, _
    lpFreeBytesAvailableToCaller As Currency, _
    lpTotalNumberOfBytes As Currency, _
    lpTotalNumberOfFreeBytes As Currency) As Long

' Windows API for the SaveAs Filebox
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" _
    (pOpenfilename As OPENFILENAME) As Long
' structure needed by Windows API
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type


Private Sub cmdDesiredFileName_Click()
    ' common dialog for browse for desired filename
   
    Dim OFName As OPENFILENAME
    Dim tmp As String
    'Set the structure size
    OFName.lStructSize = Len(OFName)
    'Set the filet
    OFName.lpstrFilter = "IVP Result File (*.res)" + Chr$(0) + "*.res" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
    'Create a buffer
    OFName.lpstrFile = Space$(254)
    'Set the maximum number of chars
    OFName.nMaxFile = 255
    'Create a buffer
    OFName.lpstrFileTitle = Space$(254)
    'Set the maximum number of chars
    OFName.nMaxFileTitle = 255
    'Set the initial directory
    OFName.lpstrInitialDir = "c:\temp\fürer\"
    'Set the dialog title
    OFName.lpstrTitle = Datei_Eingabe.Caption
    'no extra flags
    OFName.flags = 0
    'default extension
    OFName.lpstrDefExt = "res" + Chr$(0)

    'Show the Dialog box
    If GetSaveFileName(OFName) Then
        txtDesiredFileName.Text = Trim$(OFName.lpstrFile)
    Else
        txtDesiredFileName.Text = ""
    End If

End Sub


Private Sub CancelButton_Click()

Unload Datei_Eingabe

End Sub

Sub OK_Button_Click()
Dim intInpHandle As Integer  ' Handle Eingabedatei
  Dim intOutHandle As Integer  ' Handle Ausgabedatei
  Dim strOneLine As String      ' Eine eingelesene Zeile
  Dim intPos As Integer        ' Position des 1. Leerzeichens in einer Zeile
  Dim re As Object              ' Eingabezeile getrennt nach Leerzeichen

  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "^\s+\d+\s+"  ' RegEx: [leer][zahl][leer]
  intInpHandle = FreeFile
  Open txtDesiredFileName.Text For Input As #intInpHandle  'call OpenFile Dialog box

  intOutHandle = FreeFile
  Open "c:\tmp\output.txt" For Output As #intOutHandle  ' TODO: SaveAs...?!? öhm?
   
  Do While Not EOF(intInpHandle)
      Line Input #intInpHandle, strOneLine
      If InStr(1, strOneLine, "Nodes", vbTextCompare) < 1 Then
        If InStr(1, strOneLine, "Quad", vbTextCompare) > 0 Then
            Exit Do
        Else
           
          'Debug.Print "1: "; strOneLine
          strOneLine = re.Replace(strOneLine, "")
          Print #intOutHandle, strOneLine
          'Debug.Print "2: "; strOneLine
         
        End If
      End If
  Loop
  Close #intInpHandle
  Close #intOutHandle
 
  Set re = Nothing
  Unload Datei_Eingabe
 
End Sub


------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 09. Nov. 2007 14:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hmm,

kein Plan. Da re.Replace einen String zurückliefert sollte das eigentlich immer gehen.

Übrigens, Was willst Du denn mit "Private Declare Function GetSaveFileName" ?

In Excel gibt es "Application.GetOpenFilename" sowie "Application.GetSaveAsFilename", siehe VBA-Hilfe dazu.

CUSee You, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das glaub ich ja nicht! 
Ich habe den Schnippsel aus einem Makro für SolidWorks, desshalb vermutlich! 

Muss ich gleich mal ausprobieren!
Sieht ja 10000x einfacher aus!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 09. Nov. 2007 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

hmm, ja,
mein Code ist irgendwie chaotisch, Bernds Vorschlag ist da wohl durch strukturiert - ein Glück, das ich mit dem Programmieren kein Geld verdienen muss^^

deinen Dialog könntest du so abändern

Code:
intInpHandle = FreeFile
  ChDrive "c:\temp\fürer\"
  IVPResultFile = Application.GetOpenFilename("IVP Result File (*.res),*.res") 'call OpenFile Dialog box
    If IVPResultFile = False Then Exit Sub
    Open IVPResultFile For Input As #intInpHandle

  intOutHandle = FreeFile
  IVPoutput = Left(IVPResultFile, Len(IVPResultFile) - 4) + ".txt"
  Open IVPoutput For Output As #intOutHandle  ' TODO: SaveAs...?!? öhm?


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das ist aber auch ganz schön, Thomas!
Da wird doch glatt eine neue .txt (mit dem richtigen Namen!  ) in das gleiche Verzeichnis gespeichert!

Plus, ich habe einen Schritt gespart! Datei auswählen, Start drücken. Nun startet er direkt nach dem Auswählen! 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 09. Nov. 2007 15:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

ich vergass noch, dass man das Verzeichnis vordefinieren kann

ChDrive "c:\temp\fürer\"

ist im obigen Code nachgezogen worden.

;-) Makrotechnisch lässt sich das auch realisieren, dass immer auf das aktuellste *.res im Verzeichnis xy zugegriffen wird,
dann müsstest du nur die xl-mappe aufrufen ;-) oder halt gleich den Code als Windows Scripting Host (WSH) -dann braucht man Excel nicht ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 09. Nov. 2007 16:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gute Idee, brauch ich aber nicht 
Da die Daten nur zum ausprobieren in meinem temp sind.

Bin noch an der Fehlerabfrage und dann werde ich das Script nochmals hier hinstellen - Für die, die es interessiert.

Wünsche allen ein schönes Wochende!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
FEM Simulant / Konstrukteur / SolidWorks



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 09. Jan. 2008 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


3DPunkteWolkeAus-RES-Datei.zip

 
So!
Endlich habe ich eine einigermassen funktionstüchtige Version meines Makros!
--> Siehe Anhang, Makro mit Beispieldateien.

Einziges Problem ist noch, wenn die erste Reihe in X Achse eine negative Zahle ist (z.b. -0.01) und die nächste Zahl positiv ist (0.01) bricht das Programm ab!
Ich weiss woran es liegt, aber ich weiss nicht wie ich es beheben kann! Ich habe einen Bias von 1mm der mir sicherstellt, dass wirklich nur die Kontur übernommen wird...
Eigentlich sollte es nie einen negativen Wert für die X Achse geben (in der ersten Zeile!)!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz