Q:

append query, skipping duplicate entries (duplicates are not primary key)

I have an append query here. I would like it to update an existing projects table in Access from an Excel spreadsheet. I would like it to ignore duplicates. Each time I run it, it pops an error about that final "Projects.[Measure]". Where did I go wrong?
INSERT INTO Projects ([Measure],[Customer Number], Store, [Customer Name], [CustomerAddress], [Measure Received])

SELECT [Measure], [Customer Number], [Store], [Customer Name], [CustomerAddress], [MeasureReceived]

FROM NewProjects

WHERE NOT EXISTS
(
SELECT * FROM NewProjects
WHERE NewProjects.[Measure] = Projects.[Measure]
)
;

A:

Your main query includes this subquery:
SELECT * FROM NewProjects
WHERE NewProjects.[Measure] = Projects.[Measure]

That WHERE clause references Projects.[Measure].  However Projects is not included in the FROM clause, so Access guesses Projects.[Measure] must be the name of a parameter.  
Consider a different approach.  First create a SELECT query which returns the "non-duplicate" rows.  LEFT JOIN NewProjects to Projects and ask for those rows where the right side Measure values are Null --- those are the NewProjects rows which are not present (not matched) in Projects:
SELECT
    n.Measure,
    n.[Customer Number],
    n.Store,
    n.[Customer Name],
    n.CustomerAddress,
    n.MeasureReceived
FROM
    NewProjects AS n
    LEFT JOIN Projects AS p
    n.Measure = p.Measure
WHERE p.Measure Is Null;

Investigate the Access "unmatched query wizard".  It can guide you through the process of creating a similar query.  But whether you use the wizard or copy my sample query and paste it into SQL View, confirm it returns the correct (non-duplicate) rows.  Then all you need to do is add the INSERT piece to the start of the query:
INSERT INTO Projects ([Measure],[Customer Number], Store, [Customer Name], [CustomerAddress], [Measure Received])

