Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Access Excel Datenbank
09.11.2015 09:51:07 BOB
Solved
26.11.2015 11:36:39 Gast76331
NotSolved

Ansicht des Beitrags:
Von:
BOB
Datum:
09.11.2015 09:51:07
Views:
1307
Rating: Antwort:
 Nein
Thema:
VBA Access Excel Datenbank

Hallo Forum,

bitte um dringende Hilfe. Kann mir einer bei unten stehenden Code weiterhelfen?

Bzw. diesen Code in normale Menschensprachen übersetzen...

Sub Update_DS()
Dim DB As Database
Dim index As DAO.Recordset, records As DAO.Recordset
Dim query As QueryDef
Dim message As String, QueryName As String, SQL As String
Dim varStatus As Variant
Dim ThisInput As Variant, ThisOutput As Variant, ThisKennung As Variant
Dim i As Single, j As Single, MaxRow As Single, MaxCol As Single
Dim xl As Object


Set DB = OpenDatabase(CurrentDb.Name)
Set index = DB.OpenRecordset("DS_Index")

i = 1
With index

    .MoveLast
    ReDim ThisInput(1 To .RecordCount, 1 To 10)
    ReDim ThisKennung(1 To .RecordCount, 1 To 2)
    .MoveFirst
    While .EOF = False
    
        message = .fields("SeriesTicker") ' status ausgabe
        Debug.Print message
        varStatus = SysCmd(acSysCmdSetStatus, message)
        DoEvents
        
        SQL = "SELECT * FROM DS_Data WHERE Kennung = " & .fields("Kennung") & " ORDER BY Datum"
        Set records = DB.OpenRecordset(SQL)
        
        If records.RecordCount = 0 Then ' check, ob query da
            QueryName = "DS_" & .fields("Category") & "_" & .fields("Land") & "_" & _
                .fields("LevelRateChng") & "_" & VBA.Format(.fields("Kennung"), "0000")
            If Not QueryExists(QueryName) Then
                Set query = DB.CreateQueryDef(QueryName, SQL) 'Query wird initialisiert
            End If
        End If
        
        ThisInput(i, 1) = "YES"
        ThisInput(i, 2) = "TS"
        ThisInput(i, 3) = "RCF"
        ThisInput(i, 4) = .fields("SeriesTicker")
        ThisInput(i, 5) = .fields("DataType")
        ThisInput(i, 6) = #1/1/1950#
        ThisInput(i, 8) = .fields("Frequency")
        ThisInput(i, 10) = "=""Alldata!"" & ADDRESS(1, (ROW(A" & (i + 6) & ")-6)*2,  4)"
        ThisKennung(i, 1) = .fields("Kennung")
        ThisKennung(i, 2) = .fields("Publishing Lag (Weeks)")
        i = i + 1
        .MoveNext
    Wend
End With
Set index = Nothing

Set xl = CreateObject("excel.application")


xl.Visible = True
xl.Workbooks.Open FileName:="F:\Bonds\ProjektemiteinergewissenTragweite\AssetAlloc\THE_BIG_MACRO_DATABASE\DS\Request.xlsm"
xl.Sheets("REQUEST_TABLE").Activate
xl.Sheets("REQUEST_TABLE").Select
xl.worksheets("REQUEST_TABLE").range("B7:U20000").clearcontents
xl.worksheets("REQUEST_TABLE").range("B7:U20000").clearformats
xl.worksheets("REQUEST_TABLE").range(xl.cells(7, 2), xl.cells(UBound(ThisInput) + 6, 12)) = ThisInput


xl.worksheets("Alldata").range("A1:XFD100000").clearcontents
xl.worksheets("Alldata").range("A1:XFD100000").clearformats


xl.Run ("StartProcessingRT")
DoEvents

xl.worksheets("REQUEST_TABLE").range("B7:K" & UBound(ThisInput) + 6) = ThisInput
xl.worksheets("Alldata").Activate
xl.worksheets("Alldata").range("B1").Select


    Const xlFormulas As Integer = -4123
    Const xlPart As Integer = 2
    Const xlByRows As Integer = 1
    Const xlNext As Integer = 1
    Const xlByColumns As Integer = 2
    Const xlPrevious As Integer = 2


MaxRow = 10000
MaxCol = xl.cells.Find(What:="*", After:=xl.cells(1, 1), LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column

Set index = DB.OpenRecordset("DS_Data")
With index
    For i = 2 To MaxCol Step 2
        ThisOutput = xl.worksheets("Alldata").range(xl.cells(1, i), xl.cells(20000, i + 1))
        If Not ThisOutput(1, 2) = "#Error" Then
            SQL = "DELETE * FROM DS_Data WHERE Kennung = " & ThisKennung(i / 2, 1)
            DB.Execute (SQL)
            
            message = "Writing " & ThisInput(i / 2, 4) & " that is " & (i / 2) & " of " & ((MaxCol - 1) / 2)
            Debug.Print message
            varStatus = SysCmd(acSysCmdSetStatus, message)
            DoEvents

                        
            For j = 3 To UBound(ThisOutput)
                If ThisOutput(j, 1) = "" Then
                    Exit For
                Else
                    If Not ThisOutput(j, 2) = "NA" Then
                        .AddNew
                        .fields("Kennung") = ThisKennung(i / 2, 1)
                        .fields("Datum") = ThisOutput(j, 1)
                        .fields("Combined Date") = ThisOutput(j, 1) + ThisKennung(i / 2, 2) * 7
                        .fields("Combined Value") = ThisOutput(j, 2)
                        .update
                    End If
                End If
            Next j

        End If
    Next i
End With
Set index = Nothing


xl.activeWorkbook.Save
xl.activeWorkbook.Close
xl.Quit
Set xl = Nothing


End Sub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Access Excel Datenbank
09.11.2015 09:51:07 BOB
Solved
26.11.2015 11:36:39 Gast76331
NotSolved