Tratamiento de las v-input
Concluyo con esta entrada, en la práctica y en lo esencial, la fase primera del desarrollo de este modelo de automatización de textos, aunque quedan algunas cuestiones que en estos momentos implícitamente estoy considerando como accesorios, aunque posiblemente no lo sean tanto. Desde esta perspectiva más funcional que otra cosa, se debe "rematar la faena" hablando del tratamiento de las llamadas variables-input (vi).
For i = LBound(mSegmentos()) To UBound (mSegmentos())If mTipos(i) = "vi" ThenmCuestionario(i) = InputBox (mSegmentos(i) & Chr(13),"Cuestionario para facilitar la entrada de datos")End IfNext
... y la dejamos a disposición para ser usado posteriormente...
For i = LBound(mCuestionario()) To UBound (mCuestionario())oTexto = oHojaMatrizBase.getCellRangeByName( "C" & i+1 )oTexto.setString(mCuestionario(i))Next
Este tercer componente de la hoja MatrizBase nos permitirá desarrollar la segunda fase de esta propuesta de automatización, la cual tiene ya más similitud con un DocAp basado en un gestor Calc, del cual precisamente se diferencia a consecuencia del modo en que operamos con ese cuestionario (1). Pero como esta entrada es también final de fase, corresponde exponer en ella el script que hemos ido trabajando por partes en esta y en entradas anteriores.
Sub MatrizBase'Acceder a la hoja TextoBaseDim oHoja As ObjectoHoja = ThisComponent.getCurrentController.getActiveSheet()'... a la celda A1 que contiene el textoDim oTexto As ObjectoTexto = oHoja.getCellRangeByName( "A1" )'... y al contenidos de A1Dim sTexto As StringsTexto = oTexto.getString()'Dividimos el texto en segmentos mediante la función Split()Dim sSepara As StringDim mSegmentos() As StringDim SegTxt As StringDim i As IntegerDim n As IntegersSepara = "#"mSegmentos = Split(sTexto(),sSepara)'Eliminamos espacios mediante la función Trim()For i = LBound(mSegmentos()) To UBound(mSegmentos())SegTxt = mSegmentos(i)mSegmentos(i) = Trim(SegTxt)n = i+1 'Obtenemos la longitud de la matriz mSegmentos()Next'Calificamos los segmentos textuales'tf -> texto fijo'vi -> variable-input y variable-condicionada'vg -> variable-gramatical'sp -> signos de puntuación aislados'sl -> segmento vacío'Matrices complementarias:' mTipos() -> para categorización de los segmentos' mCuestionario -> para interface con usuario sobre viDim mTipos(n) As String, mCuestionario(n) As String'Identificación de categorías de los segmentos textuales (mTipos())For i = LBound(mSegmentos()) To UBound(mSegmentos())If mSegmentos(i) = "" ThenmTipos(i) = "sl"ElseIf mSegmentos(i) = "," or mSegmentos(i) = "." or mSegmentos(i) = ";" ThenmTipos(i) = "sp"ElsemTipos(i) = InputBox(mSegmentos(i),"Categorización de los segmentos textuales","tf-vi-vg-sl-sp")End IfNext'Cuestionario para interface respecto a vi (mCuestionario())For i = LBound(mSegmentos()) To UBound (mSegmentos())If mTipos(i) = "vi" ThenmCuestionario(i) = InputBox (mSegmentos(i) & Chr(13),"Cuestionario para facilitar la entrada de datos")End IfNext'Creamos la hoja MatrizBaseDim oHojas As ObjectoHojas = ThisComponent.getSheets()oHojas.insertNewByName("MatrizBase", 2)Dim oHojaMatrizBase As ObjectoHojaMatrizBase = ThisComponent.getSheets().getByName("MatrizBase")' Copiamos la matriz mSegmentos() en la columna AFor i = LBound(mSegmentos()) To UBound (mSegmentos())oTextoMatriz = oHojaMatrizBase.getCellRangeByName( "A" & i+1 )oTextoMatriz.setString(mSegmentos(i))Next'Copiamos la matriz mTipos() en la columna BFor i = LBound(mTipos()) To UBound (mTipos())oTextoMatriz = oHojaMatrizBase.getCellRangeByName( "B" & i+1 )oTextoMatriz.setString(mTipos(i))Next'Copiamos la matriz mCuestionario() en la columna CFor i = LBound(mCuestionario()) To UBound (mCuestionario())oTexto = oHojaMatrizBase.getCellRangeByName( "C" & i+1 )oTexto.setString(mCuestionario(i))Next'Identificación de la vi condicionante de las vgDim posCond As Integer, valor As IntegerDim viCond As String, conGen As String'Valor de posición de la variable vi condicionante en la matriz mSegmentos() -> variable posCondFor i = LBound(mSegmentos()) To UBound (mSegmentos())If mTipos(i) = "vi" Thenvalor = MsgBox(mSegmentos(i),36,"VI condicionante de las vg")If valor = 6 ThenposCond = iExit ForEnd IfEnd IfNext'Contenido de la vi condicionante (viCond)viCond = mSegmentos(posCond)'Identificación del género consultando a la bdNombres (conGen)conGen = CondGen(viCond)'Creación de la hoja CondicGenoHojas.insertNewByName("CondicGen", 3)'Posicionamiento en la hoja CondicGenDim oHojaCond As ObjectoHojaCond = ThisComponent.getSheets().getByName("CondicGen")'Copia de los datos posición y género de la vi condicionanteDim oTxtCond As ObjectoTxtCond = oHojaCond.getCellRangeByName( "A1" )oTxtCond.setString("Posición")oTxtCond = oHojaCond.getCellRangeByName( "B1" )oTxtCond.setString(posCond)oTxtCond = oHojaCond.getCellRangeByName( "A2" )oTxtCond.setString("Género")oTxtCond = oHojaCond.getCellRangeByName( "B2" )oTxtCond.setString(conGen)End Sub
En el script se pueden identificar esas partes gracias a los comentarios, lo que nos ahorra dar más explicaciones de las necesarias.
NOTA (1) Veremos en su momento, porque aquí no trataremos sobre el desarrollo de esa segunda fase, que se trabaja también en base a un bucle y con recursos simples de input (InputBox() asociados a ciclos que recorren las matrices que ahora guardamos como datos en MatrizBase

No hay comentarios:
Publicar un comentario
Comenta esta entrada