PDA

Vollständige Version anzeigen : Dynamisches Array?


annivw
19.06.2003, 19:16
hallo!
wieder einmal hoffe ich auf Eure Hilfe...

zur Aufgabenstellung:
Ich habe eine Accessdatenbank mit Datensätzen (über 200000), hier sind Datum, Uhrzeit und Preis enthalten.

Diese soll nach Excel transportiert werden - und zwar so, dass jeweils der niedriegste und der höchste Preis des Tages, sowie der Durchschnittspreis des Tages exportiert werden soll.

Die Exportfunktion bekomme ich zwar in den Griff, doch fehlt mir der befehl, die Preise des nächsten Tages in die folgende Zeile (in Excel zu schreiben)

Da die Datensätze in der Anzahl varieren, müsste dies meiner Meinung nach durch ein dynamisches Array zu verwirklichen sein...

Ich hatte mir das in etwa so vorgestellt:
Function Export2Excel()
Dim Anzahl As Long
Dim objXL As New excel.Application
Dim i As Long

Dim A() As Variant
ReDim A(i)

'Array festlegen
i = RS.RecordCount
Call Areal

If i <= Anzahl Then
'Daten von Access nach Excel transportieren
With objXL
.Visible = True 'Open the document.
.ScreenUpdating = False
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open FileName:="...\Speicher.xls", Password:=""
.Cells(i, 1).Value = Datum
.Cells(i, 2).Value = Min
.Cells(i, 3).Value = Zeitmin
.Cells(i, 4).Value = Max
.Cells(i, 5).Value = Zeitmax
.Cells(i, 6).Value = Mittel
.ActiveWorkbook.Close SaveChanges:=True
'.Quit
End With
...

Function Areal()
Dim Obergrenze
' Arrayvariablen deklarieren.

Dim RS As Recordset
Dim Arr()
ReDim Arr(Obergrenze)

'On Error GoTo Err_Areal
j = RS.RecordCount
Obergrenze = UBound(j)

'Test
For i = 2 To Obergrenze
With objXL
.Visible = True 'Open the document.
.ScreenUpdating = False
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open FileName:="E:\Test\Speicher.xls", Password:=""
.Cells(i, 1).Value = Datum
.Cells(i, 2).Value = Min
.Cells(i, 3).Value = Zeitmin
.Cells(i, 4).Value = Max
.Cells(i, 5).Value = Zeitmax
.Cells(i, 6).Value = Mittel
.ActiveWorkbook.Close SaveChanges:=True
.Quit
End With
Next

Err_Areal:
MsgBox "Programm leider noch fehlerhaft - bei der Arrayermittlung!"



End Function



Allerdings funktioniert das nicht...so dass ich auf Eure Hilfe angewiesen bin
Zugegeben ist das vielleicht auch ein Wenig konfus... Vielleicht schafft ihr es besser zu strukturieren...
Vielen Dank

Ich benutze Office und Windows 2K

jinx
19.06.2003, 19:22
<font size="2" face="Century Gothic">Moin, Annie,

den älteren Beitrag werde ich löschen - warum ein neuer Beitrag, anstatt den alten entsprechend zu ergänzen?</font>

annivw
20.06.2003, 08:33
Hallo jinx,

Tschuldige...eigentlich wollte ich den beitrag editieren...
- dann ist wohl auch das daneben gegangen :(

trotzdem hoffe ich auf Eure Hilfe und Lösungsansätze -
vieleicht postet der ein oder andere ja auch einen guten Link, so dass ich der Lösung vielleicht doch noch finde...

Also vielen Dank schonmal für Eure Hilfe

jinx
20.06.2003, 08:54
<font size="2" face="Century Gothic">Moin,anni,

kann passieren - schon vergessen.

Was mir in beiden Codings auffällt: Du bist in Access, rufst Excel auf und benutzt wdAlertsNone - warum? Der Befehl wird in Excel durch den logischen Zusatz True (An) bzw. False (Aus) gegeben. Du führst in jedem Code die Redimensionierung der Arrays durch, bevor Du die Werte ermittelt hast - IMHO nicht sehr effektiv. Wie stellst Du die Verbindung zu Excel her, wenn Excel als Anwendung noch nicht gestartet wurde? Sind ggf. die Verweise auf Excel gesetzt?Insgesamt kommt mir der Code doch ein wenig doppelt-gemoppelt vor...</font>

annivw
20.06.2003, 09:11
Moin Jinx,

genau da liegt mein Problem :-)

Also, mal der Reihe nach...

da ich beim Abspeichern von Excel immer Fehler, bzw Dialoge bekommen haben ("Wollen Sie tatsächlich speichern...") habe ich das wdAlertsNone gesetzt - Danach tauchten die Dialogboxen nicht mehr auf.
Deshalb das wdnAlertsNone.
Wenn sich das Problem anders/ besser lösen lässt, bin ich für Vorschläge sehr dankbar .

Die Verweise auf Excel sind gesetzt.

Die dopellt gemoppelte Codesequenz liegt in meiner Unwissenheit mit den Arrays begründet.
ich habe mir einige Beiträge zu denArray im Forum angeschuat und versucht zu integrieren - leider ohne Erfolg - dabei habe cih dann miestens den alten Code stehen lassen und lediglich auskommentiert.
Weil ich überhaupt nicht beurteilen kann, welche Segmente ggf zu verwenden sind habe ich wieder auskommentiert und hier gepostet.
Sorry - das hätte ich vielleicht erwähnen sollen...


Excel öffne ich so:
Function XLHeadlines()
Dim excel As Object
Dim objXL As New excel.Application
Dim xlSheet As excel.Worksheet
Set objXL = CreateObject("excel.Application")

With objXL
.Visible = True 'Open the document.
.ScreenUpdating = False
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open FileName:="E:\Test\Speicher.xls", Password:=""
End With
With objXL
'Ausschalten der Aktualisier-Aktionen von Excel:
'sorgt für Beschleunigung, verhindert Fehler durch TastenKlicks o.ä.
.Visible = True
.Interactive = True
.ScreenUpdating = True
'Überschriften in Excel erstellen
.Cells(1, 1).Value = "Datum"
.Cells(1, 2).Value = "Minimum_Preis"
.Cells(1, 3).Value = "Uhrzeit"
.Cells(1, 4).Value = "Maximum_Preis"
.Cells(1, 5).Value = "Uhrzeit"
.Cells(1, 6).Value = "Mittel_Preis"
.ActiveWorkbook.Close SaveChanges:=True
.Quit
End With
'Variable frei geben
Set xl = Nothing
Set xlSheet = Nothing
Set objXL = Nothing
End Function

