Registriert seit: 12.01.2018
Version(en): Office 14
hallo zusammen, ich möchte über ein vba-Makro die Arbeitsmappenabfragen einblenden (-> Daten -> Abfragen anzeigen) Über die banale Makroaufzeichnung funktioniert das nicht. Der letzte Ausweg wäre dann die Sendkeys-Funktion (ALT V 9) Dieses wird allerdings unter Programmierern als nogo angesehen. Gibt es eine bessere Lösung? Und im Zweifelsfall: Wie wäre der korrekte Sendkey-Befehl?
Vielen Dank für Eure Hilfe!
Viele Grüße Rumo0815 ------------------------ Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.
Registriert seit: 16.08.2020
Version(en): 2019 64bit
Hallo, mit dem Makrorecorder geht das schon. Menüband: Daten - Daten abrufen - Aus Datei - Aus Arbeitsmappe. Dann ensteht so ein Konstrukt, wenn alles übernommen wurde: Code: Sub Makro1() ' ' Makro1 Makro '
' ActiveWorkbook.Queries.Add Name:="Tabelle1", Formula:= _ "let" & Chr(13) & "" & Chr(10) & " Quelle = Excel.Workbook(File.Contents(""F:\problemstellung\Combobox mit sortierten Array\Mappe1.xlsm""), null, true)," & Chr(13) & "" & Chr(10) & " Tabelle1_Sheet = Quelle{[Item=""Tabelle1"",Kind=""Sheet""]}[Data]," & Chr(13) & "" & Chr(10) & " #""Höher gestufte Header"" = Table.PromoteHeaders(Tabelle1_Sheet, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(#""Höher gestufte" & _ " Header"",{{""Titel"", type text}, {""Vorname"", type text}, {""Nachname"", type text}, {""Straße Nr."", type text}, {""PLZ"", Int64.Type}, {""Ort"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ""" ActiveWorkbook.Worksheets.Add With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Tabelle1;Extended Properties=""""" _ , Destination:=Range("$A$1")).QueryTable .CommandType = xlCmdSql .CommandText = Array("SELECT * FROM [Tabelle1]") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = "Tabelle1" .Refresh BackgroundQuery:=False End With End Sub
Gehe so vor und entferne alles nicht für deinen Zweck benötigte. Gruß Uwe
Registriert seit: 12.01.2018
Version(en): Office 14
Hallo Uwe, danke für Deine Antwort. Leider funktioniert der Makrorecorder bei meiner Menüprozedur nicht. Wahrscheinlich liegt es an dem Menübefehl selbst. Du Hast in Deinem Beispiel einen Datenabruf gestartet, ich möchte lediglich das Zusatzfenster "Arbeitsmappenabfragen" am rechten Rand einblenden lassen und hier versagt der Recorder. Im Übrigen versagt auch die Methode Sendkeys:
Code:
Sub AbfragenEinblenden() Application.SendKeys ("%v9") End Sub
den ich mit einer Workbook Open-Prozedur starte:
Private Sub Workbook_Open() AbfragenEinblenden End Sub
Viele Grüße Rumo0815 ------------------------ Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.
Registriert seit: 25.11.2021
Version(en): 2019, 365
19.08.2022, 10:44
(Dieser Beitrag wurde zuletzt bearbeitet: 19.08.2022, 10:46 von Ralf A.)
...smile... er will ja keine Abfrage erstellen... :) Um das Abfragefenster anzuzeigen, reicht das hier: Code: Application.CommandBars("Queries and Connections").Visible = True
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 12.01.2018
Version(en): Office 14
Hallo Ralf, Danke, das war genau das, wonach ich suchte. Der Code funktioniert mit einer kleinen Einschränkung: Das eingeblendete Zusatzfenster ist auf minimale Breite eingestellt:
Lässt sich das noch mit Deinem Code irgendwie beeinflussen? Ansonsten: Du hast meinen Tag gerettet, herzlichen Dank dafür!
Viele Grüße Rumo0815 ------------------------ Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.
Registriert seit: 25.11.2021
Version(en): 2019, 365
..normalerweise sollte sich die Breite mit der Width Eigenschaft einstellen lassen. Ansonsten händisch auf die gewünschte Breite ziehen. Die letzte Einstellung wird dann übernommen.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 12.01.2018
Version(en): Office 14
Hallo Ralf, Ich bin Deinem Rat gefolgt und habe auch den .Width-Parameter gesetzt, leider ohne Erfolg:
mein aktueller Code: Sub AbfragenEinblenden() Application.CommandBars("Queries and Connections").Visible = _ Not (Application.CommandBars("Queries and Connections").Visible) Application.CommandBars("Queries and Connections").Width = 900 'Change width above to something that suits. 'ActiveWorkbook.RefreshAll 'optional refresh after opening End Sub ... und eine weitere Lösung aus dem Netz Sub einblenden_neu() With Application.CommandBars("Queries and Connections") .Visible = True .Position = msoBarRight .Width = 400 End With End Sub ... funktionieren nicht. Das Fenster ist nach wie vor auf eine minimale Breite eingestellt und lässt sich zudem nicht mit der Maus vergrößern. Vielleicht hast Du noch eine Idee, ansonsten muss ich aufgeben. Viele Grüße und erst mal Danke für Deine Zeit!
Viele Grüße Rumo0815 ------------------------ Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.
Registriert seit: 25.11.2021
Version(en): 2019, 365
...nicht einmal die manuelle Vergrößerung ist möglich? Dann bin ich im Moment auch ratlos....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
|