Hallo Leute,
hab ein verzwicktes Problem: soll ein Macro schreiben für eine Tabellenauswertung. Dieses Macro soll es auch ermöglichen ein Diagramm aus der Tabelle zu erstellen. nur sind leider die quelldateien (alles txt-dateien, sortiert, durch tabstops) immer mit unterschiedlich vielen spalten versehen. Habe mir daher erstmal nur eine txt-datei vorgenommen und für diese ein diagramm erstellt und per macro-aufzeichner mir den quellcode geholt. wenn ich nun mit dem code eine andere txt-datei öffne kommt folgender Fehler: "laufzeitfehler '9' - Index ausserhalb gültigen Bereich"
das ist mein programm code dazu
"
Public strDatei As String
Public verzeichnis As String
Dim blnFrage As Boolean
Public Sub CommandButton2_Click()
ChDir verzeichnis
Workbooks.OpenText Filename:=verzeichnis & strDatei, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), _
Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array( _
54, 1), Array(55, 1), Array(56, 1), Array(57, 1))
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Text").Range( _
"A:A,B:B,C:C,D:D,E:E,F:F,G:G,H:H,I:I,J:J,K:K,L:L,M:M,T:T,U:U,V:V,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB" _
), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Werte"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Datum"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = _
"Temparatur in °C / Relaisschaltung"
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Select
Selection.Position = xlBottom
ActiveChart.HasDataTable = False
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.name = "Arial"
.FontStyle = "Standard"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
"
das ding ist nun, dass die neue datei, die ich geöffnet habe auch soviele spalten hat wie im range() befehl verlangt werden, also von A bis AB, nur irgendwie reichts nicht aus. was ist denn genau der index und was ist denn nun der gültige bereich? am liebsten wäre mir natürlich auch ein etwas allgemeinerer code für den datenbereich der tabelle, aber dazu müsste ich erstmal eine prozedur schreiben, die die spalten und zeilen der jeweiligen textdatei auswerten kann... hat jmd für soetwas code parat oder kann mir bei meinem problem helfen ?
danke
gruß nick |