JustPaste.it

Sub MCR()

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'xlXmlImportElementsTruncated   1 - The contents of the specified XML data file have been truncated because the XML data file is too large for the worksheet.
'xlXmlImportSuccess             0 - The XML data file was successfully imported.
'xlXmlImportValidationFailed    2 - The contents of the XML data file do not match the specified schema map.
' http://www.bettersolutions.com/excel/ERV283/NO328968332.htm
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Response = MsgBox("Do you want to start import now ?", _
                    vbYesNo + vbCritical + vbDefaultButton2, _
                    "Import from WEB")
                    
If Response = vbNo Then Exit Sub

Application.ScreenUpdating = False ' turn off the screen updating
Application.DisplayAlerts = False

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'                            Procedure for xml file-import                                       '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''ChDir (ActiveWorkbook.Path)
'fopen = Application.GetOpenFilename("XML Spreadsheet files (*.xml), *.xml")
'    If fopen <> False Then
'        With ActiveWorkbook
'            .XmlMaps("Main_Map").Import URL:=fopen, Overwrite:=True
'        End With
'    Else
'        MsgBox "Please select the xml file to import": Exit Sub
'    End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    With Worksheets("Work")
        If .Range("Criteria").Value = "" Or .Range("CriteriaX").Value = "" Or .Range("Criteria").Value > .Range("CriteriaX").Value Then MsgBox "Problema din perioda": Exit Sub
        If .Range("pass").Value = "" Then MsgBox "Check password in $O$1 cell": Exit Sub
        d_from = Format(.Range("Criteria").Value, "yyyy-mm-dd") & " 00:00:00"
        d_to = Format(.Range("CriteriaX").Value, "yyyy-mm-dd") & " 23:59:59"
        spass = .Range("pass").Value
    End With
    
    sdata = "<methodCall><methodName>authentication</methodName><params><param><value><int>837</int></value></param><param><value><string>adminVA</string></value></param><param><value><string>" & spass & "</string></value></param></params></methodCall>"
    
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
    
    URL = "http://export.***********.com"
    
    objHTTP.Open "POST", URL, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send (sdata)
    
    If objHTTP.Status <> 200 Then MsgBox "HTTP Error: " & objHTTP.Status: Exit Sub
    
    rdata = "<methodCall><methodName>getPolicyXML</methodName><params><param><value><string>" & objHTTP.ResponseXML.Text & "</string></value></param><param><value><boolean>1</boolean></value></param><param><value><string>" & d_from & "</string></value></param><param><value><string>" & d_to & "</string></value></param></params></methodCall>"
    
    objHTTP.Open "POST", URL, False
    objHTTP.send (rdata)
    
    If objHTTP.Status <> 200 Then MsgBox "HTTP Server Error: " & objHTTP.Status: Exit Sub
    
    For Each xFields In objHTTP.ResponseXML.DocumentElement.childNodes
        Select Case UCase(xFields.nodeName)
            Case "POLICIES"
                For Each xNodes In xFields.childNodes
                   If xNodes.selectSingleNode(".//ProductID").nodeTypedValue <> "10" Then xFields.removeChild xNodes
                Next
        End Select
    Next xFields

With ActiveWorkbook
    .XmlMaps("Main_Map").ImportXml XMLData:=objHTTP.ResponseXML.XML, Overwrite:=True
End With

Set objHTTP = Nothing

MsgBox "Report data were successfully downloaded" & vbNewLine & "from WEB" & vbNewLine & "Wait for data import...."

Application.DisplayAlerts = True

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'1.  =IF(ISBLANK(INDEX(XML!B4:B4000;0;0));"";INDEX(XML!B4:B4000;0;0)&TEXT(INDEX(XML!C4:C4000;0;0);"00000"))
'2.  =IF(ISBLANK(INDEX(XML!D4:D4000;0;0));"";INDEX(XML!D4:D4000;0;0)&CHAR(32)&INDEX(XML!E4:E4000;0;0))
'3.  =IF(ISBLANK(INDEX(XML!F4:F4000;0;0));"";INDEX(XML!F4:F4000;0;0))
'4.  =IF(ISBLANK(INDEX(XML!G4:G4000;0;0));"";INDEX(XML!G4:G4000;0;0))
'5.  =IF(ISBLANK(INDEX(XML!H4:H4000;0;0));"";INDEX(XML!H4:H4000;0;0))
'6.  =IF(ISBLANK(INDEX(XML!I4:I4000;0;0));"";INDEX(XML!I4:I4000;0;0))
'7.  =IF(ISBLANK(INDEX(XML!J4:J4000;0;0));"";INDEX(XML!J4:J4000;0;0))
'8.  =IF(ISNA(VLOOKUP(INDEX(XML!L4:L4000;0;0);XML!V4:W477;2;FALSE));"";VLOOKUP(INDEX(XML!L4:L4000;0;0);XML!V4:W477;2;FALSE))
'9.  =IF(ISBLANK(INDEX(XML!K4:K4000;0;0));"";INDEX(XML!K4:K4000;0;0))
'10. =IF(ISNA(VLOOKUP(INDEX(XML!M4:M4000;0;0);XML!Y4:Z17;2;FALSE));"";VLOOKUP(INDEX(XML!M4:M4000;0;0);XML!Y4:Z17;2;FALSE))
'11. =IF(XML!P4:P4000="refund";0;IF(XML!P4:P4000="void";0;IF(ISBLANK(INDEX(XML!N4:N4000;0;0));"";INDEX(XML!N4:N4000;0;0))))
'12. =IF(ISBLANK(INDEX(XML!O4:O4000;0;0));"";INDEX(XML!O4:O4000;0;0))
'13. =IF(ISBLANK(INDEX(XML!P4:P4000;0;0));"";INDEX(XML!P4:P4000;0;0))
'14. =IF(ISBLANK(INDEX(XML!B4:B4000;0;0));"";INDEX(XML!B4:B4000;0;0))
'15. =IF(ISBLANK(INDEX(XML!Q4:Q4000;0;0));"";IF(DATEDIF(D9:D4000;G9:G4000;"d")<=365;0;IF(DATEDIF(D9:D4000;G9:G4000;"d")<=4380;INDEX(XML!Q4:Q4000;0;0)*(1-20%);INDEX(XML!Q4:Q4000;0;0))))
'16. =IF(ISBLANK(INDEX(XML!A4:A4000;0;0));"";INDEX(XML!A4:A4000;0;0))
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Application.DisplayStatusBar = True
Application.StatusBar = "Please wait..."

With Worksheets("XML")
    tbl_xml = .Range("A4").CurrentRegion.Rows.Count
    .Range("B1").Value = Left(.Range("B1").Value, 10) & Chr(32) & Mid(.Range("B1").Value, 11)
End With

With Worksheets("Work")
    If Range("sb_total").Offset(-3, 0).HasArray = True Then
        Range("sb_total").Offset(-3, -10).CurrentArray.Resize(ColumnSize:=16).ClearContents
    End If

    tbl = .Range("tbl_end").Row - 5
    If tbl < tbl_xml + 8 Then
'    Range("B10").Select
'    Selection.Resize(rowsize:=2).Rows(2).EntireRow.Resize(rowsize:=tbl_xml - tbl + 7).Insert Shift:=xlDown
    Rows(10 & ":" & tbl_xml - tbl + 17).Insert Shift:=xlDown
'        For i = 0 To tbl_xml - tbl + 7
'            .Range("B10").EntireRow.Insert
'        Next
    ElseIf tbl > tbl_xml + 8 Then
        Rows(10 & ":" & tbl - tbl_xml + 1).EntireRow.Delete ' -9 + Row(10)
'        For i = 0 To tbl - tbl_xml - 9
'            .Range("B10").EntireRow.Delete
'        Next
    Else
    End If
    .Range("B9" & ":" & "B" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C2:R4000C2,0,0)),"""",INDEX(XML!R4C2:R4000C2,0,0)&TEXT(INDEX(XML!R4C3:R4000C3,0,0),""00000""))"
    .Range("C9" & ":" & "C" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C4:R4000C4,0,0)),"""",INDEX(XML!R4C4:R4000C4,0,0)&CHAR(32)&INDEX(XML!R4C5:R4000C5,0,0))"
    .Range("D9" & ":" & "D" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C6:R4000C6,0,0)),"""",INDEX(XML!R4C6:R4000C6,0,0))"
    .Range("E9" & ":" & "E" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C7:R4000C7,0,0)),"""",INDEX(XML!R4C7:R4000C7,0,0))"
    .Range("F9" & ":" & "F" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C8:R4000C8,0,0)),"""",INDEX(XML!R4C8:R4000C8,0,0))"
    .Range("G9" & ":" & "G" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C9:R4000C9,0,0)),"""",INDEX(XML!R4C9:R4000C9,0,0))"
    .Range("H9" & ":" & "H" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C10:R4000C10,0,0)),"""",INDEX(XML!R4C10:R4000C10,0,0))"
    .Range("I9" & ":" & "I" & tbl_xml + 8).FormulaArray = "=IF(ISNA(VLOOKUP(INDEX(XML!R4C12:R4000C12,0,0),XML!R4C23:R480C24,2,FALSE)),"""",VLOOKUP(INDEX(XML!R4C12:R4000C12,0,0),XML!R4C23:R480C24,2,FALSE))"
    .Range("J9" & ":" & "J" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C11:R4000C11,0,0)),"""",INDEX(XML!R4C11:R4000C11,0,0))"
    .Range("K9" & ":" & "K" & tbl_xml + 8).FormulaArray = "=IF(ISNA(VLOOKUP(INDEX(XML!R4C13:R4000C13,0,0),XML!R4C28:R20C29,2,FALSE)),"""",VLOOKUP(INDEX(XML!R4C13:R4000C13,0,0),XML!R4C28:R20C29,2,FALSE))"
    .Range("L9" & ":" & "L" & tbl_xml + 8).FormulaArray = "=IF(XML!R4C16:R4000C16=""refund"",0,IF(XML!R4C16:R4000C16=""void"",0,IF(ISBLANK(INDEX(XML!R4C14:R4000C14,0,0)),"""",INDEX(XML!R4C14:R4000C14,0,0))))"
    .Range("M9" & ":" & "M" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C15:R4000C15,0,0)),"""",INDEX(XML!R4C15:R4000C15,0,0))"
    .Range("N9" & ":" & "N" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C15:R4000C16,0,0)),"""",INDEX(XML!R4C16:R4000C16,0,0))"
    .Range("O9" & ":" & "O" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C2:R4000C2,0,0)),"""",INDEX(XML!R4C2:R4000C2,0,0))"
    .Range("P9" & ":" & "P" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C17:R4000C17,0,0)),"""",IF(DATEDIF(R9C4:R4000C4,R9C7:R4000C7,""d"")<=365,0,IF(DATEDIF(R9C4:R4000C4,R9C7:R4000C7,""d"")<=4380,INDEX(XML!R4C17:R4000C17,0,0)*(1-20%),INDEX(XML!R4C17:R4000C17,0,0))))"
    .Range("Q9" & ":" & "Q" & tbl_xml + 8).FormulaArray = "=IF(ISBLANK(INDEX(XML!R4C1:R4000C1,0,0)),"""",INDEX(XML!R4C1:R4000C1,0,0))"
'   .Range("sb_total").Calculate
    .Calculate

'Range(Range("A4").End(xlDown)).Select
'iAreaCount = Selection.Count
'    Range("D9:D619").Select
'    Range("D619").Activate
'    Selection.FormulaArray = _
'        "=IF(ISBLANK(INDEX(XML!R[-5]C[2]:R[3991]C[2],0,0)),"""",INDEX(XML!R[-5]C[2]:R[3991]C[2],0,0))"
'    Range("E619").Select

End With

Application.ScreenUpdating = True
Application.StatusBar = False

End Sub


Sub CreatedDBase()
Dim fopen As String
Response = MsgBox("Do you want to start export to FOX now ?" & vbNewLine & _
                  "ALERT" & vbNewLine & "MM must be Exported at first time!!! ", _
                  vbYesNo + vbCritical + vbDefaultButton2, _
                  "Export to FOX")
                    
If Response = vbNo Then Exit Sub
    fopen = Application.GetOpenFilename("dBase files  (*.dbf),*.dbf")

If fopen <> "False" Then

Set DBConn = CreateObject("ADODB.Connection")
Set dbfrs = CreateObject("ADODB.Recordset")

DBConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & GetFolderName(fopen) & ";Extended Properties=DBASE IV;")