Vielleicht ist es einfacher, wenn ich dir meinen kompletten Code maile und anschließend nur die Lösung hier im Forum veröffentlicht wird?
Das Forum mit meinem konfusen Code zu belasten erscheint mir nämlich nicht sehr sinnvoll (siehe oben)
:tausch:

jinx
20.06.2003, 09:39
<font size="2" face="Century Gothic">Moin, Anni,

die Beurteilung, in wieweit der Code konfus ist, überlasse ich eher den qualifizierten Usern... :p

Das normale Vorgehen wäre IMHO ein Einstellen der Problemfälle als Anhang (ggf. als *.zip wegen der beschränkten Größe des Anhangs), was eine Bearbeitung durch alle User ermöglichen würde (zumal ich der falschen Spezies angehöre, weil ich mich eher mit der angesprochenen Anwendung auskenne).

Darüberhinaus kann ich - solltest Du Dich für eine Übersendung an mich entscheiden - keine Zusage machen, dass ich mich des Problemes heute annehmen werde; Adresse steht in meinem Profil.</font>

annivw
20.06.2003, 10:36
..schließlich will ich besser werden :-)



Also sende ich meinen Code, wie gesagt, er IST konfus – das weiß ich sicher weil ich mir die Codeteile aus Eurem Forum verwende und versuche für meine Erfordernisse anzupassen. Erst am Ende der Programmierarbeiten bereinige ich den Code dann um die überflüssigen Segmente.

Damit ihr Euch nicht durch allzu viel Datenmüll lesen müsst, habe ich schon einige Teile wieder herausgenommen…



