Referente a almacenar todo el libro en un dataSet para después acceder a las hojas no he encontrado como hacerlo pero pongo acá una variante que si permite cargar las tablas(asociadas a hojas de Excel) deseadas para después referencia indistintamente a ellas. Esto puede modificarse según entiendan para logra una mejor utilidad. Considérese lo escrito anteriormente para completar esto. No soy programador así que se aceptan sugerencias.
DataTable^ dataTable1= gcnew DataTable();
DataTable^ dataTable2= gcnew DataTable();
String^ myConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=bd.XLS; Extended Properties=Excel 8.0;";
//cadena de conexión
OleDbConnection^ myConnection= gcnew OleDbConnection(myConnectionString);
OleDbDataAdapter^ Pagina1 = gcnew OleDbDataAdapter( "select * From [Hoja1$]", myConnection);
OleDbDataAdapter^ Pagina2 = gcnew OleDbDataAdapter( "select * From [Hoja2$]", myConnection);
Pagina1->Fill(dataTable1);
Pagina2->Fill(dataTable2);
myConnection->Close();
dataGridView1->DataSource = dataTable1;
dataGridView2->DataSource = dataTable2;
Esto fue hecho en C++.net 2005 versión Express.