Hallo, ich habe Fragen zu Excel

Ich habe folgende Probleme:

Es geht darum, Tabellen aus einem Programm namens Phibi in Excel zu übernehmen und auszuwerten.
Das Problem besteht darin, dass diese bei Einfügen ungeordnet und als Textdatei übernommen werden.
Dazu habe ich sie anschließend geordnet und unter „Zellen formatieren“ als Zahlen formatiert.
Das ganze habe ich als Makro aufzeichnen lassen.

Nun bekomme ich Probleme:

  1. Die Nullen, welche übergeben werden, können nicht zu Zahlen formatiert werden. Meine Idee: Durch eine if-Abfrage diese zu Null setzen.
    Wie geht das?

  2. Im Makro habe ich aufgezeichnet wie ich die Datei öffne und einfüge. Ich möchte jede beliebige Datei mit diesem Makro öffnen. Dazu soll es möglich sein, dass ich den Namen dieser Datei in eine Zelle eingebe und das Makro dies ausliest.
    Wie geht das?

Ich wäre sehr dankbar für Ideen und Anregungen.

Leider kann ich da nicht weiterhelfen… Sorry… ich kann Dir nicht sagen wie das funktioniert… Ich kenne auch dieses Programm Phibi nicht.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Franje,

zu 2.)
mit
wbk = Application.GetOpenFilename(„Microsoft Excel-Dateien (*.xls),*.xls“)
If wbk = False Then Exit Sub
Workbooks.Open wbk

öffnest Du den öffnen-dialog und übergibst den gewünschten Dateinamen in die variable wbk. allerdings habe ich die variable nicht definieren können. dann bekam ich immer eine Fehlermeldung.

wenn du den dateinamen unbedingt in eine zelle schreiben musst wirst du wahrscheinlich probleme mit dem dateipfad bekommen. aber es geht:

Sub test()
x = Cells(1, 2)
Z = „D:\Eigene Dateien“ & x
Workbooks.Open Z
End Sub

Den Pfad müsstest Du natürlich anpassen, der Dateinamen steht in Zelle B1.

Zu 1 fällt mir jetzt auch nicht viel ein. Steht denn in der txt eine 0 oder ein leeres feld? oder wird aus 101 dann 11? da habe ich die fragestellung noch nicht ganz verstanden.

Gruß
Thomas

Hi! Ich werde mich morgen auf der arbeit mit deinem problem
beschäftigen. Hört sich aber alles lösbar an. Kannst du mir mal dein
makro und eine Beispiel Textdatei zu Verfügung stellen?

Vielen Dank für die schnelle Antwort.

Es steht dort in etwa 0.00E00, das kommt daher, dass das Programm Zahlen mit Potenzen übergibt und die E’s geben an, um wieviel zehner Stellen die Zahl angepasst weden muss.

Aber die Lösung zu 2 werde ich morgen ausprobieren.Ich hoffe ich kann dich um Hilfe bitten, wenn ich nicht weiter komme.

Schönen Abend noch.

Hi! Ich werde mich morgen auf der arbeit mit deinem problem
beschäftigen. Hört sich aber alles lösbar an. Kannst du mir
mal dein
makro und eine Beispiel Textdatei zu Verfügung stellen?

Ich habe die Dateien noch auf der Arbeit, aber ich sende dir sie morgen früh zu.

Danke schon mal im voraus.

zu 1.: Teste einfach ob es mit einer if-Schleife funktioniert. In Excel gibt es dazu die WENN(Bedingung;Dann;Sonst)-Abfrage. Einfach mal testen. Kann das ohne die Dateien zu sehen nicht beurteilen.

zu 2.: Wüsste nicht wie sowas möglich sein sollte. Habe aber, um ehrlich zu sein, auch das Problem nicht ganz verstanden. Vll. helfen dir die Suchfunktion in Excel (STRG + F) etwas oder probierst es über ein Formular, das mit einem Makro verknüpft ist und von diesem ausgewertet wird.

Beste Grüße
Bernhard

Hi,

ich hab erst mal eine Rückfrage zu Punkt 1:
Das Programm Phibi kenne ich nicht. Damit ich besser nachvollziehen kann, wie du das mit den Nullen meinst, wär es super wenn du mir ein Beispiel zeigst, also wie das ganze in den Zellen jetzt aussieht und wie es dann genau aussehen soll.

Zu 2 werde ich dir später noch mal schreiben, ich bin gerade auf der Arbeit und wollt erst mal eine Rückmeldung geben.

Bis dahin

Node 1 Coord 2 Coord 3 Coord 1 Displ 2 Displ 3 Displ
1 0.0000E+00 0.0000E+00

