For your first issue, if the worksheet contains only the data table for your pivot table, I would recommend you using a dynamic named range for the data. This way, you can simply refer to this range in your code, and it will update automatically. If you are unfamiliar with dynamic named ranges, have a look here:
http://www.contextures.com/xlNames01.html
For the second issue, the following will give you the name of each pivot table on the active sheet:
Sub pivotnames()
Dim pt As PivotTable
For Each pt In ActiveSheet.PivotTables
MsgBox pt.Name
Next pt
End Sub
HTH
Jason
Bookmarks