Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Teile aus TXT-Datei in entsprechende Excel-Felder kopieren

Frage Entwicklung Batch & Shell

Mitglied: grasihuepfer

grasihuepfer (Level 1) - Jetzt verbinden

24.06.2013 um 14:30 Uhr, 1626 Aufrufe, 8 Kommentare, 1 Danke

Hallo Experten,

ich würde gern folgendes realisieren:


Die Felder A1-A9 in einem Excel-Sheet wurden von mir schon angelegt und mit Seat 1-9 bezeichnet. Nun möchte ich gern automatisch aus dieser Textdatei

ad3116483bed0b0e53feb910309b9758 - Klicke auf das Bild, um es zu vergrößern

1. die Namen der Spieler den Seats zugewiesen bekommen. Und zwar in die Felder B1-B9.

2.Der Chipstand des jeweiligen Spielers in C1-C9 eingeordnet werden.

3. Die Zahl nach "Big Blind" in ein beliebiges Excel-Feld eingefügt werden, z. B. in D1

So soll das Ganze dann aussehen:

e2676214af0b379b67fcf9b6717cde2b - Klicke auf das Bild, um es zu vergrößern

Nun passiert noch folgendes: Die Textdatei verändert sich ständig, es werden immer wieder Daten hinzugefügt, und zwar genau nach dieser Struktur. Die Chipstände der Spieler ändern sich somit ständig. Ich möchte nun, am besten mit einer Art Klickbutton, den Kopiervorgang automatisch starten, so dass sich das Excelblatt stäändig mit der Textdatei wandelt und immer den aktuellsten Stand übernimmt.

Vielen Dank für Eure Rückmeldungen und Lösungen



Mitglied: colinardo
24.06.2013, aktualisiert um 20:20 Uhr
Hallo grasihuepfer. Willkommen im Forum!
auf die schnelle sollte das hier in Excel VBA funktionieren:
in Zeile 2 noch den Pfad zur Textdatei angeben...
01.
Sub Players() 
02.
    textfilepath = "C:\test.txt" 
03.
    Set fso = CreateObject("Scripting.Filesystemobject") 
04.
    Set txt = fso.OpenTextFile(textfilepath, 1) 
05.
    strText = txt.ReadAll() 
06.
    txt.Close 
07.
 
08.
    Set myRegExp = CreateObject("vbscript.regexp") 
09.
    myRegExp.IgnoreCase = True 
10.
    myRegExp.Global = True 
11.
    myRegExp.Pattern = "(Seat \d:) (.*) \(\$(\d+)" 
12.
    counter = 0 
13.
    'Seats regex 
14.
    Set myMatches = myRegExp.Execute(strText) 
15.
    For Each myMatch In myMatches 
16.
        If myMatch.SubMatches.Count >= 1 Then 
17.
            seat = myMatch.SubMatches(0) 
18.
            spieler = myMatch.SubMatches(1) 
19.
            chips = myMatch.SubMatches(2) 
20.
            Worksheets(1).Range("A1").Offset(counter, 0).Value = seat 
21.
            Worksheets(1).Range("A1").Offset(counter, 1).Value = spieler 
22.
            Worksheets(1).Range("A1").Offset(counter, 2).Value = chips 
23.
            counter = counter + 1 
24.
        End If 
25.
    Next 
26.
    'Big Blind RegEx 
27.
    myRegExp.Pattern = "big blind \$(\d+)" 
28.
    Set myMatches = myRegExp.Execute(strText) 
29.
    bigblind = "" 
30.
    If myMatches.Count >= 1 Then 
31.
        bigblind = myMatches(0).SubMatches(0) 
32.
    End If 
33.
    Worksheets(1).Range("D1").Value = bigblind 
34.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: grasihuepfer
28.06.2013 um 06:15 Uhr
Hallo Uwe!

Vielen Dank für Deine Hilfe.Leider passiert nichts beim Einfügen der VBA-Funktion. Die Zahlen sind übrigens alle rot. Ist das normal? Was muss ich in den Einstellungen beachten bzw. kann ich den Text überhaupt direkt so rein-kopieren?
Bitte warten ..
Mitglied: colinardo
28.06.2013 um 08:52 Uhr
och nö ..... dafür gibt es doch den Quelltext Button oben rechts des Code-Feldes um nur den reinen Code zu kopieren! Die Zahlen gehören natürlich nicht dazu !!!!!!
Bitte warten ..
Mitglied: grasihuepfer
29.07.2013, aktualisiert um 09:50 Uhr
Hi Uwe,

ich habe es jetzt ohne die Zahlen versucht. Leider ohne Erfolg. In der Excel passiert garnichts. Ich habe mal den VBAcode hier reinkopiert und hinter die Wörter, die sich farblich verändert haben, die entsprechende Farbe in Klammer dahinter geschrieben. Vielleicht findenst Du so noch die Lösung.

