I mean this kindly: The only part of your question that might possibly be considered inappropriate, is the meaningless subject line of
"Is this appropriate?"! See A4 of Von Pookie's Guidelines:
https://www.mrexcel.com/forum/board-announcements/127080-guidelines-forum-use.html. It helps people help you.
Regarding pricing, I've only done it a few times, so, take my advice with a packet of salt. You probably don't want to offer a hard number:
"It'll be $300", because, these projects have a way of morphing, they come up with new problems, desired features, and extra meetings and phone time. If you're just starting, give them an hourly rate
(include meetings and phone conversations!), and, only guess the time once everyone has agreed to the scope of the project.
The estimate that you write up will spell out in detail, what you've agreed to produce, and make it clear that your estimates are based on what was agreed. This way, if they decide they want more features or something else, you will be free to amend the estimate
(and you will, in writing).
Here's a quick & dirty formula: I suggest you first decide what your time is worth, and then, multiply it by how good you are at developing. Meaning, let's say you'd like to make $100/hour, but your VBA inexperience means your development time is twice as long as the average developer, then your charge would be Hourly X AverageTime X 0.5 = $50/hour
(you'll charge more when you get better at it). If you're so experienced that you can accomplish it in half the time of the same theoretical average developer, then, Hourly X AverageTime * 2. You get the picture. It doesn't take everything into account, but, it's a starting point for you to tweak as you please.
Only if you're blazingly fast, and you don't want them to know that this huge project will only take you 45 minutes, should you consider giving them a hard number estimate.