Um mein Problem noch einmal genau zu schildern, möchte ich darauf hinweisen, dass ich Probleme mit dem Array habe (soll zur Datenübertragung nach Excel – dein Metier, richtig? – dienen. Ein weiteres Problem ist, dass ich mir noch nicht genau sicher bin, wie ich realisieren soll, dass Min-, Max- und Mittelwert (der Preise) für jeweils ein Datum ausgegeben werden – kann ich ja nicht überprüfen, weil ich mich mit den Arrays nicht auskenne :-( …

Da auch deine Zeit begrenzt ist, bin ich selbstverständlich auch für Teillösungen / Lösungsansätze sehr dankbar

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Compare</span> <span class="TOKEN">Database</span>
&nbsp;
<span class="TOKEN">Private Sub</span> Minimax_Click()
<span class="TOKEN">Dim</span> Max <span class="TOKEN">As</span> Variant, Min <span class="TOKEN">As</span> Variant, Mittel <span class="TOKEN">As</span> Variant, Preis <span class="TOKEN">As</span> <span class="TOKEN">Double</span>
<span class="TOKEN">Dim</span> Zeitmin, Zeitmax, Zeit <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> Datum <span class="TOKEN">As</span> Date, LastDate <span class="TOKEN">As</span> Date
<span class="TOKEN">Dim</span> Z&auml;hler <span class="TOKEN">As</span> Variant
<span class="TOKEN">Dim</span> SQL <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> excel <span class="TOKEN">As</span> Object
<span class="TOKEN">Dim</span> objXL <span class="TOKEN">As</span> <span class="TOKEN">New</span> excel.Application
<span class="TOKEN">Dim</span> xlSheet <span class="TOKEN">As</span> excel.Worksheet
<span class="TOKEN">Dim</span> Anzahl <span class="TOKEN">As</span> Variant
<span class="TOKEN">Dim</span> RS <span class="TOKEN">As</span> Recordset
<span class="TOKEN">Dim</span> Fgbl0212 <span class="TOKEN">As</span> ADODB.Recordset
&nbsp;
<span class="TOKEN">Set</span> objXL = CreateObject(&quot;excel.Application&quot;)
<span class="REM">'On Error GoTo Break</span>
&nbsp;
Z&auml;hler = 0
Max = 0
Min = 1000000
&nbsp;
<span class="REM">'&ouml;ffnet Excel und erstellt &Uuml;berschriften</span>
<span class="TOKEN">Call</span> XLHeadlines
&nbsp;
<span class="REM">'ersten DS einlesen</span>
DoCmd.OpenQuery &quot;QRYFgbl0212&quot;, acNormal
DoCmd.GoToRecord acDataForm, &quot;Fgbl0212&quot;, acFirst
Datum = Me!Datum
Preis = Me!Preis
Zeit = Me!Uhrzeit
&nbsp;
LastDate = Forms![Fgbl0212]![Datum]
&nbsp;
<span class="REM">'Das mit der Sprungmarke ist noch nicht getestet,</span>
<span class="REM">'vielleicht kann man das auch sch&ouml;ner- ohne Sprungmarke l&ouml;sen?</span>
&nbsp;
Looping:
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> Datum &gt;= 0
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> LastDate = Datum <span class="TOKEN">Then</span>
<span class="REM"> 'Call Export2Excel</span>
i = i + 1
LastDate = Datum
GoTo Wechsel
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="REM">' If Datum = &quot;2.12.2002&quot; Then 'zu Testzwecken erstmal nur f&uuml;r einen Tag</span>
<span class="REM">' If Datum &gt;= 0 Then</span>
<span class="TOKEN">If</span> Preis &lt;= Min <span class="TOKEN">Then</span>
Min = Preis
Zeitmin = Zeit
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> Preis &gt;= Max <span class="TOKEN">Then</span>
Max = Preis
Zeitmax = Zeit
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="REM"> 'Neuer Datensatz einlesen</span>
DoCmd.OpenQuery &quot;QRYFgbl0212&quot;, acNormal
DoCmd.GoToRecord acDataForm, &quot;Fgbl0212&quot;, acNext
Datum = Forms![Fgbl0212]![Datum]
Preis = Forms![Fgbl0212]![Preis]
Zeit = Forms![Fgbl0212]![Uhrzeit]
<span class="TOKEN">Loop</span>
&nbsp;
<span class="REM">'Excel aktualisieren, Bearbeiten wieder erm&ouml;glichen</span>
<span class="TOKEN">With</span> objXL
.Interactive = <span class="TOKEN">True</span>
.ScreenUpdating = <span class="TOKEN">True</span>
.Visible = <span class="TOKEN">True</span>
<span class="REM"> 'speichern und schlie&szlig;en von Excel</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="REM">'xlSheet.SaveAs &quot;Speicher.xls&quot;</span>
objXL.Quit
&nbsp;
<span class="REM">'Variable frei geben</span>
<span class="TOKEN">Set</span> xl = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> xlSheet = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> objXL = <span class="TOKEN">Nothing</span>
&nbsp;
MsgBox Datum &amp; &quot;Hauptende Mittlerer Preis =&quot; &amp; Mittel &amp; _
&quot; Minwert = &quot; &amp; Min &amp; &quot; Maxwert = &quot; &amp; Max, vbOKCancel
&nbsp;
DoCmd.Close acQuery, &quot;Fgbl0212&quot;
DoCmd.Close acQuery, &quot;QRYFgbl0212&quot;
<span class="TOKEN">Exit Sub</span>
&nbsp;
Wechsel:
SQL = &quot;SELECT AVG(Preis) from (QRYFgbl0212)where Datum = LastDatum;&quot;
<span class="REM"> 'Run.SQL</span>
Mittel = SQL
<span class="REM"> 'Hier Ausgabe der Daten nach Excel</span>
<span class="REM"> 'Export2Excel</span>
<span class="REM">'DSArray funktioniert nicht – Fehlermeldung weil Objektvariable nicht deklariert -</span>
<span class="REM">'- Bei einem Funktionsaufruf????</span>
DSArray
<span class="REM">'Anzahl soll hier der Obergrenze des Arrays sein</span>
<span class="REM">'mit dem Effekt, dass f&uuml;r jedes datum eine neue Zeile in Excel</span>
<span class="REM">'verwendet wird, so dass man Min, Max und Mittel des Tages erh&auml;lt</span>
<span class="TOKEN">For</span> i = 2 <span class="TOKEN">To</span> Anzahl
<span class="TOKEN">With</span> objXL
.Visible = <span class="TOKEN">True</span> <span class="REM">'Open the document.</span>
.ScreenUpdating = <span class="TOKEN">False</span>
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open Filename:=&quot;E:\Test\Speicher.xls&quot;, Password:=&quot;&quot;
.Cells(i, 1).Value = Datum.Value
.Cells(i, 2).Value = Min.Value
.Cells(i, 3).Value = Zeitmin.Value
.Cells(i, 4).Value = Max.Value
.Cells(i, 5).Value = Zeitmax.Value
.Cells(i, 6).Value = Mittel.Value
.ActiveWorkbook.Close SaveChanges:=True
<span class="REM"> '.Quit</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">Next</span>
<span class="REM"> 'Export2Excel aufrufen</span>
<span class="REM"> 'Call Export2Excel</span>
MsgBox &quot;Else:&quot; &amp; Anzahl &amp; Chr(13) &amp; &quot;Mittlerer Preis =&quot; &amp; Mittel &amp; _
&quot; Minwert = &quot; &amp; Min &amp; &quot; Maxwert = &quot; &amp; Max, vbOKCancel
<span class="REM"> 'End If</span>
GoTo Looping
&nbsp;
Break:
MsgBox &quot;Leider ist ein Fehler im Hauptprogramm aufgetreten!&quot;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Function</span> XLHeadlines()
<span class="TOKEN">Dim</span> excel <span class="TOKEN">As</span> Object
<span class="TOKEN">Dim</span> objXL <span class="TOKEN">As</span> <span class="TOKEN">New</span> excel.Application
<span class="TOKEN">Dim</span> xlSheet <span class="TOKEN">As</span> excel.Worksheet
<span class="TOKEN">Set</span> objXL = CreateObject(&quot;excel.Application&quot;)
&nbsp;
<span class="TOKEN">With</span> objXL
.Visible = <span class="TOKEN">True</span> <span class="REM">'Open the document.</span>
.ScreenUpdating = <span class="TOKEN">False</span>
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open Filename:=&quot;E:\Test\Speicher.xls&quot;, Password:=&quot;&quot;
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
&nbsp;
<span class="TOKEN">With</span> objXL
<span class="REM"> 'Ausschalten der Aktualisier-Aktionen von Excel:</span>
<span class="REM"> 'sorgt f&uuml;r Beschleunigung, verhindert Fehler durch TastenKlicks o.&auml;.</span>
.Visible = <span class="TOKEN">True</span>
.Interactive = <span class="TOKEN">True</span>
.ScreenUpdating = <span class="TOKEN">True</span>
<span class="REM"> '&Uuml;berschriften in Excel erstellen</span>
.Cells(1, 1).Value = &quot;Datum&quot;
.Cells(1, 2).Value = &quot;Minimum_Preis&quot;
.Cells(1, 3).Value = &quot;Uhrzeit&quot;
.Cells(1, 4).Value = &quot;Maximum_Preis&quot;
.Cells(1, 5).Value = &quot;Uhrzeit&quot;
.Cells(1, 6).Value = &quot;Mittel_Preis&quot;
.ActiveWorkbook.Close SaveChanges:=True
.Quit
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
&nbsp;
<span class="REM">'Variable frei geben</span>
<span class="TOKEN">Set</span> xl = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> xlSheet = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> objXL = <span class="TOKEN">Nothing</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Function</span> Export2Excel()
<span class="TOKEN">Dim</span> Anzahl <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> objXL <span class="TOKEN">As</span> <span class="TOKEN">New</span> excel.Application
<span class="TOKEN">Dim</span> i <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> A() <span class="TOKEN">As</span> Variant
<span class="TOKEN">ReDim</span> A(i)
<span class="TOKEN">Dim</span> RS <span class="TOKEN">As</span> Recordset
&nbsp;
<span class="REM">'Array festlegen</span>
<span class="REM">'i = RS.RecordCount</span>
<span class="TOKEN">Call</span> Areal
&nbsp;
<span class="REM">'If i &lt;= Anzahl Then</span>
<span class="REM">' 'Daten von Access nach Excel transportieren</span>
<span class="REM">' With objXL</span>
<span class="REM">' .Visible = True 'Open the document.</span>
<span class="REM">' .ScreenUpdating = False</span>
<span class="REM">' .Application.DisplayAlerts = wdAlertsNone</span>
<span class="REM">' .Workbooks.Open FileName:=&quot;E:\Test\Speicher.xls&quot;, Password:=&quot;&quot;</span>
<span class="REM">' .Cells(i, 1).Value = Datum</span>
<span class="REM">' .Cells(i, 2).Value = Min</span>
<span class="REM">' .Cells(i, 3).Value = Zeitmin</span>
<span class="REM">' .Cells(i, 4).Value = Max</span>
<span class="REM">' .Cells(i, 5).Value = Zeitmax</span>
<span class="REM">' .Cells(i, 6).Value = Mittel</span>
<span class="REM">' .ActiveWorkbook.Close SaveChanges:=True</span>
<span class="REM">' '.Quit</span>
<span class="REM">' End With</span>
<span class="REM">'</span>
<span class="REM">'Else</span>
<span class="REM">'MsgBox &quot;Programm leider noch fehlerhaft - bei der Daten&uuml;bertragung!&quot;</span>
<span class="REM">'End If</span>
&nbsp;
<span class="REM">'Variable frei geben</span>
<span class="TOKEN">Set</span> xl = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> xlSheet = <span class="TOKEN">Nothing</span>
<span class="TOKEN">Set</span> objXL = <span class="TOKEN">Nothing</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Sub</span> DatenfelderFestlegenA()
<span class="TOKEN">Dim</span> arrDays() <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">Dim</span> intMonth <span class="TOKEN">As</span> Integer, intDay <span class="TOKEN">As</span> Integer, intCounter <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
Randomize
intMonth = Int((12 * Rnd) + 1)
intDay = Day(DateSerial(Year(Date), intMonth + 1, 0))
<span class="TOKEN">ReDim</span> arrDays(1 <span class="TOKEN">To</span> intDay)
<span class="TOKEN">For</span> intCounter = 1 <span class="TOKEN">To</span> intDay
arrDays(intCounter) = intCounter
<span class="TOKEN">Next</span> intCounter
MsgBox arrDays(<span class="TOKEN">UBound</span>(arrDays()))
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Function</span> DSArray(strPath <span class="TOKEN">As</span> String, strPattern <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> Variant
<span class="TOKEN">Dim</span> arrDateien() <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">Dim</span> intCounter <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> RS <span class="TOKEN">As</span> Recordset
&nbsp;
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> RS &lt;&gt; &quot;&quot;
intCounter = intCounter + 1
<span class="TOKEN">ReDim</span> <span class="TOKEN">Preserve</span> arrDateien(1 <span class="TOKEN">To</span> intCounter)
arrDateien(intCounter) = RS
<span class="TOKEN">Loop</span>
DSArray = arrDateien
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Function</span> Areal()
<span class="TOKEN">Dim</span> Obergrenze
<span class="REM">' Arrayvariablen deklarieren.</span>
<span class="TOKEN">Dim</span> RS <span class="TOKEN">As</span> Recordset
<span class="TOKEN">Dim</span> Arr()
<span class="TOKEN">ReDim</span> Arr(Obergrenze)
&nbsp;
AnzahlDatens&auml;tze
<span class="REM">'On Error GoTo Err_Areal</span>
j = RS.RecordCount
Obergrenze = <span class="TOKEN">UBound</span>(j)
&nbsp;
<span class="REM">'Test</span>
<span class="TOKEN">For</span> i = 2 <span class="TOKEN">To</span> Obergrenze
<span class="TOKEN">With</span> objXL
.Visible = <span class="TOKEN">True</span> <span class="REM">'Open the document.</span>
.ScreenUpdating = <span class="TOKEN">False</span>
.Application.DisplayAlerts = wdAlertsNone
.Workbooks.Open Filename:=&quot;E:\Test\Speicher.xls&quot;, Password:=&quot;&quot;
.Cells(i, 1).Value = Datum
.Cells(i, 2).Value = Min
.Cells(i, 3).Value = Zeitmin
.Cells(i, 4).Value = Max
.Cells(i, 5).Value = Zeitmax
.Cells(i, 6).Value = Mittel
.ActiveWorkbook.Close SaveChanges:=True
.Quit
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">Next</span>
&nbsp;
Err_Areal:
MsgBox &quot;Programm leider noch fehlerhaft - bei der Arrayermittlung!&quot;
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Vielen Dank für Eure Mühe

<font size="2" face="Century Gothic">Moderatorenanmerkung: der Code wurde auf verkürzt (Leerzeilen entfernt) und per Converter aufbereitet eingestellt.
jinx – 20.06.2003</font>

Nouba
20.06.2003, 14:51
Hallo Anni,

der Kode weist einige kleine Mängel auf. So verweist Du u.a. in Prozeduren auf nicht deklarierte Variablen. Um im konkreten Fall zu helfen, wäre es doch besser, wie Jinx schon angemerkt hat, ein geziptes Minimalbeispiel vor Augen zu haben, denn so ganz ohne Daten ist es schwierig und mühsam, Deinem Wunsch entgegenzukommen.

Als Excel-Laie benutze ich, wenn ich Daten excel-seitig weiterverarbeiten will, gerne MS-Query. Zur Auswertung wende ich die Werkzeuge aus dem Datenmenü zu meiner Zufriedenheit (auch aus Faulheit) an.

annivw
20.06.2003, 18:49
Hmmh, ich würde ja gerne ein Minimalbeispiel bringen - allerdings hab ich keine Ahnung, wie das gehen soll, - selbst mit nur 4 Datensätzen ist die Datei noch 32mb groß und auch komprimiert müsste ich sie in 5 teile aufsplitten....

Bin so langsam am verzweifeln...


Wenn das natürlich kein Problem ist, werde ich das gerne tun - vielleicht kann mir aber ein Moderator helfen und die Datenbank für mich hochladen?

jinx
20.06.2003, 22:15
<font size="2" face="Century Gothic">Moin, Anni,

was für ein Glück, dass die Preise für Festplatten so nachgegeben haben... ;). Meine Adresse hast Du, solange es keine Probleme mit dem Versand bzw. Empfang der Datei/en gibt (Einzelteile < 1 MB), schick sie mir bitte zu: notfalls "missbrauche" ich den Excelbereich. :grins:</font>

annivw
21.06.2003, 01:33
hallo Nouba, Sidewinder und all Anderen,


@Nouba
Da mein Wissen bei MSQuery sich ähnlich verhält wie mein Wissen nei den Arrays - also gleich Null ist - bevorzuge ich Momentan diese Art der Vorgehensweise.
Natürlich bin ich aber für Links jederzeit aufgeschlossen
Schliesslich erspare ich mir auchgerne ein bisschen Arbeit - wenn ich nur wüßte wie ... :rolleyes:


@Sidewinder
Danke für das Angebot - habe die Datei zugeschickt und bin jetzt mal gespannt :D

@ alle Anderen
Über weitere hilfreiche Beiträge würde ich mich sehr freuen
- auch Links, zum Zwecke der Weiterbildung sind mir sehr willkommen...

jinx
21.06.2003, 08:53
<font size="2" face="Century Gothic">Moin, Anni,

ich weiß ja nun nicht, wie der Name <i>Sidewinder</i> hier auf einmal insp Spiel kommt...

Nein, ich kann keine *.rar-Archive lesen, deshalb ja die Bitte, mir gezippte Dateien zu schicken: die kann ich zwar auch nicht lesen, aber da habe ich die entsprechenden Packprogramme, die das für mich erledigen.

Ansonten gilt: <a href="http://www.ms-office-forum.net/daten/excel/Access/MSOF095023.mdb" target="_blank">Hier gibt es den Download</a> - 143.360 Bytes groß und als *.mdb. Den Titel des Downloads habe ich analog meiner Vorgehensweise mit der Nummer des Threads im Forum versehen.

Bemerkung: Die ursprüngliche Datei wurde nach dem Hinweis von Nouba komprimiert - das Ergebnis davon steht nun zur Verfügung.</font>

annivw
21.06.2003, 11:07
Moin Jinx

sorry, lag wohl an der Uhrzeit, dass ich deinen Namen verwechselt habe...

Vielen Dank für den Link auf die Minimal.mdb...

Nouba
21.06.2003, 12:43
Hallo Anni,

ich habe zunächst mal eine Abfrage erstellt, die die Uhrzeit umwandelt. Für die Spalte, in der "FGBL" steht, wäre es vermutlich gut, eine externe Tabelle zu haben und nur einen Fremdschlüssel in der Fgbl0212 zu haben. Das nächste Feld mit Inhalt "12 02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0" wäre vermutlich in der anderen Tabelle auch gut aufgehoben. Sollte dieser Feldinhalt ausgewertet werden, wäre eine Aufteilung in separate Felder zu empfehlen. Das Textfeld <i>Zeit</i> habe ich in ein Zeitfeld umgewandelt und die Hundertstel (Sind es überhaupt Hundertstel?) in eine extra Spalte gesetzt. Den Preis habe ich ins Währungsformat gebracht. Das Währungsfeld " EUR" hat noch eine Glättung erfahren, so dass jetzt "EUR" drin steht.

Auf Basis dieser Abfrage habe ich eine weitere Abfrage erstellt, in der Deine gewünschten Exportfelder mit Unterabfragen zusammengesetzt werden. Diese Abfrage habe ich einmalig exportiert und das Resultat als Tabelle mit der DB verknüpft.

Mit einer Anfügeabfrage ist es nun möglich, weitere Daten an die Excel-Tabelle anzuhängen.

Wenn Du mit einer Lösung in vorgeschlagener Art leben kannst, könnte man natürlich das Anfügen der Daten in eine Prozedur packen.

Wie schonmal angemerkt, wäre auch der Excel-Import zu erwägen. Über (habe leider nur US-Office) Menü <i>Data/Import External Data/New Database Query...</i> sollte es nach Anwahl von <i>Access Datenbanken</i> als Typ und Auswahl Deiner Datenbank durch einfache Feldauswahl möglich sein, das gewünschte Resultat zusammenzustellen. Die Bedienung ist recht intuitiv. Ein Export mittels OLE-Automatisierung wird vermutlich etwas mehr Rechenzeit benötigen, als die beiden anderen Varianten.

Was nun am zweckmäßigsten für Deine Belange ist, wirst Du wohl selbst herausfinden müßen.

PS: Nach dem Komprimieren Deiner DB ist die Größe übrigens auf 144 kb geschrumpft. :)

jinx
21.06.2003, 13:00
<font size="2" face="Century Gothic">Moin, Nouba,

Danke für den Hinweis - die Datei wurde inzwischen "gestaucht" als *.mdb hochgeladen. Daran kann man doch gut erkennen, dass ich noch nicht in die DB gesehen hatte. Insgesamt hätte Anni sich eine Menge Zeit ersparen können - ich bin mir aber sicher, dass sie in Zukunft öfter mal komprimieren wird... ;)</font>

