Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Namensfelder weglassen!

Namensfelder weglassen!
27.03.2008 14:26:00
Frank
Hallo Zusammen,
Ich habe folgende/s Frage/Problem:
Bei meiner Datenbankabfrage wird der Bereich (in in den die Daten geschrieben werden) automatisch mit einem Namensfeld versehen, dass immer wieder neu eingestellt (name, name_1, name_2 usw.) und leider nicht überschrieben wird. Da die Abfrage am Tag ca. 20mal läuft ist die Excel Datei aufgrund der vielen Namensfelder auf 6mb angewachsen...
Wie kann man die Benennung des Feldes unterbinden?
Vielen Dank für jede Hilfe!
Gruß,
Frank

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namensfelder weglassen!
27.03.2008 14:29:00
Renee
Hi Frank,
Wenn du diesen Effekt hast, muss ich annehmen, dass du einen VBA-Code laufen lässt, der statt einem einfachen REFRESH einen ADD der query macht. Das ist einer der typischen Fehler mit DB-Abfragen und mit dem Recorder aufgezeichneten Code. Zeig mal deinen Code!
GreetZ Renée

AW: Namensfelder weglassen!
27.03.2008 14:38:00
Frank
Es ist richtig; der Code wurde von meinem Vorgänger einfach aufgenommen.

Sheets("Daten").Select
Range("A5:P8").Select
Selection.ClearContents
Range("A5").Select
'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=x;Server=x;Service=sqlrodbc;UID=public;Password=No", _
Destination:=Range("A5"))
.Sql = Array( _
"SELECT O410,ST02,ST04,ST05,A42,O412__1,O401,t103,k10,t,t20,w,O409__1,O409__2" & Chr(13) & "" & Chr(10) & _
"FROM DO40 DO40,DSTNR DSTNR,DA70 DA70,DA60 DA60" & Chr(13) & "" & Chr(10) & _
"WHERE O414=ST01 AND DO40.A42=DA70.A10 AND DA70.A1=DA60.A AND left(T,5)='" & Range("B2").Value & "'AND O402=4 AND ST04=" & Range("B3").Value & "" _
)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery = True
End With

Anzeige
AW: Namensfelder weglassen!
27.03.2008 14:50:00
Peter
Hallo Frank,
im Code heißt es .FieldNames = True
Setzt das doch einmal auf False anstelle von True.
Gruß Peter

AW: Namensfelder weglassen!
27.03.2008 14:55:18
Frank
Danke für die schnellen Antworten...
aber das hatte ich schon getestet - es geht auch nicht
Wenn Fieldname auf FALSE steht, haut der einem den Feldnamen "externedaten_#" rein. Die Nummer wird anschließend auch hochgezählt.
Gruß

AW: Namensfelder weglassen!
27.03.2008 14:56:41
Frank
Hatte die "Frage noch offen" vergessen - sry

AW: Namensfelder weglassen!
27.03.2008 14:57:28
Renee
Hi Frank,
Jetzt wird's ungemütlich... ;-)
Du musst alle überflüssigen Queries zuerst mal mit einem Code löschen (Löscht alle bis auf eine):

Sub WegDamit()
Dim ix As Integer
For ix = 2 To ActiveSheet.QueryTables.Count
ActiveSheet.QueryTables(ix).Delete
Next ix
End Sub


Erstelle ein Backup deiner Datei.
Lass den Code laufen und sichere die Datei.
Ersetze den WITH END WITH Teil in deinem Code, mit diesem:


With ActiveSheet.QueryTables(1)
.Sql = Array( _
"SELECT O410,ST02,ST04,ST05,A42,O412__1,O401,t103,k10,t,t20,w,O409__1,O409__2" & vbCrLf & _
"FROM DO40 DO40,DSTNR DSTNR,DA70 DA70,DA60 DA60" & vbCrLf & _
"WHERE O414=ST01 AND DO40.A42=DA70.A10 AND DA70.A1=DA60.A AND left(T,5)='" & _
Range("B2").Value & "' " & _
"AND O402=4 AND ST04=" & Range("B3").Value)
.Refresh BackgroundQuery = True
End With


Ich kann's aus Mangel an Datei nicht testen, hoffe aber es klappt!
GreetZ Renée

Anzeige
AW: Namensfelder weglassen!
27.03.2008 15:05:00
Frank
Leider wird immer noch der Feldname "ExterneDaten_#" angelegt.
Gruß,
Frank

AW: Namensfelder weglassen!
27.03.2008 16:13:15
Rudi
Hallo,
dann lösche die Namen doch einfach nach der Aktualisierung.

Sub kill_Names()
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Namensfelder weglassen!
28.03.2008 08:02:23
Frank
werde ich heute mal testen. DANKE!
Gruß

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige