Замените ваш макрос
opy на такой:
REM ***** BASIC *****
Global mr As Integer ' - Важно!!!
Sub opy
oDoc=ThisComponent
sheet_name="покупка"
oSheet=oDoc.Sheets.getByName(sheet_name)
oCell=oSheet.getCellByposition(3,2)
mrr=oCell.getString()
If Trim(mrr)="" Then mr=0
oCell_1=oSheet.getCellByposition(1,3)
ns = oCell_1.getString()
oCell_2=oSheet.getCellByposition(3,mr+2)
oCell_2.setString(ns)
oCell_1=oSheet.getCellByposition(1,6)
ns = oCell_1.getValue()
oCell_2=oSheet.getCellByposition(4,mr+2)
oCell_2.setValue(ns)
mr=mr+1
End Sub
PS.
Global mr As Integer ' - Важно!!! - Запоминает число заполненных строк в Корзине.