annivw
21.06.2003, 17:59
Also, ersteinmal vielen Dank für eure Hilfe...

@jinx
ich habe wirklich mein Bestes gegeben um die DB zu komprimieren - allerdings schrint das mit Winrar ganz offensichtlich nicht sehr erfolgreich gewesen zu sein.
Ich werde, sollte ich demnächst neue Postings haben, mit Winzip arbeiten...
Vielleicht klappts damit besser
Trotzdem werd ich das Gefühl nicht los, dass du dich über mich lustig machst?!

@ Nouba
Vielen Dank, dass du dir soviel Mühe gemacht hast...
Leider darf ich die datenbank nicht verändern - es gibt auch noch tausende (na ja, zumindest fast - davon, so dass ich versuchen sollte eine Lösung zu finden. die ohne eine Änderung der DB auskommt...

Über eine Steuerung von Excel aus, lasse ich jedoch gerne mit mir reden, wenn ihr mir eure Hilfe weiterhin gewährt - ich kenne mich in Excel VBA noch weniger aus als mit Acces VBA.. -

Mir ist allerdings nicht ganz klar, warum eine VBA Lösung in Access so umständlich sein soll - oder habe ich das was falsch verstanden?

Nouba
21.06.2003, 18:35
Hallo Anni,

Hilfe wird natürlich bei Kooperation auch weiterhin gewährt - ist doch selbstverständlich.

Zum Komprimieren: In Access selbst solltest Du gelegentlich die ganze DB komprimieren - Menü <i>Tools(Extras)/Database Utilities/Compact and Repair Database...</i>, um sie gelegentlich einer Schlankheitskur zu unterziehen.

Die ursprünglichen Daten habe ich, wie Du sehen kannst, nicht verändert. Wenn Du willst und es schön macht :), kannst Du die Daten auch mit führenden Leerzeichen exportieren. Vielleicht solltest Du mitteilen, was mit dem Excel-Export angestellt werden soll. Entstammen die Daten einer anderen DB oder Anwendung?

