Part AA]
I tried Pivot Tables in VBA for the first time. They were harrowing experience when I did them 2 years back (without VBA that is and I did not know of forums then) . So while I was slogging it out with the first workbook, your 2nd version appeared (which I was dreading). But by then I had finished with the coding for the first case. Editing it was a little easier.

Steps:
1. Insert a worksheet named "Report"
2. Goto VBE, insert module and then paste following code.
[vba]Public Sub CreateReport()
Dim pCache As PivotCache
Dim pTable As PivotTable
Dim lLastRow As Long
Dim ws As Worksheet
Set ws = Sheets("Data")
lLastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
Set pCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, ws.Range("A3:H" & lLastRow))
Set pTable = pCache.CreatePivotTable(Sheets("Report").Range("A" & Rows.Count).End(xlUp)(4), _
"Report No." & ws.Name, True)

With pTable

'To get old format for rearranging the info
.InGridDropZones = True
.RowAxisLayout xlTabularRow

'Adding the first field at pos 1
With .PivotFields("Type")
.Orientation = xlRowField
.Position = 1
End With

'Adding the second field at pos 2
With .PivotFields("u.m.")
.Orientation = xlRowField
.Position = 2
End With

'Adding sum of the data
.AddDataField .PivotFields("Quantity"), "Sum of Quantity", xlSum

'Removing subtotals which are not needed
.PivotFields("Type").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)

'Removing blanks
.PivotFields("u.m.").PivotItems("(blank)").Visible = False

End With
End Sub

[/vba]

Part BB]
The above code will work. However, there are some grey areas which I do not understand. Here it is:

This works:
[vba]Set pCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, ws.Range("A3:H" & lLastRow))[/vba]
while this doesn't:
[vba]Set pCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, ws.Range("A3:P" & lLastRow))[/vba]
I noticed one column was having duplicate name (Descrizione) but changing that didn't stop the error.

PartCC]
I have seen your requirement for listbox to which I will give a try but they have always been my bete noire so expect an even more delayed response . There are many things in VBA I fear