proggen
Goto Top

Ordner auswählen - xlsDateien darin auslesen - in neue Tabelle einfügen

mit VBA möglich?

Hallo,

komme aus der Java-Fraktion und kenne mich mit VBA kaum aus, doch VBA scheint für diese Lösung geeigneter zu sein.

Ich möchte folgendes lösen:
(Info: xls-Dateien haben unterschiedlich viele Zeilen. Spalten bleiben konstant)

1. Via Auswahlfenster ein Ordner auswählen
2. Ordnerauswahl in Variable speichern
3. bestimmte Zellen in der Zeile/Zeilen sollen aus allen xls-Dateien in dem Ordner (und evtl. Unterordner) kopiert werden und ->
4. in eine neu generierte Datei hintereinander eingefügt werden

Dachte das sei "mal eben" programmiert, aber ist nicht so trivial wie ich dachte.

Gibt es vielleicht Anregungen oder Lösungen, damit ich das Rad nicht neu erfinden brauche?

Thx.
Simone

Content-Key: 78221

Url: https://administrator.de/contentid/78221

Printed on: April 20, 2024 at 11:04 o'clock

Member: SvenGuenter
SvenGuenter Jan 17, 2008 at 13:41:43 (UTC)
Goto Top
das kannst du recht einfach lösen.

Form erstellen direlement drauf setzen fielelemet drauf setzen.
in der direlemt.path setz du dirkt den pfad wo du hinwillst. In der Fileelement siehst du dann die Files in der Ordnerstruktur.

Dann muss du nur noch die xls öffnen nach den parametern suchen diese auslesen und in eine Datei wegschrieben. Dies machst du mit dem File System Objekt.


Das war es. Wenn du hier ein komplette Lösung willst wird dir die keiner geben.
Als Ansatz Folgendes:

'****************************************************  
'Benötigt eine Form, ein label, zwei Buttons, ein Dirlist und ein Filelist  
'****************************************************  
Option Explicit

'****************************************************  
'Globale Variable auf die man ausserhalb der Form direkt zugreifen kann. Diese enthält  
'in diesem Fall den Dateinamen  
'****************************************************  
Private filename As String


'****************************************************  
'Form entladen  
'****************************************************  

Private Sub button_cancel_Click()
Unload Me
End Sub

'****************************************************  
'Setzen der Globalen Variablen  
'****************************************************  

Private Sub button_dataselect_Click()
Call setfilename(Me.Label1)
End Sub

'****************************************************  
'Setzen des Labels auf den String der Datei die per Doppelklick ausgewählt wurde  
'****************************************************  

Private Sub File1_dblClick()
Dim dateiname As String
dateiname = File1.filename
Me.Label1 = dateiname
End Sub

'****************************************************  
'Laden der Form   
'****************************************************  

Private Sub Form_Load()
'****************************************************  
'Direlement Path auf c:\ als standard setzen  
'****************************************************  

dir_auflistung.Path = "C:\"  
'****************************************************  
'Filepath auf gleichen Pfad setzen wie direlement  
'****************************************************  

File1.Path = dir_auflistung.Path

End Sub


Private Sub dir_auflistung_change()
'****************************************************  
'sollte der User einen anderen Ordner auswählen fileelemnt auch auf diesen Pfad setzen  
'****************************************************  

dir_auflistung.Refresh
File1.Path = dir_auflistung.Path

End Sub




'****************************************************  
'Gewohnheit bracuht man nciht da man die globale Variable überall heraus ansprechen kann.  
'****************************************************  





'****************************************************  
'Funktion zum setzen der Globalen varibale  
'****************************************************  

Public Function setfilename(tempfilename As String)
filename = tempfilename

End Function


'****************************************************  
'Funktion zum holen der globalen variable  
'****************************************************  

Public Function getfilename() As String

getfilename = filename

End Function


So damit hast du eigentlich fast alles was die Ordner und Filestruktur angeht nun noch eine kleine Hilfe zm FSO

Option Explicit


Public Function dateilesen()
Dim datei As String
Dim fso, source, retstring
Dim computername As String, benutzername As String, ipnummer As String, logon As String, logoff As String, status As Boolean

'Konstanten für den Modes des FSO  
Const ForReading = 1, ForWriting = 2, ForAppending = 8


'Definition der benötigten internen Variablen  
'***********************************************************  
'Hier der Teil um direkt aus den Textfiles die Daten zu lesen  
' Dieses Textfile wird zum füllen der DB genutzt.  
'***********************************************************  

'Erzeugen des FileSystemObject  
Set fso = CreateObject("Scripting.FileSystemObject")  

'Zuweisung der Quelldatei  
datei = "C:\0109.txt"  
Set source = fso.opentextfile(datei, ForReading, False)




Do While source.AtEndOfStream <> True
retstring = source.readline
Dim arrayretstring
arrayretstring = Split(retstring, ";")  
computername = arrayretstring(0)
'Hier kann man dann mit dem >Index das array qweiteren variablen zuweisen  
Loop
MsgBox (arrayretstring(1))


End Function

Dies istz ein Beispiel fürs Lesen einer datei. Zum schreiben musst du halt appending oder write nehmen. Wenn du in eine Exceldatei schreiben willst kannst du auch direkt in spalten und zeilen schreiben.


Gruß

Sven