Tuesday 21 October 2014

How to check an Excel file is already open/ not

There are no direct methods using Exel/Workbook object to find the functionality.

Work around is, we need to find out all open tasks, and from that we will see whether any task with name "Microsoft Excel"

Here in the below code, i have a sample Excel file with name "SampleXL".

Set Word = CreateObject("Word.Application")
Set Tasks = Word.Tasks
i=0
For Each Task in Tasks
    If instr(Task.Name,"Microsoft Excel - SampleXL")>0  Then
            i=1
    end if
Next
If i=1 Then
    print "Excel file is opened"
else
    print "No excel file opened with the name specified"
End If

Word.Quit

Monday 20 October 2014

How to find Data Type of a Variable?

The data type of a variable can be indentified in two VBScript built-in functions.
  1. Vartype 
  2. Typename
Vartype returns a numeric value indicating the sub datatype of a variable.
The below table contains return values that indicate respective subtypes.

Return Value


Sub Datatype


Description

0
vbEmpty
Empty (uninitialized)
1
vbNull
Null (no valid data)
2
vbInteger
Integer
3
vbLong
Long integer
4
vbSingle
Single-precision floating-point number
5
vbDouble
Double-precision floating-point number
6
vbCurrency
Currency
7
vbDate
Date
8
vbString
String
9
vbObject
Automation object
10
vbError
Error
11
vbBoolean
Boolean
12
vbVariant
Variant (used only with arrays of Variants)
13
vbDataObject
A data-access object
17
vbByte
Byte
8192
vbArray
Array

Ex:
Dim x

x=10
msgbox vartype(x)  'Returns 2

In the above table 2 indicates vbInteger datatype.So x is an integer type.
Typename directly returns the name of the Sub Datatype of a variable.



Sub Datatype


Description
Byte
Byte value
Integer
Integer value
Long
Long integer value
Single
Single-precision floating-point value
Double
Double-precision floating-point value
Currency
Currency value
Decimal
Decimal value
Date
Date or time value
String
Character string value
Boolean
Boolean value; True or False
Empty
Unitialized
Null
No valid data
<object type>
Actual type name of an object
Object
Generic object
Unknown
Unknown object type
Nothing
Object variable that doesn't yet refer to an object instance
Error
Error
Ex:
Dim x

x=10
msgbox typename(x)  'Returns “Integer”
There are some more VBScript Built-in functions to find whether a variable datatype is specific datatype or not.
IsArray – Returns a Boolean value indicating whether a variable is an array or not.
IsDate – Returns a Boolean value indicating whether an expression can be converted to a date.
IsEmpty – Returns a Boolean value indicating whether a variable has been initialized.
IsNull - Returns a Boolean value that indicates whether an expression contains no valid data (Null).
IsNumeric - Returns a Boolean value indicating whether an expression can be evaluated as a number.
IsObject - Returns a Boolean value indicating whether an expression references a valid Automation object.
Built in functions are available for only these datatypes. You can write built function for every datatype like below…

'*******************************
Function IsString(oValue)

If vartype(oValue)=8 then

IsString=true
Else
IsString=False
End If
End Function
'*******************************