Omitir el asistente de importación de Excel en el scriptEstoy tratando de abrir un archivo .xslx desde una aplicación JMP cuando se presiona el botón "Aceptar" de la ventana de una aplicación. Mi problema es que me resulta difícil pasar por alto la ventana del asistente de Excel y simplemente abrirlo directamente.
Quiero que el archivo se abra en JMP usando las opciones de Excel que especifico en una instrucción Open(). Para que mis opciones de declaración Open() sean correctas, abrí el archivo manualmente y copié la declaración Open() del script de origen de la tabla, por lo que creo que todas esas opciones son correctas. Es un archivo de Excel de varias hojas de trabajo, y solo quiero una hoja de trabajo en JMP, así es como se ve mi estado Open():
Open(
"~/Desktop/test.xlsx",
Worksheets( "Data" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
Curiosamente, cuando ejecuto esta declaración abierta en un script independiente, todo sucede como quiero: el archivo se abre directamente sin que aparezca el panel Asistente de Excel.
Sin embargo, cuando incluyo la instrucción Open() idéntica como parte del script de una aplicación JMP que estoy creando, parece que no puedo detener la apertura del panel del asistente. (La declaración Open() se llama cuando hago clic en el botón "Aceptar" de la ventana de entrada de usuario de mi aplicación).
¿Alguna idea de por qué sucede esto y cómo detenerlo?
Re: Omitir el asistente de importación de Excel en el script@mjoner - Sí, esta solución alternativa todavía se requiere al menos hasta JMP 16.0.
Re: Omitir el asistente de importación de Excel en el script@danschikore ¿El procedimiento al que se hace referencia aquí sigue siendo la única forma de lograr esto? ¿Hay alguna idea de eliminar la necesidad de escribir en este kludge para obtener el comportamiento de secuencias de comandos deseado?
Re: Omitir el asistente de importación de Excel en el scriptDan,
Gracias por este seguimiento. Eventualmente probé todo lo demás y terminé usando @EM La solución de incrustar la instrucción abierta dentro de un archivo include(). Esto explica lo que está pasando y proporciona una solución diferente.
JohnRe: Omitir el asistente de importación de Excel en el scriptResulta que el comportamiento es diferente en Windows y Mac, probablemente debido a las diferencias en las bibliotecas de soporte para leer archivos de Excel.En Mac, una secuencia de comandos Open() invocada directamente abrirá el archivo como se esperaba, pero una llamada Open() invocada desde un clic de botón abrirá el Asistente de Excel.
La solución que @EM siempre que fuerza a JMP al modo "por lotes", lo que cambia la lógica para que se comporte como si el script se ejecutara directamente en lugar de mediante un botón.Otra forma de hacer lo que no requiere un archivo intermedio es incrustar su script en un ScriptBox e invocar <
// One way to force JMP into batch mode is to embed the script in a ScriptBox
// and invoke <<RUN on="" the="" script="" box.="" new="" window=""></RUN>
Re: Omitir el asistente de importación de Excel en el scriptDan, gracias por responder. Probaré esto y te enviaré por separado la aplicación que está causando mi problema. Dame un poco. JohnRe: Omitir el asistente de importación de Excel en el scriptIntenté reproducir este problema con JMP 13/14/15 usando la aplicación JMP adjunta.El script de pulsación de botón se muestra a continuación y abre correctamente la tabla en todas las versiones que he probado hasta ahora.¿Te funciona este ejemplo?¿En qué se diferencia esto de la aplicación que está desarrollando y qué versión de JMP está usando?
Button1Press = Function( {this},
// This function is called when the button is pressed
Open(
"$SAMPLE_IMPORT_DATA\VA Lung Cancer.xls",
Worksheets( "VA Lung Cancer" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
);
Re: Omitir el asistente de importación de Excel en el scriptGracias, Sra. Esto será útil en el futuro. Mientras tanto, he descubierto una solución diferente para mi situación, pero es bueno tenerla en la caja de herramientas para la próxima vez.
Hay una sección en la Guía de secuencias de comandos (p. 333) que analiza la sensibilidad al contexto de la función Open() y la relaciona con el Asistente de Excel, pero no la encuentro muy clara. No puedo evitar pensar que el comportamiento discutido aquí es una deficiencia (? error) en la implementación de Open(), o bien necesita más documentación.
Por ejemplo, una cosa que sería genial es una opción explícita en Open() de no usar el asistente, en lugar de marcar una preferencia. Solo mis dos centavos.
Re: Omitir el asistente de importación de Excel en el scriptTambién he experimentado esto y he encontrado una solución. Salva el Abierto() comando como un script separado y uso Incluir() para ejecutar el código.
// Create a jsl file with the Open() command
f = Save Text File(
"~/Desktop/test.jsl",
Char(
Name Expr(
Open(
"~/Desktop/test.xlsx",
Worksheets( "Data" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
)
)
);
// Invoke Open() via user input
nw = New Window( "open test", Button Box( "OK", Include( f ) ) );Re: Omitir el Asistente de importación de Excel en el scriptEn caso de que alguien esté desconcertado por esto, aquí hay un enfoque alternativo: 1. obtener y almacenar la preferencia del usuario para el método de apertura de Excel; 2. cámbielo a lo que necesita; 3. abra el archivo; 4. cambie la configuración a lo que era
p.ej
originalPref = Obtener preferencias (método abierto de Excel);
Establecer preferencia(Método de apertura de Excel("Abrir todas las hojas"));
myPath = Seleccionar archivo(.... etc
dt = Abrir(miRuta...)
evaluar(preferenciaoriginal)
Re: Omitir el Asistente de importación de Excel en el scriptSigo teniendo este problema con JMP 17.2 en mi Mac, y mi código para abrir la hoja de Excel tiene variables que requieren que el usuario ingrese el valor.