This code loads template, template style and modules of specified Itemid:
$Itemid = 171;
//get specified menu item
$app =& JFactory::getApplication();
$menu =& $app->getMenu();
$item = $menu->getItem($Itemid);
//load emplate of this menuitem
$db = JFactory::getDbo();
$db->setQuery('SELECT * FROM #__template_styles WHERE id = '.$item->template_style_id);
$template = $db->loadObject();
$registry = new JRegistry;
$registry->loadJSON($template->params);
$app->setTemplate($template->template, $registry);
//set 'Itemid' variable - it makes system to load attached modules
JRequest::setVar('Itemid', $Itemid);
//it musts to set active item for modules (e.c. mod_menu)
$menu->setActive($Itemid);
why the last line not works? I check executing order, component code loads before any modules. But active item in modules still old.