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

Suche VBA Hilfestellung für Autoimport mehre TXT zum auswerten

Frage Microsoft Windows Tools

Mitglied: Vidan011

Vidan011 (Level 1) - Jetzt verbinden

01.04.2014, aktualisiert 03.04.2014, 2588 Aufrufe, 3 Kommentare

Schönen guten Tag Community,


01.
Sub Input_Files_From_Path() 
02.
 
03.
Dim strPfad     As String 
04.
Dim strDatei    As String 
05.
Dim intFF       As Integer 
06.
Dim strText     As String 
07.
Dim wks         As Worksheet 
08.
 
09.
Set wks = Tabelle1                                      
10.
strPfad = "M:\test\test1"    'hier liegen die files (serververzeichnis) 
11.
strDatei = Dir(strPfad & "*.txt")     'auswahl das es txt sind                  
12.
 
13.
Do While strDatei <> "" 
14.
    intFF = FreeFile() 
15.
    Open strPfad & strDatei For Input As #intFF 
16.
        strText = Input(LOF(1), #intFF) 
17.
    Close #intFF 
18.
    
19.
    WriteToClp strText 
20.
    
21.
    With wks 
22.
        With .Cells(Rows.Count, 1).End(xlUp).Offset(1) 
23.
            .Value = 1 
24.
            .TextToColumns .Cells(1), Comma:=True   'komma als trennung 
25.
            wks.Paste .Cells(1) 
26.
        End With 
27.
    End With 
28.
    
29.
    strDatei = Dir() 
30.
Loop 
31.
 
32.
End Sub 
33.
 
34.
Public Sub WriteToClp(txt As String) 
35.
Dim IE As Object 
36.
Set IE = CreateObject("HTMLfile") 
37.
IE.ParentWindow.ClipboardData.SetData "text", txt & "" 
38.
Set IE = Nothing 
39.
End Sub 
40.
 

Es sind mehre text die immer den selben Inhalt haben:
1,1,37,37,469,495,0,495,0,508,0,38,1,508,0,482,0,37

Die Anzahl ist immer die selbe es kann aber auch Text sein der darin steht.

Eine TxT kan mehre untereinander geschriebene Zeilen haben.
Quasi von Oben nur anderen Zahlen.

Mit einzelnen TXT Files mit nur 1ner Zeile Inhalt funktioniert das, aber so nicht weshalb auch immer.

Wenn noch jemand einen string hätte damit ich das Verzeichnis weglassen kann und das ganze immer im Verzeichnis ausgeführt wird indem das Sheet liegt, wäre Prima.


Viele grüße euer Vidan

Mitglied: 115420
LÖSUNG 02.04.2014, aktualisiert 03.04.2014
Hallo Vidan011!

Versuchs mal damit:
01.
Option Explicit 
02.
 
03.
Private Const sSheetName = "Tabelle1" 
04.
 
05.
Sub Input_Files_From_Path() 
06.
    Dim oFso As Object, oFile As Object 
07.
     
08.
    Set oFso = CreateObject("Scripting.FileSystemObject") 
09.
     
10.
    Application.ScreenUpdating = False 
11.
     
12.
    For Each oFile In oFso.GetFolder(ThisWorkbook.Path).Files 
13.
        If LCase(oFso.GetExtensionName(oFile.Name)) = "txt" Then 
14.
            Call TextImport(oFile.Path) 
15.
        End If 
16.
    Next 
17.
 
18.
    Application.ScreenUpdating = True 
19.
End Sub 
20.
 
21.
Private Sub TextImport(ByRef sFileName) 
22.
    Dim iRowNext As Long 
23.
     
24.
    With Sheets(sSheetName) 
25.
        iRowNext = .Cells(.Rows.Count, "A").End(xlUp).Row 
26.
         
27.
        If Not IsEmpty(.Range("A1")) Then 
28.
            iRowNext = iRowNext + 1 
29.
        End If 
30.
         
31.
        With .QueryTables.Add(Connection:="TEXT;" & sFileName, Destination:=.Cells(iRowNext, "A")) 
32.
            .AdjustColumnWidth = True  'Spaltenbreite automatisch anpassen True/False 
33.
            .TextFilePlatform = 1252 
34.
            .TextFileTextQualifier = xlTextQualifierNone 
35.
            .TextFileParseType = xlDelimited 
36.
            .TextFileCommaDelimiter = True 
37.
            .Refresh BackgroundQuery:=False 
38.
            .Delete 
39.
        End With 
40.
    End With 
41.
End Sub
Wobei sich die Text-Dateien im gleichen Ordner befinden müssen, wie die Arbeitsmappe.

Grüße

Der Ratsuchende
Bitte warten ..
Mitglied: Vidan011
03.04.2014 um 12:25 Uhr
Guten Tag,

sieht TOP aus :D Funktionieren tut das ganze genau so wie Gewünscht!

Aber ich hatte schon Probleme mit meinem VBA Model, bei dir steig ich garnichtmehr durch :D

*wieder ab ans lernbuch*

Grüße Vidan
Bitte warten ..
Mitglied: 115420
LÖSUNG 03.04.2014, aktualisiert 04.04.2014
Hallo Vidan!

Freut mich, wenn es wie gewünscht funktioniert

Also, diese Klasse unterstützt die neueren und umfangreicheren Dateisystem-Funktionen.
01.
Dim oFso As Object 
02.
Set oFso = CreateObject("Scripting.FileSystemObject") 
Diese Klasse kannst Du auch über den Object-Katalog>Klassen>Rechtsklick>Verweise einbinden. Die Klasse trägt den Namen 'Microsoft Scripting Runtime'. Um alle verfügbaren Funktionen zu erfahren, wählst Du im Object-Katalog im obersten Auswahlfeld anstatt <Alle Biblitheken> einfach <Scripting> aus.

Die Deklaration würde nach Einbindung der Klasse dann so lauten:
01.
Dim oFso As FileSystemObject 
02.
Set oFso = New FileSystemObject
Die Funktion QueryTable entspricht der Funktion 'Externe Daten abrufen' in der Excel-Oberfläche>Daten. QueryTable bietet eine ganze Reihe von Möglichkeiten(Text-Import, Webabfragen...). Von daher macht es durchaus Sinn, mal ein Makro mit den gewünschten Optionen (Abfrage speichern) aufzuzeichnen und sich anschließend den Code anzusehen. Als letzte Anweisung sollte immer das '.Delete' folgen, weile ansonsten jede einzelne Abfrage gespeichert und dadurch Zellbereiche mit einer Abfrage belegt werden (rotes Ausrufezeichen zum aktualisieren), was nicht erwünscht ist, weil es ja keine konstanten Abfragen, also immer gleiche Text-Dateien mit gleicher Zeilenanzahl sind...

Grüße

Der Ratsuchende
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von coca22COCA zum Thema Webentwicklung ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...