Make a well in the middle of the flour, add the eggs and oil and work into a smooth and even dough. Cover with a kitchen towel or plastic wrap and let rest for 20 minutes. Roll the pasta into thin sheets 1/16” thick with a rolling pin or a pasta machine.
Using the tip of a small knife, cut the pasta into squares about 3” on a side. Bring a large pan of lightly salted water to a boil and briefly cook the pasta 6 or 7 squares at a time. As soon as the pasta squares come to the surface, remove them with a slotted spoon and lay them to cool on a kitchen that has been soaked in water and thoroughly wrung out.
Continue until all the pasta has been cooked. Heat 1 1/2 tablespoons of butter in a pan, add the onion, celery and parsley, all finely chopped, and when the onion begins to brown, add the ground beef. Cook until the meat is completely browned, then add the cleaned, trimmed and sliced mushrooms.
Cook for 4-5 minutes, add the diced tomatoes, salt and pepper and cook for about another 25 minutes. In a baking dish that has been buttered or lined with parchment paper, arrange enough pasta squares next to each other to cover the bottom of the dish, then cover the pasta with a layer of the meat sauce, mushrooms, thin strips of ham and dot sparingly with butter.
Repeat this operation until you have used up all the ingredients, alternating layers of pasta and sauce and ending with a layer of pasta. Pour the remaining melted butter and 3/4 of the Parmigiano Reggiano over the top layer.
Bake in a 350° oven for 15-20 minutes or until the top of the lasagna has browned all over. When done, remove the lasagna from the oven and serve with the rest of the grated Parimigiano Reggiano on the side.