Files Corrupted on Save: How to Troubleshoot Source of Problem

ID: Q142116


The information in this article applies to:
  • Microsoft Excel for Windows, versions 5.0, 5.0c
  • Microsoft Excel for Windows 95, version 7.0
  • Microsoft Excel 97 for Windows
  • Microsoft Windows versions 3.1, 3.11, 95
  • Microsoft Windows for Workgroups, version 3.11


SYMPTOMS

Files that you save to a floppy disk or to a network disk drive may intermittently become corrupted or damaged when you use any of the programs listed at the beginning of this article.


CAUSE

This problem may occur for either of the following reasons:

  • The method that is used when Microsoft Excel reads and writes files

    Microsoft Excel uses a technique called "back seeking" when reading and writing files. "Back seeking" means that when Microsoft Excel opens a file and reads from it, it does not necessarily read or write in a sequential manner. It may start at the first record in the file, jump to the fifteenth record, go back to the third record, and so on. This "jumping back" part may be what is causing the intermittent corruption of files especially when you are saving to a floppy disk drive. Microsoft Excel is one of a few programs that uses this technique when reading and writing files. Often these disk problems appear to exist only in Microsoft Excel. Having the floppy disk drive heads realigned should correct this problem.

    -or-


  • A conflict occurs when Microsoft Windows virtualizes the hard disk controller.


Testing for a conflict with Windows

To test for a conflict with Windows, use the following appropriate method.

Method 1: Microsoft Windows 95 Only

If you are using Microsoft Windows 95, do either of the following:

  • Start Windows 95 in Safe mode. To start Windows 95 in Safe mode, press the F8 key when you see the "Starting Windows 95" message, and then choose Safe Mode from the Startup menu.

    -or-


  • Disable the File System Properties Settings. To disable the File System properties settings, follow these steps:

    1. Use the right mouse button to click My Computer, and then click Properties.


    2. Click the Performance tab.


    3. Click the File System button.


    4. Click the Troubleshooting tab. Select the following check boxes:

      
                Disable protect-mode hard disk interrupt handling
                Disable synchronous buffer commits
                Disable all 32-bit protect-mode disk drivers
                Disable write-behind caching for all drives 


    5. Restart your computer.




Method 2: Microsoft Windows 3.x or Windows for Workgroups Only

If you are using Windows 3.x or Windows for Workgroups, follow these steps:

  1. Start Windows with the following diagnostic switches:

    WIN /D:FSVX

    NOTE: The /D switch is used for troubleshooting problems when Windows does not start or run correctly. The following table lists each of the WIN.COM switches and its function.

    
                                           Which is equivalent to
                                           using this in the
          This                             [386enh] section of
          switch   Does this               System.ini file
          -------------------------------------------------------
    
          :F       Turns off 32-bit disk  32BitDiskAccess=FALSE
                   access.
    
          :S       Specifies that Win-   SystemROMBreakPoint=FALSE
                   dows should not use
                   ROM address space
                   between F000:0000 and
                   1 megabyte (MB) for a
                   break point.
    
          :V       Specifies that the ROM   VirtualHDIRQ=FALSE
                   routine handles
                   interrupts from the hard
                   drive controller.
    
          :X       Excludes all of the      EMMExclude=A000-FFFF
                  adapter area from the
                  range of memory that
                  Windows scans to find
                  unused space. 


  2. After you determine which switch or combination of switches, allows you to save Microsoft Excel files to be to an external drive without corruption, use a text editor such as Windows Notepad to add the corresponding line, or lines, to the [386enh] section of the System.ini file.



MORE INFORMATION

The following is a detailed description of the System.ini settings that can be changed in the [386enh] section.

32-bit Disk Access (FastDisk)

32-bit disk access technology was developed for Windows 3.1 and works with any drive controller that is WD1003 compatible. It allows Windows to bypass the BIOS and access the drive controller directly which allows for better performance in Windows and MS-DOS programs running under Windows. In Windows for Workgroups 3.11, 32-bit disk access allows 32- bit file access to be a client to it instead of using the Real Mode Mapper (RMM.D32). This allows 32-bit file access to run even faster. If your drive controller is not WD1003 compatible, contact your hardware vendor to see if a 32-bit disk access driver is available for your drive controller. The System.ini setting for this setting is as follows:
32BitDiskAccess=<Boolean>
The default setting is Off if your hard disk is capable of supporting 32- bit disk access. Otherwise, this setting is not present in the System.ini file. The purpose of this entry is to turn 32-bit disk access on or off. To change this setting, choose the 386 Enhanced icon in the Control Panel window. If this setting is not present in the System.ini file, the 32-bit Disk Access check box will not appear in the Virtual Memory dialog box of Control Panel.

SystemROMBreakPoint Statement

The SystemROMBreakPoint statement specifies whether Windows should use ROM address space between F000:0000 and 1 MB for a break point. Windows in 386 enhanced mode normally searches this space to find a special instruction that is used as a system break point. If this address space contains something other than permanently available ROM, you should disable this setting. The System.ini setting for this is as follows:
SystemROMBreakPoint=<Boolean>
The default setting is True if Windows is started in real mode of the 80386/486 CPU; it is False if Windows is started in virtual mode of the 80386/486 CPU. Most 386 memory managers, such as QEMM and 386MAX, require this value to be set to False if the memory manager running Windows is started in virtual mode. Otherwise, Windows is started in real mode. To change this setting, use a text editor such as Windows Notepad to edit the System.ini file.

NOTE: It is very important that you type this line in the System.ini file EXACTLY as it appears above. Any errors--including a difference in case--can cause Windows to ignore the setting in the System.ini file.

VirtualHDIrq Statement

The VirtualHDIrq statement if enabled in Windows 386 enhanced mode can terminate interrupts from the hard disk controller, bypassing the ROM routine that handles these interrupts. Some hard disk drives might require this setting to be disabled in order for interrupts to be processed correctly. If this setting is disabled, the ROM routine handles the interrupts, which slows down system performance.

The System.ini setting for this is as follows:
VirtualHDIrq=<Boolean>
The default setting is On for AT-compatible computers; the setting is Off for all other computers. To change this setting, use a text editor such as Windows Notepad to edit the System.ini file.

NOTE: It is very important that you type this line in the System.ini file EXACTLY as it appears above. Any errors--including using a different case--can cause Windows to ignore the setting in the System.ini file.

EMMExclude Statement

The EMMExclude statement in the System.ini file specifies a range of memory that Windows will not scan to find unused address space. This statement has the side effect of turning off the RAM and ROM search code for the range. The range (two paragraph values separated by a hyphen) must be between A000 and EFFF. This scanning can interfere with some adapters that use the same memory area. The starting value is rounded down and the ending value is rounded up to a multiple of 16K. For example, you could set EMMExclude=C800- CFFF to prevent Windows from scanning the addresses C800:0000 through CFFF:000F. You can specify more than one range by including more than one EMMExclude line.

NOTE: If any upper memory block (UMB) provider is installed in the Config.sys file, this switch has no effect in the region the UMB provider is using. The UMB provider has priority in the UMB area. For this reason, you should disable the UMB provider (such as EMM386.EXE), restart the system, and then try the WIN /D:X switch.

The System.ini setting for this is as follows:
EMMExclude=<paragraph-range>
There is no default setting. To change this setting, use a text editor such as Windows Notepad to edit the System.ini file.

NOTE: It is very important that you type this line in the System.ini file exactly as it appears above. Any errors--including a difference in case--can cause Windows to ignore the setting in the System.ini file.

Additional query words: 5.00c 8.00 97 damage damaged tshoot

Keywords : xlloadsave xlwin
Version : WINDOWS:5.0,5.0c,7.0,97
Platform : WINDOWS
Issue type :


Last Reviewed: April 14, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.