I'm working on recovering from a very serious injury 3 years ago and I have a need to see VO2max data from before the injury to see how my recovery back to my previous level of fitness is tracking.
Surely there is some way to do this. I can't imagine all the other data from ages ago is still present, but VO2max somehow isn't.
You can use the free site https://runalyze.com, which syncs with your Garmin Connect account, to see your average Garmin VO2Max after every recorded activity (with 2 decimal places.) (Note that there's no other way to see 2 decimals of precision. 2 decimals can be useful if, for example, you're wondering why your Garmin said your fitness improved after a run, but your VO2 Max apparently stayed the same. In this case you'll likely find that the more precise number changed, while the rounded number stayed the same.)
You'll see a list of activities, and this data will be present as a column named "Vo2max (file)". (You may have to add this column using Configuration > Dataset).
Unfortunately there isn't an easy way to export this data as far as I know, but you can manually record the data points and analyze the data yourself.
(Runalyze does have charts which include VO2Max, but unfortunately they focus on the VO2Max that runalyze itself calculates for you.)
This prints daily vo2Max in range of start/end dates (F12 -> Console):
jQuery.getJSON( 'https://connect.garmin.com/modern/proxy/metrics-service/metrics/maxmet/daily/2021-07-01/2021-07-31', function(days) { days.forEach( function(day) { d = day.generic; console.dir(d.calendarDate, d.vo2MaxValue); } ); } );