That are a lot of tabs indeed! Can you specify what you precisely want? Do you want that users can scroll through a list of tabs and after selecting a tab it will navigate to that tab? Or do you want a scroll list as a developer?
I suggest to consider a re-design of this application - so that there is max. one row of tabs.
I assume that there are a lot of redundancies within the sheets - probably fixing the expressions with set analysis with hard-coded values to certain product, categories or similar. If so why not just providing appropriate list-boxes and the user selects their wanted values?
No users don't see the tabs. I will hide tabs for users and they access the sheet by button. but when I want to make the sheets in server its easier for me to show the tabs and scrolling. actually its easier for me to access sheet through tabs rather than button.
IMO it's the wrong way. Why creating hundreds of sheets and quite possibly the same number of variables and buttons to control their visibility? It may work for your business case but the efforts to create all this - probably highly redundant - stuff must be quite enormously and maintaining a nightmare. I'm sure that there are much easier possibilities.
Recommended is to keep things as simple as possible - means max. one row of sheet tabs and no macro/actions with/without buttons to show/hide sheets and objects and/or select anything. Just providing the user the possibility to select their wanted data and views within readable sheets/objects. No magic!
Nevertheless if you want continue with your approach you could add some grouping logics to the sheets, for example with various colouring of the sheet-tab background and their names. Further you could add some extra show/hide-variables for those groups. And of course you could make all of it user-dependent for example by depending it on the right osuser(). But to implement it now afterwards will be quite hard and ugly work ....
First of all, I think it is wise to follow the advice been given by @marcus_sommer . For the quick win you can do two things as a developer.
1. Make use of the sheets toolbar (picture = Dutch).
2. Load the document's xml in order to get the sheet objects from the file, see example. You can join a table (maybe from Excel or from a database table) with descriptions. Then you can add a trigger on the field Title with the action 'Activate sheet'. See example in QVW.
FROM [1796733.qvw] (XmlSimple, Table is [DocumentSummary/Sheet]);
left join (Sheet)
LOAD * INLINE [SheetId Description
Document\SH01 Main - Developer sheet
Document\SH02 Sheet 1 - KPI Sales
Document\SH03 Sheet 2 - Breakdown Sales
Document\SH04 Sheet 3 - Report Sales
Document\SH05 Sheet 4 - Customer Analysis
Document\SH06 Sheet 5 - Debt Analysis
] (delimiter is ' ')