I may have another problem, but it most certainly isn't the table name. As I said, I made the script into a stored procedure:
[font="Courier New"]
/****** Object: StoredProcedure [dbo].[usp_GetTableRowCount]
Script Date: 09/30/2008 14:39:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_GetTableRowCount]
@TableName VARCHAR(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
DECLARE @varSQLNVARCHAR(4000)
DECLARE @iCountINT
--SET@varSQL = 'SELECT TOP 1 @iCountOut = rows FROM sys.partitions where object_id = ' + CAST(object_id(@TableName) AS VARCHAR(100))
--EXECUTE sp_ExecuteSQL @varSQL, N'@iCountOut INT OUTPUT', @iCountOut = @iCount OUTPUT
--SELECT@iCount as [rowcount]
SELECT Coalesce( ( select sum (spart.rows) from sys.partitions spart
where spart.object_id = tbl.object_id and spart.index_id < 2), 0) AS [RowCount]
FROM sys.tables AS tbl where tbl.Name = CAST(object_id(@TableName) AS VARCHAR(100)) ORDER BY 1
END[/font]
And as I stated, it does not work.