Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellensprung

Zellensprung
14.02.2008 08:10:10
christian
Hallo zusammen,
Ich habe ein kleines problem in meinem makro. und zwar möchte ich in ein txt file 2 neue spalten einfügen. erste spalte "Konzentration" und die zweite wäre mit der wert aus der Inputbox. mit der ersten hats geklappt mit der zweiten wills einfach nicht gehen. Mein makro erzeugt ein Output.txt (ein mergefile aus unzähligen txt files) das in excel importiert wird.
Im Excelfile sollte letztlich "Konzentration" in Zelle G3 und der Wert (aus der inputBox) in H3 geschrieben werden. für alle weiteren an den entsprechenden orten.
Hier mein dataset:
https://www.herber.de/bbs/user/49910.zip
Datei entpacken und Ordner auf Desktop legen. Im Excelfile command button beim register Rohdaten drücken bzw. Modul 1 starten und beliebige Zahl erfassen. Im Modul 1 unterhalb "Sub MergeFiles(SourceFolder As String, OutputFile As String)" habe ich die stelle markiert wo das problem liegen sollte.
besten dank für eure hilfe
gruss christian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellensprung
15.02.2008 06:31:41
fcs
Hallo Christian,
ganz genau konnte ich es nicht testen wg. alter Excelversion, die Probleme mit der Querrytable hat. Da du aus dem Output-Text-File die Daten mit festen Spaltenbreiten ausliest könnte es daran liegen, dass die Zeilen im Textfile nicht alle gleich lang sind.
Deshalb lasse ich ich die per InputBox eingegebene Zahl, jetzt in einem bestimmten Format in das Outputfile schreiben. Das Format muss du ggf. anpassen (z.B. "0000.000"), wobei für alle Dezimalstellen ein Zeichen (führende Nullen oder Leerzeichen) ins Textfile geschrieben werden muss. Evtl. ist bei Eingabe von Dezimalzahlen auch die Funktion CDbl statt Val die günstigere für die Umwandlung der InputBox-Eingabe in eine Zahl. Abhängig von der Zeichenzahl im zahlenformat muss du ggf. auch die Zahl der Zeichen in einer Zeile anpssen (z.Zt 77 im Code)
Für das Einfügen der Querry-Table hab ich 2 zusätzliche Spalten definiert für Text "Konzentration" und die eingegebene Zahl. ggf. muss du entsprechend dem Zahlenformat für die letzte Spalte die Zeichenzahl (z.Zt. 8) im Code anpassen.
Gruß
Franz

Sub MergeFiles(SourceFolder As String, OutputFile As String)
'Zusammenfügen nummerierter .txt Dateien in aufsteigender Richtung
Dim i As Integer
Dim Textzeile As String
Dim Dateiname As String
Dim numOut As Long
Dim numIN As Long
Dim strNum As String, n As Long
numOut = FreeFile
Open SourceFolder & OutputFile For Output As #numOut
Dateiname = Dir(SourceFolder & "*.txt")
Do While Not Dateiname = ""
If Dateiname  OutputFile Then
n = 0
numIN = FreeFile
strNum = InputBox("Aktuelle Datei: " & Dateiname & Chr(13) & Chr(10) _
& "Bitte Anzahl Sporen oder DNA-Konzentration erfassen:", "Zusatz", "")
Open SourceFolder & Dateiname For Input As #numIN 'Öffne gefundene Datei
Do While Not EOF(numIN) 'Schleife bis Dateiende.
Line Input #numIN, Textzeile 'Zeile in Variable einlesen.
n = n + 1
'##### angepasst Anfang
If n = 3 Then
'einfügen in Zeile 3         ' Box erfassen
Textzeile = Textzeile & Chr(32) & "Konzentration "
Textzeile = Textzeile & Chr(32) & Format(Val(strNum), "0000000")
Else
'Zeile mit Leerzeichen auffüllen
Textzeile = Textzeile & VBA.Space(77 - Len(Textzeile))
End If
'##### angepasst Ende
Print #numOut, Textzeile 'Ausgabe in Datei.
Loop
Close #numIN
End If
Dateiname = Dir
Loop
Close #numOut
End Sub
Sub Import_TXT(Filename As String, Position As String, DatenBereich As String)
'                                                   B1                  B:H
Range(DatenBereich).Select
Selection.ClearContents
MsgBox "DataRange: " & DatenBereich & " deleted!"
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Filename, _
Destination:=Range(Position))
.Name = Filename
.FieldNames = True                        '### ggf. auf False setzen
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1) '##### fcs angepasst
.TextFileFixedColumnWidths = Array(6, 12, 9, 9, 9, 9, 15, 8) '##### fcs angepasst
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub


Anzeige
AW: Zellensprung
15.02.2008 09:25:53
christian
Hallo Franz,
das funktioniert bestens. vielen dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige