Reciept Generation Code Final
Reciept Generation Code Final
' Iterate through each row from B5 to the last used row or the 1000th row
For rowIndex = 5 To WorksheetFunction.Min(lastRow, 1000)
' Check if B, C, and D are filled in Sheet1
If ws1.Range("B" & rowIndex).Value <> "" And ws1.Range("C" &
rowIndex).Value <> "" And ws1.Range("D" & rowIndex).Value <> "" Then
' Construct the XML string
XMLString = "<TALLYMESSAGE xmlns:UDF=""TallyUDF"">" & vbCrLf & _
" <VOUCHER REMOTEID="""" VCHTYPE=""Receipt""
ACTION=""Create"" OBJVIEW=""Accounting Voucher View"">" & vbCrLf & _
" <DATE>" & ws1.Range("B" & rowIndex).Value &
"</DATE>" & vbCrLf & _
" <PARTYLEDGERNAME>" & ws1.Range("C" &
rowIndex).Value & "</PARTYLEDGERNAME>" & vbCrLf & _
" <LEDGERNAME>" & ws1.Range("C" & rowIndex).Value &
"</LEDGERNAME>" & vbCrLf & _
" <VOUCHERNUMBER/>" & vbCrLf & _
" <VOUCHERKEY>192427419762696</VOUCHERKEY>" & vbCrLf
& _
" <ALLLEDGERENTRIES.LIST>" & vbCrLf & _
" <LEDGERNAME>" & ws1.Range("C" &
rowIndex).Value & "</LEDGERNAME>" & vbCrLf & _
" <ISPARTYLEDGER>Yes</ISPARTYLEDGER>" & vbCrLf &
_
" <AMOUNT>" & ws1.Range("D" & rowIndex).Value &
"</AMOUNT>" & vbCrLf & _
" </ALLLEDGERENTRIES.LIST>" & vbCrLf & _
" <ALLLEDGERENTRIES.LIST>" & vbCrLf & _
" <LEDGERNAME>Cash</LEDGERNAME>" & vbCrLf & _
" <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>" &
vbCrLf & _
" <ISPARTYLEDGER>Yes</ISPARTYLEDGER>" & vbCrLf &
_
"
<ISLASTDEEMEDPOSITIVE>Yes</ISLASTDEEMEDPOSITIVE>" & vbCrLf & _
" <AMOUNT>-" & ws1.Range("D" & rowIndex).Value &
"</AMOUNT>" & vbCrLf & _
" </ALLLEDGERENTRIES.LIST>" & vbCrLf & _
" </VOUCHER>" & vbCrLf & _
"</TALLYMESSAGE>"
' Clear the data from column B, C, and D starting from row 5 to the declared
range
Dim clearRange As Range
Set clearRange = ws1.Range("B5:D" & lastRow)
clearRange.ClearContents