Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
Inhaltsverzeichnis

Blatt verstecken

Blatt verstecken
24.09.2013 10:42:47
Zschech
Hallo,
schönen guten Tag!
Ich habe folgendes Makro aufgezeichnet, welches Daten aus einer externen Quelle auf ein Blatt in meiner Excelmappe zwischenkopieren soll. Funktioniert auch tatellos aber wenn ich das Blatt ausblende (-2) setze, geht es nicht mehr. Woran kann das liegen.
Danke schon im Vorraus!
Sheets("R").Select
Range("A50").Select
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Wegweiser;", _
Destination:=Range("A50"))
.CommandText = Array("SELECT * FROM `wegweiser`.`lehrgangsmappe_excel`")
.Name = "wegweiser lehrgangsmappe_excel"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\Zschech\Eigene Dateien\Eigene Datenquellen\wegweiser lehrgangsmappe_excel.odc"
.Refresh BackgroundQuery:=False
End With

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Am .Select ! (owT)
24.09.2013 10:51:55
EtoPHG

AW: Am .Select ! (owT)
24.09.2013 11:55:35
Zschech
Komme mit der Antwort nicht klahr?

Der Befehl .Select
24.09.2013 12:01:22
EtoPHG
Zschech,
will eine Zelle selektieren, die auf einem versteckten Blatt liegt. Das geht nicht!
.Select in VBA ist zu 99.9% überflüssig und kontraproduktiv.
Lies diesen Artikel.
Gruess Hansueli

AW: Der Befehl .Select
24.09.2013 12:45:15
Zschech
Danke Hansueli!
Ich habe da wohl einen Denkfehler. Ich wollte die Daten aus dieser Datenquelle auf eine versteckte Seite, in meinem Beispeil "R", ab der Zeile A50 übernehemen lassen, um dann Bezüge zu andren Seiten zu erstellen. Die Seite "R" soll niemand sehen nur die Veränderungen in den Zellen der anderen Blätter. Ich könnte auch das ganze Datenpaket einfach übernehmen aber die Daten sollen Formulare ergänzen und auf mehrere Bklätter aufgeteilt werden.

Anzeige
AW: Der Befehl .Select
24.09.2013 13:14:06
Zschech
Habe es mir durchgelesen und bin zu dem Ergebnis gekommen:
Sheets("R").Range ("B50").
With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Wegweiser;", _
Destination:=Range("A50"))
.CommandText = Array("SELECT * FROM `wegweiser`.`lehrgangsmappe_excel`")
.Name = "wegweiser lehrgangsmappe_excel"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\Zschech\Eigene Dateien\Eigene Datenquellen\wegweiser lehrgangsmappe_excel.odc"
.Refresh BackgroundQuery:=False
End With
Die erste Zeile ist aber noch nicht vollständig. Was kommt nach der Zellbezeichnung?

Anzeige
AW: Der Befehl .Select
24.09.2013 13:31:11
EtoPHG
Hallo Zschech,
1. Der Befehl zum Addieren der Querytable sollte IMHO nur genau 1mal im Leben der Mappe gemacht werden. ActiveSheet sollte dabei durch eine vollständige Referenzierung ersetzt werden, z.B. With Thisworkbook.Worksheets("R").QueryTables..., ersetzt werden.
2. Um die Daten neu einzulesen ist dann nur noch eine Routine nötig, die das einmalig addierte Query-Objekt zu refreshen:
With Thisworkbook.Worksheets("R").QueryTables("wegweiser lehrgangsmappe_excel")
.Refresh BackgroundQuery:=False
End With
3. Sheets("R").Range ("B50"). ist überflüssig weil die Querytable durch den Parameter Destination:=Range("A50") beim Addieren automatisch mit dieser Zelle verknüpft wird und in Pkt 2. durch ihren Namen referenziert wird.
Gruess Hansueli

Anzeige
AW: Der Befehl .Select
26.09.2013 09:00:50
Zschech
Habe es so umgeschrieben und will das Makro mit Str. I von Blatt "A" aus starten. Aber ich erhalte folgende Fehlermeldung: "Zielbereich befindet sich nicht auf dem Arbeitsblatt, auf dem die Abfrage erstellt wurde."Ich finde den Fehler nicht?
Tastenkombination: Strg+i
'
With ThisWorkbook.Worksheets("R").QueryTables.Add(Connection:="ODBC;DSN=Wegweiser;", _
Destination:=Range("A50"))
.CommandText = Array("SELECT * FROM `wegweiser`.`lehrgangsmappe_excel`")
.Name = "wegweiser lehrgangsmappe_excel"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\Zschech\Eigene Dateien\Eigene Datenquellen\wegweiser lehrgangsmappe_excel.odc"
.Refresh BackgroundQuery:=False
End With
Sheets("A").Select
Range("C3").Select
End Sub

Anzeige
AW: Der Befehl .Select
26.09.2013 14:44:11
EtoPHG
Hallo,
Eigentlich sagt ja die Fehlermeldung schon alles. Aber ich gebe zu, ich hab dich nicht vollstä _ ndig richtig informiert. Die Referenz Range("A50") bezieht sich auf das aktive Blatt ("A") aber das Queryobjekt auf ein anderes. Darum muss es richtig heissen:

ThisWorkbook.Worksheets("R").Range("A50"))
Aber wie auch gesagt. Ich findes es, in den allermeisten Fällen überflüssig, einen Code für das Addieren von Queryobjekten zu haben. Normalerweise Addiere ich ein Queryobjekt über die Menüs und stelle deren Eigenschaften, wie 'Name' und 'Abfrage im Hintergrund' ein und brauche dann nur noch die 3 Zeilen Code (wie weiter oben) um den Refresh durchzuführen.
Gruess Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige