meu aplicativo deve executar algumas ações simplesno Excel, como adicionar gráficos, listar objetos e assim por diante. Eu estou usando conexão OLE. O problema é que alguns métodos do Excel tendo tipos internos (enumerações) como argumentos. E eu não tenho idéias sobre como se referir a eles. Por exemplo:
WorkBook.ActiveSheet.ListObjects.Add(xlSrcRange, Range("$D$5:$J$15"), , xlNo).Name = "Table1"
xlSrcRange e xlNo pertencem à enumeração interna. Eu tentei me referir a eles da seguinte maneira
ExcelApp.xlSrcRange
ExcelApp.XlListObjectSourceType.xlSrcRange
ExcelApp.XlListObjectSourceType
este código causa erro "Objeto não suporta propriedade ou método ExcelApp.xlSrcRange"
New XlListObjectSourceType.xlSrcRange
new xlSrcRange
esse código também causa um erro (variável desconhecida XlListObjectSourceType e xlSrcRange)
Eu estou trabalhando com QTP e a linguagem de script é script VB
Respostas:
1 para resposta № 1Um script .wsf pode acessar as constantes xl * por meio de uma referência do Excel.Sheet:
type xlconst.wsf
<?xml version="1.0" standalone="yes" encoding="iso-8859-1" ?>
<package>
<job id="xlconst">
<reference object="Excel.Sheet" reference="true"/>
<script language="VBScript">
<![CDATA[
" ############################################################################
For Each arg In WScript.Arguments.Unnamed
WScript.Echo "Const " & arg & " = " & Eval(arg)
Next
" ############################################################################
]]>
</script>
</job>
</package>
saída:
cscript xlconst.wsf xlNo xlYes
Const xlNo = 2
Const xlYes = 1
O VBScript comum pode "t. Se o QTP estiver restrito ao VBScript simples, você terá que adicionar / definir as constantes manualmente. Talvez o .wsf acima torne essa tarefa mais fácil.
0 para resposta № 2
Que tal usar um nome totalmente qualificado?
dim sourceType As Excel.XlListObjectSourceType
sourceType = Excel.XlListObjectSourceType.xlSrcRange
EDIT: (em vbscript)
dim sourceType
sourceType = 1