das ist in etwa die ausgabe. ich weiß nicht, wie ich dateien senden kann? deswegen die kurzversion.
Den „Text 0.0000E+00“ bekomme ich nicht durch „Zellen formatieren“ umgewandelt. deswegen die Idee mit der if-Abfrage. reicht das?

Hi! Ich werde mich morgen auf der arbeit mit deinem problem
beschäftigen. Hört sich aber alles lösbar an. Kannst du mir
mal dein
makro und eine Beispiel Textdatei zu Verfügung stellen?

Wie kann ich denn ganze dateien versenden?

Node 1 Coord 2 Coord 3 Coord 1 Displ 2 Displ 3 Displ
1 0.0000E+00 0.0000E+00

das ist in etwa die ausgabe.
deswegen die kurzversion.
Den „Text 0.0000E+00“ bekomme ich nicht durch „Zellen formatieren“ umgewandelt. deswegen die Idee mit der if-Abfrage.

Das ist das Makro:
ChDir „Y:\Ordner“
Workbooks.OpenText Filename:=„Y:\Ordner\VerschiebunglinearerBlock_1“ _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1), Array(56, 1), _
Array(68, 1)), TrailingMinusNumbers:=True
Range(„B2:J232“).Select
Selection.NumberFormat = „0.00“

Node 1 Coord 2 Coord 3 Coord 1 Displ 2 Displ 3 Displ
1 0.0000E+00 0.0000E+00

das ist in etwa die ausgabe.

Den „Text 0.0000E+00“ bekomme ich nicht durch „Zellen formatieren“ umgewandelt. deswegen die Idee mit der if-Abfrage.

Sub MakroEndversion()

’ MakroEndversion Makro
’ Makro am 29.03.2010 von … aufgezeichnet


Workbooks.OpenText Filename:="\win9\daten\jvz\VerschiebunglinearerBlock_1", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1), Array(56, 1), Array(68, _
1)), TrailingMinusNumbers:=True
Range(„A1:G226“).Select
Selection.NumberFormat = „0.00“
Range(„I21“).Select

wbk = Application.GetOpenFilename(„Mappe1.xls“)
If wbk = False Then Exit Sub
Workbooks.Open wbk

Sub test()
x = Cells(1, 2)
Z = „\win9\daten\jvz“ & VerschiebunglinearerBlock_1
Workbooks.Open Z

End Sub

Ich habe jetzt VerschiebunglinearerBlock_1 in B1 geschrieben. Wo ist der Fehler?

Hi,

schick die Datei mal an

[email protected]

dann kann ich dir bestimmt fix helfen.

Hallo Franje,

ich habe mal versucht das genze etwas „Blind“ zu schreiben. Du hast bisher garnichts mit vba gemacht?

Du hast jetzt beide Codes von mir an deinen angehangen, vba arbeitet den Code aber von oben nach unten ab, außer Du hast Sprungmarken gesetzt.
Probier den Code unten mal aus. Er bezieht den Dateinamen aus der Zelle B1. Der Bezug B2 kommt aus der cells(1,2) Anweisung und kann nach Bedarf geändert werden (Die 1 steht für Zeile 1, die 2 für Spalte 2, demnach wäre c5 dann cells(5,3)).

Ist die einzulesende Datei immer gleich groß? Die Zeile „Range(„A1:G226“).Select“ selektiert den beschriebenen Zellbereich. Ich habe den Bereich mal mit usedrange.select geändert. Jetzt sollte der gesamte genutzte Zellbereich angesprochen werden.

Das Problem mit dem Zellen formatieren kannst Du ohne If-Anweisung lösen. Das wäre auch sehr auswändig da Du jede Zelle durchlaufen müsstest. Das Problem scheint mir eher zu sein dass nach den Null ein Punkt und kein Komma steht, daher kann Excel das nicht als Zahl verstehen. Mit der „Cells.Replace what…“ Zeile sollten alle Punkte durch Kommas in der Tabelle ersetzt werden. Danach deine Zellen formatieren Anweisung und es sollte 0,00 in der Zelle stehen.

Der Code steht unten.

Schönen Gruß
Thomas

Sub MakroEndversion()

’ MakroEndversion Makro
’ Makro am 29.03.2010 von … aufgezeichnet


x = Cells(1, 2)
Z = „\win9\daten\jvz“ & x

Workbooks.OpenText Z, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(8, 1), Array(20, 1), Array(32, 1), Array(44, 1), Array(56, 1), Array(68, _
1)), TrailingMinusNumbers:=True

Cells.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

UsedRange.Select
Selection.NumberFormat = „0.00“
Range(„I21“).Select

End Sub

füge in dein makro oben die zeile

Dateiname=inputbox(„Dateiname“)

ein, so kannst du deinem Programm den Dateinamen übergeben ersetze weiterhin deinen konstanten Dateinamen durch die Variable Dateiname (ohne „“)