Clever-Excel-Forum

Normale Version: Arbeitsmappenabfragen per vba einblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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!
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
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
...smile... er will ja keine Abfrage erstellen... :)


Um das Abfragefenster anzuzeigen, reicht das hier:

Code:
    Application.CommandBars("Queries and Connections").Visible = True
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:
[attachment=44693]

Lässt sich das noch mit Deinem Code irgendwie beeinflussen?

Ansonsten: Du hast meinen Tag gerettet, herzlichen Dank dafür!
..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.
Hallo Ralf,
Ich bin Deinem Rat gefolgt und habe auch den .Width-Parameter gesetzt, leider ohne Erfolg:
[attachment=44695]

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!
...nicht einmal die manuelle Vergrößerung ist möglich? Dann bin ich im Moment auch ratlos....