Mir ist allerdings nicht ganz klar, warum eine VBA Lösung in Access so umständlich sein soll - oder habe ich das was falsch verstanden?Bei einer OLE-Automatisierung muß das Automatisierungsobjekt (in Deinem Fall Excel) geöffnet sein. In der Prozedur selbst würde jede Zelle separat (das geht vielleicht auch geschickter) angesprochen werden. Hinzu kommt, dass Du alle Datensätze auch noch im Formular abklappern willst - also geht auch noch Zeit für die Darstellung und Ansteuerung des Formulars verloren. Zuguterletzt dürfte das angedachte Verfahren zum Feststellen von Durchschnitt, Minimum und Maximum auch sehr zeitintensiv sein.

Zum Import nach Excel empfehle ich einfach mal ein Ausprobieren mit einem leeren Sheet - schiefgehen kann dabei eigenlich nichts. Aus allen Tabellen und Abfragen der DB kannst Du eine (oder mehrere) Auswahl(en) treffen. Optional bietet MS-Query zusätzlich die Möglichkeit, Sortierung und Filter festzulegen.

PS: Mit einem Index über <i>Feld1</i>, <i>Feld2</i> und <i>Datum</i> angelegt, dürfte der Export bei vielen Daten um einiges an Geschwindigkeit zulegen.

