Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Arbeitsmappenabfragen per vba einblenden
#1
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.  19
Antworten Top
#2
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
Antworten Top
#3
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.  19
Antworten Top
#4
...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

Antworten Top
#5
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.  19
Antworten Top
#6
..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

Antworten Top
#7
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.  19
Antworten Top
#8
...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

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste