Tip 161: Forcing the Common Dialog Control to Save Files to a Specific Disk Drive

December 5, 1995

Abstract

The Microsoft® Visual Basic® Common Dialog control allows you to display a Save As dialog box in your Visual Basic application so that a user can save a file to disk. This article explains how to prevent a user from saving files to a disk drive that is not installed on the computer system.

Preventing the Selection of Nonexistent Disk Drives

The Microsoft® Visual Basic® Common Dialog control provides six dialog boxes that you can use in your application. The Action property of the Common Dialog control determines which of the six (Open Disk File, Save As, Color, Font, Print, and Help) dialog boxes appears. One of these dialog boxes is the Save As dialog box. This dialog box appears when you need to save a file to disk.

The Save As dialog box lets the user of your application type the name he or she wants to assign to the file that is to be saved to disk. Note that the Common Dialog control does not actually save the data to the file—it simply provides an easy way for the user to select a file with which to work. The user can specify any disk drive, even one that is not actually installed on the computer system. This "flexibility," however, may create problems.

You can require that a user save the file to a specific disk drive by first testing for a drive designation. The name of the file the user types is stored in the Common Dialog control's Filename property. It is a simple matter to check the first letter of this string to determine which disk drive the user wants to save the file to. You can then modify the drive designation to suit your needs.

In the example program below, you use the Ucase and Left functions provided in Visual Basic to test the first character of the string stored in the Filename property. If this letter is not the letter A, you know the user typed a different drive letter. In this case, an error message appears indicating that the user must save the file to drive A only. If the user types the correct disk drive letter, the program continues running.

Example Program

This program shows how to force the Common Dialog Save As dialog box to save a file to a specific disk drive.

  1. Create a new project in Visual Basic. Form1 is created by default.

  2. Add a Common Dialog control to Form1. CommonDialog1 is created by default.

  3. Add a Command Button control to Form1. Command1 is created by default.

  4. Add the following code to the Click event for Command1:
    Private Sub Command1_Click()
        Call Save_DriveA
    End Sub
    
  5. Add a Text Box control to Form1. Text1 is created by default.

  6. Create a new function called Save_DriveA. Add the following code to this function:
    Function Save_DriveA()
        Dim X As Integer
    
        Do
            CommonDialog1.Action = 2    'save file
            If UCase(Left(CommonDialog1.filename, 1)) <> "A" Then
                MsgBox "You must save file to drive A only"
            Else
                Exit Do
            End If
            DoEvents
        Loop
    
        X = FreeFile
        Open CommonDialog1.filename For Output As #X
            Print #X, Text1.Text
        Close #X
        MsgBox "File has been saved to drive A"
    
    End Function
    

Run the example program by pressing F5. Click the Command Button control. The Common Dialog Save As dialog box appears on the screen. Type the name you want to assign to the file, and click the Save button. If you specified a disk drive other than drive A, a message box appears. You are then returned to the Common Dialog Save As dialog box to type a new filename. You must type the filename by specifying drive A as the destination disk drive. The program will then save the contents of the Text Box control to the specified file.