List all tables that a specific login has permissions
the script I use will show you all objects (SP, Tables, Functions) for a specified Database name and all the users that have rights on them, but you can narrow the search and extract exactly what you need. 

DECLARE @EXEC_SCRIPT    NVARCHAR(4000)
DECLARE @DBNAME         NVARCHAR(256) = 'DB name'

SET @EXEC_SCRIPT = 'USE ['+ @DBNAME + '] 
select DB_NAME ()                   as [db_name],
a.class_desc                        as [class_type] ,  
user_name(a.grantee_principal_id)           as [user_name] ,
isnull(OBJECT_NAME(a.major_id),'''')            as [object_name],
isnull      (b.name,'''')               as [column_name] , 
a.permission_name                   as [permission_name] , 
a.state_desc                        as [permission_type] , 
c.type_desc                     as [object_type],
CASE d.type 
                WHEN ''A'' THEN N''ApplicationRole''
                WHEN ''R'' THEN N''Role''
                ELSE N''User'' END  as [security_type],
CASE WHEN a.major_id  &lt; 0 THEN N''Y''
     ELSE N''N'' END                as [system_object],
d.is_fixed_role                     as [is_fixed_role]

from sys.database_permissions a left join sys.columns b 
on a.minor_id = b.column_id and a.major_id = b.object_id
left join sys.objects c on  c.object_id = a.major_id
INNER JOIN sys.database_principals AS d ON d.principal_id = a.grantee_principal_id
where a.class_desc &lt;&gt; ''DATABASE''  and user_name(a.grantee_principal_id) &lt;&gt; ''public''
order by user_name'

EXEC master.dbo.sp_executesql @EXEC_SCRIPT