With dbfrs
   .ActiveConnection = DBConn
   .CursorType = adOpenStatic
   .CursorLocation = 3
   .LockType = 3
   .Source = "SELECT * FROM" & Chr(32) & GetFileName(fopen) & ";"
   .Open
End With
    
    Set rng = ActiveSheet.Range("A9").CurrentRegion
    Set rng = rng.Offset(2, 0).Resize(rng.Rows.Count - 3, rng.Columns.Count)
    Set xrng = Worksheets("XML").Cells(4, 1).CurrentRegion
    Set xrng = xrng.Offset(1, 0).Resize(xrng.Rows.Count - 1, xrng.Columns.Count)

    Application.ScreenUpdating = False
        With rng
            dbfrs.MoveLast
            For i = 1 To .Rows.Count
                dbfrs.AddNew
            For y = 0 To dbfrs.Fields.Count - 1
                    Select Case y
                        Case 0
                            dbfrs.Fields(y).Value = .Cells(i, 17).Value
                        Case 1
                            dbfrs.Fields(y).Value = .Cells(i, 15).Value
                        Case 2
                            If .Cells(i, 2).Value = Empty Then
                                dbfrs.Fields(y).Value = Empty
                            Else
                                dbfrs.Fields(y).Value = Mid(.Cells(i, 2).Value, 3)
                            End If
                        Case 3
                            dbfrs.Fields(y).Value = Mid(.Cells(i, 3).Value, 1, 30)
                        Case 4
                            dbfrs.Fields(y).Value = .Cells(i, 4).Value
                        Case 5
                            dbfrs.Fields(y).Value = .Cells(i, 5).Value
                        Case 6
                            dbfrs.Fields(y).Value = .Cells(i, 6).Value
                        Case 7
                            dbfrs.Fields(y).Value = .Cells(i, 7).Value
                        Case 8
                            If xrng.Cells(i, 18).Value <> Empty Then
                                dbfrs.Fields(y).Value = xrng.Cells(i, 18).Value
                            Else
                                dbfrs.Fields(y).Value = 0
                            End If
                        Case 9
                            Set crng = Worksheets("XML").Cells(4, 23).CurrentRegion
                            Set crng = crng.Offset(1, 0).Resize(crng.Rows.Count - 1, crng.Columns.Count - 1)
                            Set found = crng.Find(xrng.Cells(i, 12).Value, LookIn:=xlValues)
                                If Not found Is Nothing Then
                                    dbfrs.Fields(y).Value = found.Offset(columnOffset:=3).Value
                                End If
                        Case 10
                            If UCase(.Cells(i, 10).Value) = "EUR" Then
                                dbfrs.Fields(y).Value = 978
                            Else
                                dbfrs.Fields(y).Value = 840
                            End If
                        Case 11
                            dbfrs.Fields(y).Value = .Cells(i, 11).Value
                        Case 12
                            dbfrs.Fields(y).Value = .Cells(i, 12).Value
                        Case 13
                            If UCase(.Cells(i, 14).Value) = "ACTIVE" Then
                                dbfrs.Fields(y).Value = False
                            Else
                                dbfrs.Fields(y).Value = True
                            End If
                        Case 14
                            If (VBA.VarType(Application.Evaluate(.Cells(i, 16).Value)) = vbError) Then
                                dbfrs.Fields(y).Value = 0
                            Else
                                dbfrs.Fields(y).Value = .Cells(i, 16).Value
                            End If
                    End Select
                Next y
           Next i
        dbfrs.Update
    End With
    dbfrs.Close
    Set rng = Nothing
    Set crng = Nothing
    Set found = Nothing
    Set xrng = Nothing
    DBConn.Close
    Set dbfrs = Nothing
    Set DBConn = Nothing
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CopyFile fopen, GetFolderName(fopen) & "\" & _
        CStr(Format(CDate(Range("Criteria")), "ddmmyy")) & _
        CStr(Format(CDate(Range("CriteriaX")), "ddmmyy")) & _
        ".dbf", True
    Application.ScreenUpdating = True
End If
End Sub

Function GetFileName(nfile As String)
  Dim fso As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
  GetFileName = fso.GetFileName(nfile)
End Function

Function GetFolderName(nfile As String)
  Dim fso As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
  GetFolderName = fso.GetParentFolderName(nfile)
End Function