Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alle DBRW-Formeln mittels Makro in Werte umwandeln

Betrifft: Alle DBRW-Formeln mittels Makro in Werte umwandeln von: Nik
Geschrieben am: 05.07.2013 15:23:51

Hallo zusammen..

ich habe noch ein weiteres Problem: ich habe ein Reporting das mittels DBRW-Formeln zusammengestellt wird. Ist es möglich ein VBA-Code zu erstellen der alle im File vorkommenden Formeln, die mit DBRW anfangen in fixe Werte umzuwandeln?

Wie könnte ein solcher Code aussehen?

Vielen lieben Dank für Eure Hilfe! :-)
Gruss
Nik

  

Betrifft: Da biste relativ weit.... von: NoNet
Geschrieben am: 05.07.2013 15:34:09

Hallo Nik,

wenn Du die DBRW-Funktion kennst, kann ich dazu nur sagen :

Da Biste Relativ Weit...
Soll heißen : ICH kenne diese Funktion zumindest (leider) nicht :-(
Vielleicht erklärst Du uns erst einmal woher diese Funktion stammt und was sie bewirkt !

Danke und Gruß, NoNet

Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum

Exceltreffen 11.-13.10.2013 in Duisburg



http://www.exceltreffen.de/index.php?page=230

Es sind noch genügend Plätze für Interessenten frei - schau doch mal rein !



  

Betrifft: AW: Da biste relativ weit.... von: Nik
Geschrieben am: 05.07.2013 15:43:07

Hallo zusammen..

sorry... Also soweit natürlich nicht. Die DBRW-Formeln ist eben aus TM1, oder jetzt Cognos eine Datenbanformeln mit der wir Werte aus der Cognos-Datenbank ziehen. Und wenn ich dann eben einen Report wegschicken möchte hab ich bisher immer alles kopiert und dann in Werte umgewandelt, so dass der nächste der den Report öffnet keine Fehlermeldung bekommt da ja nichts aktualisiert werden kann weil er keine Verbindung zu Cognos hat.

Aber das komplette kopieren und in Werte ersetzen ist eben nicht so wirklich sinnvoll, da auch Verknüpfungen etc. ersetzt werden.

Kann man das irgendwie mittels VBA umsetzen dass das ganze File nach dieser Formel durchsucht wird und die dann durch Werte ersetzt?

Nochmals sorry für die Verwirrung...

DANKE und Gruss
Nik


  

Betrifft: DBRW = Database Read-Write von IBM ? von: NoNet
Geschrieben am: 05.07.2013 15:57:56

Hallo Nik,

habe jetzt doch mal gegoogelt und eine informative Seite gefunden : Bei DBRW handelt es sich offenbar um ein Excel-AddIn von IBM !?!?

http://publib.boulder.ibm.com/infocenter/ctm1/v9r4m1/index.jsp?topic=/com.ibm.swg.im.cognos.tm1_ref.9.4.1.doc/tm1_ref_id12154wrk_dbrw.html

Hier ein Codeansatz, der alle Zellen, deren enthaltene Funktion mit =DBRW( beginnt, durch ihre Werte ersetzt :

Sub DBRW_durch_Werte_ersetzen()
    Dim rngZ As Range, ws As Worksheet, bolSchutz As Boolean
    
    For Each ws In Worksheets
        ws.Activate
        bolSchutz = False
        
        Set rngZ = Cells.Find("=DBRW(", LookIn:=xlFormulas, lookat:=xlPart)
        
        While Not rngZ Is Nothing And Not bolSchutz
            If ws.ProtectContents = False Then
                rngZ.Value = rngZ.Value
                Set rngZ = Cells.FindNext(rngZ)
            Else
                bolSchutz = True
                MsgBox "Im folgenden Blatt konnten keine Ersetzungen vorgenommen werden, da es  _
geschützt ist :" & _
                    vbLf & vbLf & ws.Name, vbCritical, "Bitte Blatschutz entfernen !"
            End If
        Wend
    Next
End Sub
Gruß, NoNet

Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum

Exceltreffen 11.-13.10.2013 in Duisburg



http://www.exceltreffen.de/index.php?page=230

Es sind noch genügend Plätze für Interessenten frei - schau doch mal rein !



  

Betrifft: AW: DBRW = Database Read-Write von IBM ? von: Nik
Geschrieben am: 05.07.2013 16:07:53

Hi NoNet,

ja das ist von IBM, zumindest die haben Cognos meines Erachtens geschluckt..

Bin es eben mal ausprobieren wobei ich sinnvollerweise wohl noch die Displayaktualisierung ausschalten, sind eben doch ein paar Formeln..

Grad eben ist er fertig geworden...hat jedoch nicht alle Formeln ersetzt :-( Ich muss es Montag nochmals genau anschauen, hab jetzt eben noch Sitzung.

Aber Dir vielen lieben Dank und schönes Weekend.
Gruss
Nik


  

Betrifft: Alle DBRW-Formeln durch ihr Ergebnis ... von: Luc:-?
Geschrieben am: 05.07.2013 15:52:43

…ersetzen sollte wie bei anderen Fmln auch fktionieren, Nik;
also ungefähr so:

Const adRelBer$ = "…"
Dim ber As Range, relBer As Range
Set relBer = ActiveSheet.Range(adRelBer)
For Each ber in relBer
    If ber.HasFormula Then
        If Left(ber.Formula, 6) = "=DBRW(" Then ber.FormulaLocal = ber.Value
    End If
Next ber
Zu adRelBer natürlich noch die Adresse des zu behandelnden GesamtBereichs angeben.
Gruß Luc :-?

Besser informiert mit …


  

Betrifft: AW: Alle DBRW-Formeln mittels Makro in Werte umwandeln von: UweD
Geschrieben am: 05.07.2013 16:07:32

Hallo

hier auch noch eine Lösung von mir

Sub DBWR_raus()
    Dim Zelle As Range
    For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23) ' alle Zellen mit  _
Formeln
        If Left(Zelle.FormulaLocal, 6) = "=DBWR(" Then
            Zelle.Value = Zelle.Value
        End If
    Next
End Sub
Gruß UweD


  

Betrifft: :-( DBRW nicht DBWR... von: UweD
Geschrieben am: 05.07.2013 16:11:02

Sub DBWR_raus()
    Dim Zelle As Range
     'Nur alle Zellen mit Formeln
     For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
        If Left(Zelle.FormulaLocal, 6) = "=DBRW(" Then Zelle.Value = Zelle.Value
    Next
End Sub



  

Betrifft: AW: inkl. der Anmerkung von NONET von: UweD
Geschrieben am: 05.07.2013 16:41:34

Sub DBRW_raus()
    Dim Zelle As Range
     'Nur alle Zellen mit Formeln
     For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, 23)
        If InStr(Zelle.FormulaLocal, "DBRW(") > 0 Then Zelle.Value = Zelle.Value
    Next
End Sub



  

Betrifft: AW: inkl. der Anmerkung von NONET von: Nik
Geschrieben am: 08.07.2013 14:08:06

Hey Uwe,

vielen lieben Dankd für Deine Hilfe, wie aber auch generell allen die sich das Problem mal angeschaut haben. Ich habe mich jetzt einfach mal spontan für Deine Lösung entschieden, die ich am ehesten habe nachvollziehen können, da mein KnowHow doch arg beshränkt ist..:-(

Ich habe den Code jetzt mal für die komplette Datei anwenden wollen, funktioniert jettz aber nicht.. Ich habe eigentlich nur ActiveSheet durch ActiveWorkbook ersetzt...aber passiert ist nichts, die Formeln stehen in den anderen Sheets noch immer drin.

Sub DBRW ()
Dim Zelle As Range
     'Nur alle Zellen mit Formeln
     For Each Zelle In ActiveWorkbook.Cells.SpecialCells(xlCellTypeFormulas, 23)
        If InStr(Zelle.FormulaLocal, "DBRW(") > 0 Then Zelle.Value = Zelle.Value
    Next

End Sub
Habe ich noch etwas vergessen?

DANKE und Gruss
Nik


  

Betrifft: Nur DBWR? TM1 kennt noch ein paar... von: EtoPHG
Geschrieben am: 05.07.2013 16:16:36

andere, Nik

Siehe: TM1 Worksheet Functions
Muss auf all diese Functions getestet werden, den theoretisch könnten alle benutzt werden?

Zudem was meinst du mit:
die mit DBRW anfangen in fixe Werte umzuwandeln
und
Aber das komplette kopieren und in Werte ersetzen ist eben nicht so wirklich sinnvoll, da auch Verknüpfungen etc. ersetzt werden.

1. Können die TM1-Funktionen beliebig geschachtelt in Formeln vorkommen und da nützen Ansätze wie die von NoNet und Luc (Suche auf =DBWR) wirklich nur rudimentär.

2. Was verstehst du unter Verknüpfung? Wenn eine Formel durch den Wert ersetzt wird, geht natürlich auch diese verloren, falls sich die Formel auf Zellreferenzen in einer anderen Mappe bezog.

Gruess Hansueli


  

Betrifft: Zelle BEGINNT mit =DBWR von: NoNet
Geschrieben am: 05.07.2013 16:23:00

Hallo Hansueli,

ich pflichte dir bei, dass diese Funktionen natürlich auch verschachtelt vorkommen können - daran hatte ich bei der Code-Entwicklung auch gedacht, aber ich habe Nik dann wörtlich genommen :

 Formeln, die mit DBRW anfangen 
Daher überprüft mein Code auch nur die Zellen, deren Inhalt mit der Funktion =DBRW( beginnen !

Salut, NoNet


 

Beiträge aus den Excel-Beispielen zum Thema "Alle DBRW-Formeln mittels Makro in Werte umwandeln"