Article: Q137096
Product(s): Microsoft Visual Basic for Windows
Version(s): WINDOWS:4.0
Operating System(s):
Keyword(s): kbprogramming kbVBp400
Last Modified: 11-JAN-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Professional Edition, 16-bit, for Windows, version 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Enterprise Edition, 16-bit, for Windows, version 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows, version 4.0
-------------------------------------------------------------------------------
SYMPTOMS
========
When trying to pass a Variant data type to Microsoft Word using OLE automation,
a "Type mismatch" error occurs. For example, if objVar is an object variable set
to a Word.Basic object, and Text1 is some text box containing a string value,
the following line of code generates the error:
objVar.Insert Text1
This problem did not exist in Visual Basic version 3.0, so it must be taken into
consideration when doing any code porting and/or upgrading.
RESOLUTION
==========
To avoid this problem, the variable passed to Word must be explicitly typed. The
previous example can be replaced by either of the following to prevent this
error:
objVar.Insert Text1.Text
-or-
objVar.Insert CStr(Text1)
STATUS
======
This behavior is by design
MORE INFORMATION
================
Steps to Reproduce and Correct Behavior
---------------------------------------
1. Start a new project in Visual Basic 4.0. Form1 is created by default.
2. Add a command button (Command1) and a text box (Text1) to Form1.
3. Place the following code in the Command1_Click event procedure:
Dim objVar As Object
Set objVar = CreateObject("Word.Basic")
objVar.FileNew
objVar.Insert Text1
Set objVar = Nothing
4. Press F5 to run the program.
5. Click Command1. Error 13, "Type mismatch" is generated.
6. Modify the code in the Command1_Click event procedure to this:
Dim objVar As Object
Set objVar = CreateObject("Word.Basic")
objVar.FileNew
' Notice that this is the only line changed
objVar.Insert Text1.Text
Set objVar = Nothing
7. Repeat step 5. No error is encountered. Check Microsoft Word, and you will
find a new document containing the word "Text1" (the value of Text1.Text).
Additional query words:
======================================================================
Keywords : kbprogramming kbVBp400
Technology : kbVBSearch kbAudDeveloper kbVB400Search kbVB400 kbVB16bitSearch
Version : WINDOWS:4.0
Issue type : kbprb
=============================================================================