How can I use node_load with a module created page that requires an argument?
The code executed from Drupal, in index.php, contains the following code.

$return = menu_execute_active_handler();

// Menu status constants are integers; page content is a string.
if (is_int($return)) {
  switch ($return) {
    case MENU_NOT_FOUND:
      drupal_not_found();
      break;
    case MENU_ACCESS_DENIED:
      drupal_access_denied();
      break;
    case MENU_SITE_OFFLINE:
      drupal_site_offline();
      break;
  }
}
elseif (isset($return)) {
  // Print any value (including an empty string) except NULL or undefined:
  print theme('page', $return);
}


menu_execute_active_handler() accepts an argument: the path being shown. If that argument is not passed to the function, then menu_get_item(), the function called by menu_execute_active_handler() uses the content of $_GET['q'].
In your case, you would pass to the path you are interested to. Your function should use code similar to the following one:

function mymodule_get_page($path = NULL) {
  $return = menu_execute_active_handler($path);

  // Menu status constants are integers; page content is a string.
  if (is_int($return)) {
    return $return;
  }

  if (isset($return)) {
    return theme('page', $return);
  }

  return −1;
}


The calling function would need to check the returned value: If it is a string, then it the what returned from theme('page'); if it −1, then the menu callback didn't return any value (but could have printed the page content; if it is an integer different than −1, then it's a Drupal error code, i.e. the one reporting the site is off-line, the user is trying to access a page without to have any permission, or the user is trying to access a non existing page.

The only "problem" with this code is that sometimes a menu callback doesn't return any content, but it prints the content directly; this is normally done for content that doesn't need to appear together the rest of the page output Drupal normally adds (e.g. the content for the blocks associated to a page), such as when a module returns XML content that should not mixed up with the HTML output generated from Drupal.
In this case, the function should intercept the output directly printed, with ob_start() and ob_get_flush().

function mymodule_get_page($path = NULL) {
  ob_start();
  $return = menu_execute_active_handler($path);
  $output = ob_get_flush();

  // Menu status constants are integers; page content is a string.
  if (is_int($return)) {
    return $return;
  }

  if (isset($return)) {
    return theme('page', $return);
  }

  return $output;
}