annivw
21.06.2003, 21:29
Hallo Nouba,

Vielen Dank für den Tipp mit der Reperatur der DB - habe ich noch nie gemacht :knuddel: weil ich die Funktion nicht kannte...
(spricht nicht gerade für eine gute Ausbildung :( )


Was den Rest deiner Antwort angeht muss ich gestehen, dass ich nur so weit folgen konnte, dass ich einen umständlichen und langsamen Weg gewählt habe.
(Das mit dem Formular könnte man weglassen, allerdings bräuchte ich einen Hinweis wie dann vorzugehen ist..)

Da ich MS Query nur vom Namen kenne kann mir hier nur eine Schritt für Schritt Anweisung helfen (ich habe nämlich nicht die leiseste Ahnung wo ich das finden soll, geschweige, wie ich es bedienen kann :confused: ...

Der Excel Export soll in Excel weiterverarbeitet werden, so dass ich die DB am Ende des Exports schließen möchte um in Excel fortzufahren - genauere Infos habe ich leider nicht

Die Daten der DB wurden aus einem Excel Sheet bzw aus einen txt.file importiert, da Excel mit der großen Anzahl von Datensätzen nicht zurecht kommt (bis zu 250.000 DS) bzw. zu langsam wird.
Wenn Du eine Möglichkeit kennst, dass Excel diese Menge noch bewältigt, könnte zukünftig der Umweg über Access vermieden werden - allerdings scheint mir dass ein anderes Thema zu sein.

Primär bin ich an einer möglichst geschickten und zeitsparenden Lösung meines derzeitigen Problems interessiert.

Ich hoffe einfach weiter auf eure nette Unterstützung :-)

Nouba
21.06.2003, 21:52
Hallo Anni,

zuerst zu MS Query: Du mußt das Teil nicht direkt bedienen. Da ich Office 2K übersprungen habe, weiß ich allerdings nicht, ob sich das Teil auf Anfrage nachinstalliert - vermutlich noch nicht. Wenn es installiert ist, wähle mal in einer neuen Excel-Mappe im Daten-Menü den Pfad wie vorher geschildert aus. Da brauchst Du wirklich keine Schulung für, denn der Benutzer wird mit Dialogen zum Erfolg geführt. Am Besten fügst Du die Daten in ein neues Blatt ein.

Können die Daten denn nicht nach <i>Feld1</i> sinnvoll aufgeteilt werden? Vielleicht kannst Du auch Datenblöcke nach Zeitintervallen erstellen. Wenn Du eine sinnvolle Unterteilung gefunden hast, könnte man mehrere Blätter für die aufgeteilten Daten nehmen.

Ich habe noch anscheinend etwas brauchbares mit OLE-Automatisierung in meinem Hinterkopf gefunden.Public Function ExportToXls(TabelleOderAbfrage As String)

Dim rs As DAO.Recordset

Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object

Dim i As Integer

On Error GoTo BehandleFehler

Set rs = CurrentDb.OpenRecordset(TabelleOderAbfrage, dbOpenDynaset, dbReadOnly)

If rs.EOF Then
MsgBox "Das Recordset ist leer", vbCritical
Else

Set objXL = GetObject(, "Excel.Application")

With objXL

Set objWkb = .Workbooks.Add
Set objSht = objWkb.Worksheets(1)

With objSht
For i = 0 To rs.Fields.Count - 1
.Cells(1, i + 1).Value = rs.Fields(i).Name
Next i

.Range("A2").CopyFromRecordset rs
End With

.Visible = True
End With
End If

RausHier:
On Error GoTo 0
If Not IsEmpty(rs) Then rs.Close
Set rs = Nothing
Exit Function

BehandleFehler:
If Err.Number = 429 Then
Set objXL = CreateObject("Excel.Application")
Resume Next
Else
MsgBox "Error: " & Err.Number & _
" (" & Err.Description & ") in Funktion: <<ExportToXls>>"
Resume RausHier
End If
End FunctionIch habe mal Excel geöffnet gelassen, damit man sich vom Erfolg überzeugen kann. Das kann man sich später ersparen. Als Argument ist ein Abfrage- oder Tabellenname zu verwenden. Für eine fertige Lösung müßte die Excel-Mappe noch gespeichert werden. Am flexibelsten wäre wohl, den Dateipfad als Argument der Funktion zu verwenden.

annivw
21.06.2003, 22:10
OK, habe mir MS Query mal angeschaut,...

allerdings hab ich keine Ahnung, wie ich den Import so selektieren kann, dass ich nur die gewünschten DS importiere?!

Kann man den Import eigentlich auch automatisieren?
ggf über ein Makro?

annivw
21.06.2003, 23:02
Hallo Nouba,

Können die Daten denn nicht nach Feld1 sinnvoll aufgeteilt werden? Vielleicht kannst Du auch Datenblöcke nach Zeitintervallen erstellen. Wenn Du eine sinnvolle Unterteilung gefunden hast, könnte man mehrere Blätter für die aufgeteilten Daten nehmen.

Was meinst du mit Feld1 ?
Was meinst du mit Zeitintervallen?

Vielleicht sollte ich mal eine Pause machen - das Hirn brennt :-) -

