Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1236to1240
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

BW-Query per VBA aktualiseren

BW-Query per VBA aktualiseren
jojo
Hallo,
ich arbeite viel mit BW-Queries in Excel. Jetzt habe ich mir für das Abarbeiten von vielen Dateien ein Marko gebaut, welches je Datei die folgende Funktion
Run "SAPBEX.xla!SAPBEXrefresh", True
ausführt. (Aktualisierung aller Queries in einer Datei)
Dies funktioniert sehr gut, unter der Prämisse, dass alle Variablenwerte weiterhin manuell eingegeben werden müssen, oder bereits in der Query gespeichert sind.
Gibt es auch eine Möglichkeit Paramter beim refreshen per VBA-Code zu übergeben?
z.B. Periode, Kostenartenhierarchie etc.?
Wie spreche ich die Parameter an? Ich habe schon diverese Hilfen und Foren durchsucht und bin dabei noch nicht richtig fündig geworden.
Kann mir jemand weiter helfen?
Danke
Heiko

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: BW-Query per VBA aktualiseren
26.11.2011 12:40:42
fcs
Hallo Heiko,
grundsätzlich funktioniert es.
Entscheidend ist, dass du die Möglichkeit hast, den SQL-String der Datenabfrage zu ändern.
Sind die Abfragen in Excel gespeichert, dann ist es -ggf. mit einigem Aufwand- möglich, den SQL-Text per Makro aus festem Text und variablem Text zu generieren. siehe Beipiel unten für eine Abfrage in eine MS Access-Datenbank. Hier werden aus einer Tabelle in Access immer nur die Namen mit dem jeweiligen Anfangsbuchstaben angezeigt.
Sind die Abfragen in Querry-Dateien gespeichert (=Textdatei mit SQL-Text) dann müsstest du den Text der Querry-Dateien vor dem Refresh der Abfragen entsprechend anpassen. Auch das ist möglich, indem man die Querry-Datein von Excel aus jeweils neu generiert.
Gruß
Franz
'Erstellt unter Excel 2007 - Windows Vista
Sub Abfrage_Abitur_Namen()
Dim intI As Integer, boolUpdate As Boolean
For intI = 65 To 255
Select Case intI
Case 65 To 90, 196, 214, 220 'A bis Z, Ä, Ö, Ü
boolUpdate = True
Case Else
boolUpdate = False
End Select
If boolUpdate = True Then
Call Abfrage_Abitur(strAbi:="1974", strName:=Chr(intI))
If MsgBox("Namen mit   " & Chr(intI), vbRetryCancel, _
"Namen Abitur 1974") = vbCancel Then Exit For
End If
Next
End Sub
Sub Abfrage_Abitur(strAbi As String, strName As String)
'strAbi = Abfragewert - enthalten in Feld "Abitur"
'strName = Abfragewert - Feld "Geburtsname" beginnt mit
Dim strSQL As String, strCon As String
'String für Verbindung
strCon = "ODBC;DSN=MS Access Database;DBQ="
strCon = strCon & "C:\Users\Franz\Documents\Acc_db\ADRESSEN.MDB"
strCon = strCon & ";DefaultDir=" & "C:\Users\Franz\Documents\Acc_db"
strCon = strCon & " ;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
'String für SQL-Abfrage
'Auswahl-Felder
strSQL = "SELECT `Abitur 1974`.Familienname, `Abitur 1974`.Geburtsname, "
strSQL = strSQL & "`Abitur 1974`.Vorname, `Abitur 1974`.`Zweiter Vorname`, "
strSQL = strSQL & "`Abitur 1974`.Strasse, `Abitur 1974`.Ortsteil, `Abitur 1974`.PLZ, "
strSQL = strSQL & "`Abitur 1974`.Ort, `Abitur 1974`.Land, `Abitur 1974`.Staat, "
strSQL = strSQL & "`Abitur 1974`.Anmerkung, `Abitur 1974`.Abitur, `Abitur 1974`.Gestorben"
'Quelltabelle
strSQL = strSQL & " FROM `Abitur 1974` `Abitur 1974`"
'Filter-Wert(e) - Variabel
strSQL = strSQL & " WHERE (`Abitur 1974`.Abitur Like '%" & strAbi & "%'"
strSQL = strSQL & " AND `Abitur 1974`.Geburtsname Like '" & strName & "%')"
'Sortierung
strSQL = strSQL & " ORDER  BY `Abitur 1974`.Geburtsname, `Abitur 1974`.Vorname"
With Worksheets("Tabelle2").ListObjects(1).QueryTable
.Connection = strCon
.CommandText = strSQL
.Refresh BackgroundQuery:=False
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige