<p>I have a <strong>MS Access</strong> form with a <strong>Datasheet</strong> subform.<br>
Using code, I change the <strong>ColumnHidden</strong> property of various of its columns.
But, when I close the form, I'm asked whether to save the table layout of the Datasheet's table.</p>

<ul>
<li>How can I stop the form from asking the user to same the table layout continually?</li>
<li>Do I have no choice but to change the Datasheet to a regular subform?</li>
</ul>

If you are always hiding the same columns - create a query that only has the columns you want displayed and use that as the source of your subform.
If you still need some hidden fields (child keys, etc.) you will have to create a regular form. It's not too bad:
just base it on your table,
drag your columns onto the form (formatting, and placement doesn't matter)
set it to datasheet view
edit labels (these become column headings)
change the tab order (this controls the order the columns are displayed)
view the datasheet and hide the columns you want
save the form
add this form as a subform to the main form