Wenn ich's richtig verstanden habe, dann ist die OLE Automatisierung mit Access und nicht mit MS Query?!
Also der Code soll in AC eingefügt werden?

Hab ich zumindest mal so gemacht - allerdings funktioniert das nicht...

Damit es überhaupt läuft habe ich zu dem Code ergänzt:

Sub Export2Excel()
Dim Fgbl0212 As String
Call ExportToXls(Fgbl0212)
End Sub

weitere Abänderung lautet:
Public Function ExportToXls(Fgbl0212 As String)
und
set rs = CurrentDb.OpenRecordset(FGBL0212, dbOpenDynaset, dbReadOnly)
'Fgblo0212 statt tabelleoderabfrage

Das dürfte ja noch nichts Schlimmes angerichtet haben...

aber entweder bekomme ich den Fehler 3078
das Jet-modul findet die Eingangstabelle nicht

oder die Meldung
Microsoft konnte die Eingangstabelle nicht finden...


Beginne immer mehr an meinen Fähigkeiten zu zweifeln



:bawling:

Nouba
21.06.2003, 23:17
Hallo Anni,

da sich der Datenimport als Makro aufzeichnen läßt, müßte eine Automatisierung möglich sein. Folgendes Makro liefert mir ExcelSub Macro1()
'
' Macro1 Macro
' Macro recorded 21.06.2003 by Norbert Bous
'

'
With ActiveSheet.QueryTables.Add( _
Connection:=Array( _
Array( _
"ODBC;DSN=MS Access Database;" & _
"DBQ=D:\MOF\annivw\minimal.mdb;" & _
"DefaultDir=C:\tmp" _
), Array( _
"D:\MOF\annivw;" & _
"DriverId=25;FIL=MS Access;" & _
"MaxBufferSize=2048;" & _
"PageTimeout=5;" _
)), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT " & _
" Fgbl0212.Feld1" & _
", Fgbl0212.Feld2" & _
", Fgbl0212.Datum" & _
", Fgbl0212.Uhrzeit" & _
", Fgbl0212.Preis" & _
", Fgbl0212.Feld6" & _
", Fgbl0212.Feld7" & Chr(13) & "" & Chr(10) & _
"FROM Fgbl0212 Fgbl0212" & Chr(13) & "" & Chr(10) & _
"WHERE (Fgbl0212.Preis<15000)" & Chr(13) & "" & Chr(10) & _
"ORDER BY Fgbl0212.Datum, " _
, "Fgbl0212.Uhrzeit")
.Name = "KleinerAls15000"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End SubIch habe manuell logische Zeilenumbrüche eingefügt.

Liegen die Daten in der DB in einer oder mehreren Tabellen vor? Wenn mehrere Tabellen vorhanden sind, müßte bekannt sein, was mit jeder Tabelle geschehen soll. Gibt es ein Namensschema, das man zur Automatisierung nutzen könnte? Soll der gesamte Export nur den Inhalt des Beispiels umfassen oder werden weitere Exporte benötigt? Sind die Feldnamen in allen Tabellen gleich? Wird sich das ganze Spektakel wiederholen (danach dürfte sich der Programmieraufwand richten), oder wird die DB nach dem kompletten Export in Rente geschickt?

Ich vermute, wenn über oben gestellte Fragen Auskunft vorliegt, könnte weitergebastelt werden. Aber vielleicht kannst Du auch mit der zuletzt geposteten Funktion schon das gewünschte Ergebnis erreichen.

Habe gerade das letzte Posting gelesen:

Deine Beispieltabelle sieht bei mir so aus:ID Feld1 Feld2 Datum Uhrzeit Preis Feld6 Feld7
1 FGBL 12 02 0 0 02.12.2002 09 26 47 67 11126 5 EUR
2 FGBL 12 02 0 0 02.12.2002 09 26 47 58 11125 5 EUR
3 FGBL 12 02 0 0 02.12.2002 09 28 10 33 11126 100 EUR
4 FGBL 12 02 0 0 03.12.2002 14 45 08 85 11152 1 EUR
5 FGBL 12 02 0 0 03.12.2002 16 23 01 02 11149 3 EURIch habe die Felder so nicht getauft. :rolleyes:

Im Anhang habe ich mal 2 Makros (Igitt) erstellt, die 1x die Tabelle und 1x die Abfrage nach Excel exportieren.

Nachtrag: Wenn nicht üerall FGBL in <i>Feld1</i> steht, ließen sich die Daten entspechend (gruppieren) aufteilen. Mit <i>Zeitintervallen</i> meine ich die Einteilung des Datums in Intervalle - z.B. könnte man alle Daten aus einem Jahr oder Jahr und Monat zusammen in ein Excel-Sheet schreiben. Eine Einteilung nach Preisklassen (0 - 9999), (10000-20000), etc. wäre auch denkbar.

annivw
22.06.2003, 00:02
Folgender Code:

Sub Macro1()

funktioniert!


Ich musste allerdings die Datenbank noch manuell auswählen - kann man das nicht automatisch verknüpfen?

Außerdem fehlt noch die Selektion der Min, Max und Mittelwerte - geht das per SQL ?

Außerdem sollte das Makro automatisch starten (da habe ich ganz leise was im Hinterkopf, dass das irgendwie mit autorun geht ?)


Was deine anderen Fragen angeht...


