Non è che manchino le idee, è che non sempre stiamo coi diti sulla tastiera.
Intanto abbiamo chiarito che sotto ci vuoi un parte fissa, coi menù; e se vuoi che questi stiano fissi, sarà il caso di far scrollare un DIV, non il BODY (l' intera pagina), che è quello che inizialmente s' era capito dalle tue esaustive (= che rendono esausti) spiegazioni.
Altrimenti, anche i menù te li vedresti sparire fuori campo.

Per intanto studiati questo, abbi fede e prega :
codice:
<script>

 function avvia(){
  q = document.getElementById("quadro");
  q.scrollLeft++;
  t = setTimeout('avvia()', 50); //imposta una temporizzazione, che tra 50 milli-sec. fa ripartire
                                 //la funzione stessa. Il timer deve essere nominato ("t" o altro), affinché
                                 //clearTimeout(); lo possa poi individuare quando andrà arrestato. 
 }

 function ferma(){
  clearTimeout(t); // spegne il timer, che individua per il nome dato: t 
 }

</script>
<body onload="avvia();">

<div id="quadro" onmouseout="avvia();" onmouseover="ferma();" 
  style="width: 100%; height: 300px; overflow: auto; border: 1px dashed red;">

 <table width="2600" height="280">
  <td width="30%" bgcolor="blue"></td><td width="30%" bgcolor="yellow"></td><td width="30%" bgcolor="blue"></td>
 </table>
</div>
q.scrollLeft++; equivale a dire q.scrollLeft = q.scrollLeft + 1;
e devi usare questa forma estesa se vuoi incrementare di più di un px "a botta".

q riassume in se' l' Elemento DIV individuato tramite ID.
Si potrebbero sostituire le prime due righe con la forma prolissa e più primitiva:

document.getElementById("quadro").scrollLeft = document.getElementById("quadro").scrollLeft + 3;

ma anche più intuitiva per i neofiti.
Vuol dire che il valore di scroll sinistro di quel div, ad ogni passaggio, si rende uguale al proprio attuale valore ripreso, più 3 (pixel).

Poi però si arriva in fondo ...