Danke und Gruß Jens


01.
Sub (blau)Players() 
02.
    textfilepath = "C:\Users\Jens\Desktop\Test\test small.txt" 
03.
    Set(blau) fso = CreateObject("Scripting.Filesystemobject") 
04.
    Set(blau) txt = fso.OpenTextFile(textfilepath, 1) 
05.
    strText = txt.ReadAll() 
06.
    txt.Close 
07.
 
08.
    Set myRegExp = CreateObject("vbscript.regexp") 
09.
    myRegExp.IgnoreCase = True(blau) 
10.
    myRegExp.Global = True(blau) 
11.
    myRegExp.Pattern = "(Seat \d:) (.*) \(\$(\d+)" 
12.
    counter = 0 
13.
    'Seats regex(grün) 
14.
    Set(blau) myMatches = myRegExp.Execute(strText) 
15.
    For Each(blau) myMatch In (blau)myMatches 
16.
        If (blau)myMatch.SubMatches.Count >= 1 Then(blau) 
17.
            seat = myMatch.SubMatches(0) 
18.
            spieler = myMatch.SubMatches(1) 
19.
            chips = myMatch.SubMatches(2) 
20.
            Worksheets(1).Range("A1").Offset(counter, 0).Value = seat 
21.
            Worksheets(1).Range("A1").Offset(counter, 1).Value = spieler 
22.
            Worksheets(1).Range("A1").Offset(counter, 2).Value = chips 
23.
            counter = counter + 1 
24.
        End If(blau) 
25.
    Next(blau) 
26.
    'Big Blind RegEx(grün) 
27.
    myRegExp.Pattern = "big blind \$(\d+)" 
28.
        Set myMatches = myRegExp.Execute(strText)  
29.
bigblind = ""  
30.
 If myMatches.Count >= 1 Then (blau) 
31.
bigblind = myMatches(0).SubMatches(0)  
32.
End If  
33.
Worksheets(1).Range("D1").Value = bigblind  
34.
End Sub 
35.
 
36.
 
37.
Private Sub (blau) Worksheet_Activate() 
38.
 
39.
End Sub (blau) 
40.
 
41.
Private Sub (blau)Worksheet_SelectionChange(ByVal(blau) Target As Range) 
42.
 
43.
End Sub(blau)

[Edit Biber]Pseudocode in Pseudocodetags gesetzt. [/Edit]
Bitte warten ..
Mitglied: colinardo
29.07.2013 um 07:56 Uhr
OK ich glaube du brauchst erst mal einen Grundkurs VBA dann wüsstest du nämlich wissen das die Blaufärbung kein Fehler ist sondern die Markierung der VBA Schlüsselwörter.
Und klar passiert erst mal nichts nachdem du den Code eingefügt hast, du must ihn ja erst explizit starten, entweder den Cursor in dem Makro platzieren und dann F5 drücken, oder einer Schaltfläche das Makro zuweisen.
Danach zurück in auf die erste Tabelle wechseln und sehen was extrahiert wurde.
P.S. die Lösung muss ich nicht erst finden, die steht schon in meinem ersten Kommentar in Form des Codes der einwandfrei funktioniert wenn man ihn denn richtig anzuwenden weiß. Ich möchte nicht unhöflich erscheinen aber das hier ist ein Administrator-Forum und kein "wie bastel ich mir mein Spiel"-Forum. D.h. es sollte hier Primär um Fragestellungen gehen die Problemstellungen eines "Administrators" angehen.

Gruß Uwe
p.s. bitte den Beitrag noch als gelöst markieren. Danke.
Bitte warten ..
Mitglied: grasihuepfer
29.07.2013 um 13:45 Uhr
Alles klar, danke Dir!

Ich bin doch Administrator...und zwar auf meinem PC

nein Spaß bei Seite, Ich hab mich noch nicht so intensiv mit VBA auseinandergesetzt und ehrlich gesagt etwas einfacher vorgestellt.

Hast Du für mich noch ne gute Infoseite zu dem Thema?

Danke
Bitte warten ..
Mitglied: colinardo
29.07.2013 um 13:53 Uhr
VBS Tutorials
http://www.google.de/search?q=vbs+tutorial

Die Objekte und Eigenschaften des jeweiligen Office Programms findest du dann in der Hilfe des VBA Editors.
Bitte warten ..
Mitglied: grasihuepfer
30.07.2013 um 12:35 Uhr
Alles Klar, prima!
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
CSV-Datei nach Excel importieren (5)

Frage von mrvfbnummer2 zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch nur neueste Datei mit bestimmten Dateianfang kopieren (3)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...