Liegen die Daten in der DB in einer oder mehreren Tabellen vor? Wenn mehrere Tabellen vorhanden sind, müßte bekannt sein, was mit jeder Tabelle geschehen soll. Gibt es ein Namensschema, das man zur Automatisierung nutzen könnte? Soll der gesamte Export nur den Inhalt des Beispiels umfassen oder werden weitere Exporte benötigt? Sind die Feldnamen in allen Tabellen gleich? Wird sich das ganze Spektakel wiederholen (danach dürfte sich der Programmieraufwand richten), oder wird die DB nach dem kompletten Export in Rente geschickt?

Die Daten liegen in jeweils einer Tabelle in mehreren DB's vor.
Leider weiß ich nicht, was du mit "Namensschema" meinst und was man damit anstellen soll..
es werden für jede DB ein Export in gleicher Weise benötigt (es werden auch in Zukunft die DB's in der Form erstellt)
Dementsprechend wird sich das Spektakel wiederholen
Die Namen bleiben jeweils unverändert

Wie und ob die Db in Rente geht vermag ich nicht zu sagen - vermutlich ist aber die Rente vorgesehen - die meisten Arbeiten werden in Excel durchgeführt , hier nur Acess, da die Datenmenge zu umfangreich ist.


Ach, noch was - Feld 1 usw kann vernachlässigt werden - lediglich die Spalten, die einen Namen erhalten haben, also Uhrzeit, Preis, und Datum müssen bearbeitet werden
(- hatte ich vergessen das zu erwähnen ?
:angel: )

Vielen Dank für deine intensiven Bemühungen

*************************
Is schon klar, dass Makro nicht so klasse sind :-)

Nouba
22.06.2003, 00:31
Hallo Anni,

Ich musste allerdings die Datenbank noch manuell auswählen - kann man das nicht automatisch verknüpfen?Hier müßte dann die Automatisierung ansetzen. Der Name der Beispiel DB auf meinem Rechner steht da natürlich noch drin.

Da sich das mit den Tabellen geklärt hat (damit wäre das "Namensschema" für die Tabellen auch gestorben), müßte man wissen, wo (Dateipfad) die Tabellen liegen und wie sie heißen.

Außerdem fehlt noch die Selektion der Min, Max und Mittelwerte - geht das per SQL ?Statt der Tabelle, kannst Du natürlich auch meine Abfrage verwenden, die auch noch im Beispiel steht. Dann dürfte es aber einfacher sein, wenn Du Dir selbst ein Makro aufzeichnest, zumal auch andere Feldnamen zur Verwendung kommen.

Da Du ja jetzt weißt, wie man Access-DBen komprimiert, könntest Du vielleicht nochmal unterstützend ein Zip-Archiv erstellen und darin so 3-5 gekürte DBen hineinpacken.

Meine Fragen wäre dann noch, wo die Einzelnen Inhalte hin sollen? Zusammenfügen, einzelne Sheets oder Workbooks oder teilweise kombiniert (DB1 und DB2 zusammenfassen, 3 alleine lassen und DB 4 und 5 wiederum zusammenfassen)? Wie soll die Aufteilung bei grossen Tabellen letztendlich gestaltet werden - denn 250.000 Zeilen sind halt mal zuviel? Sind alle Feldnamen und Attribute in allen Tabellen identisch?

für heute wünsche ich eine gute Nacht
Nouba

annivw
22.06.2003, 00:47
Als Aufgabe für Morgen :-)


Hier müßte dann die Automatisierung ansetzen. Der Name der Beispiel DB auf meinem Rechner steht da natürlich noch drin.

habe ich selbstverständlich abgeändert - trotzdem musste ich im Dialogfeld die mdb auswählen - scheint jedoch nur beim ersten mal so zu sein...
Ort der mdb:
C:\Dokumente und Einstellungen\User\Desktop\minimal.mdb

Statt der Tabelle, kannst Du natürlich auch meine Abfrage verwenden, die auch noch im Beispiel steht. Dann dürfte es aber einfacher sein, wenn Du Dir selbst ein Makro aufzeichnest, zumal auch andere Feldnamen zur Verwendung kommen.
..wenn ich die Abfrage nehmen würde, müsste ich allerdings für die anderen 1000 DB's auch eine entsprechende Abfrage erstellen?!

Weitere DBs kann ich leider nicht zur verfügung stellen (zumindest nicht unverzüglich) - die sollten aber genauso wie die bereits vorhandene aussehen....

Meine Fragen wäre dann noch, wo die Einzelnen Inhalte hin sollen? Zusammenfügen, einzelne Sheets oder Workbooks oder teilweise kombiniert (DB1 und DB2 zusammenfassen, 3 alleine lassen und DB 4 und 5 wiederum zusammenfassen)? Wie soll die Aufteilung bei grossen Tabellen letztendlich gestaltet werden - denn 250.000 Zeilen sind halt mal zuviel? Sind alle Feldnamen und Attribute in allen Tabellen identisch?

ich stelle bei den Fragen fest, dass meine Arbeitsaufgabe noch nicht klar genug umrissen zu sein scheint, da ich auf diese Fragen gar nicht antworten kann - mir wurde lediglich mit geteilt, dass die Min und Max sowie Mittelwerte anschliessend im Excelsheet weiterverarbeitete werden...
Allerdings wurde mir mitgeteilt, dass in einem weiterem Projekt ein "Haupt - Excel-Sheet" erstellt werden soll, von dem man alle Daten (Sheets)ansteuern können soll...

- Hilft dir das weiter?

Ich glaube tatsächlich, dass ich meinem Chef noch so einige Fragen zu stellen habe :-)


...wünsche Gute Nacht und Morgen reichlich BrainPower
:biggrinl:

annivw
23.06.2003, 11:56
Zum letzten Beitrag ist noch zu sagen, dass

nach der Selektion der Datensätze nicht mehr viele Übrig bleiben werden, so dass eine Aufteilung auf mehrere Tabellenblätter nicht erforderlich sein wird -nur noch ca 90 Zeilen in XL
(Die Datenbank hat derzeit Datensätze von bis zu 250 TSD Datensätzen und umfasst einen Zeitraum von ca 90 Tagen, nach der Selektion sollte also pro Trag nur noch eine Zeile nach Excel transportiert werden, die Datum, Min, Max und Mittelwert mit entsprechender Uhrzeit enthält)

...

annivw
24.06.2003, 09:37
Niemand mehr da, der bereit ist mir zu helfen?
Oder woran hapert's?

annivw
26.06.2003, 00:40
on TOP