Arquivo bat para abrir o excel com parâmetros - espaços


2

Gostaria de executar o Excel, abrir um arquivo específico e passar argumentos para esse arquivo. Minha ligação é

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" 
"D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"
/e"D:\Desktop\MyFile.dia"

e isso corre do jeito que eu quero.

No entanto, quando o parâmetro do arquivo do Excel (MyFile.dia) contém um espaço, tudo fica arruinado, independentemente das aspas. A mensagem de erro é que "File.dia" não pode ser encontrado.

Como posso resolver isso? A ajuda do MS não ajuda.

EDITAR:

Reagindo aos comentários de Dave, tentei:

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" "D:\Desktop\MyFile.dia"
"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" "D:\Desktop\MyFile .dia"

e tudo funciona bem. O problema começa quando tento incluir a /eopção para passar argumentos para o Excel. Ou seja ...

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" /e "D:\Desktop\MyFile.dia"
 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm" /e "D:\Desktop\MyFile. dia"

Isso não produz nenhum erro, o problema é que o Excel não entende que o último arquivo é algo que gostaria de PASSAR para o arquivo xlsm e não para outro arquivo a ser aberto no Excel. Para dizer ao Excel que .dia deve ser um parâmetro processado por .xlsm, a única coisa que encontrei para trabalhar foi excluir os espaços em torno de "/ e". Conseqüentemente

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"/e"D:\Desktop\MyFile.dia"

funciona como pretendido, no entanto

 "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "D:\Desktop\libs\xlam\+apps\+diagramViewer\diagramViewer.xlsm"/e"D:\Desktop\MyFile .dia"

resulta no Excel tentando abrir o arquivo ".dia", resultando em uma mensagem de erro "O arquivo .dia não existe ...".


Não estou tentando ser difícil, mas renomear o arquivo para que ele não tenha espaço em branco, não é uma opção?
— Dave

Dave, na verdade não. Este será chamado um monte de vezes em arquivos criados por outros funcionários da empresa onde eu trabalho e eu posso esperar que eles sejam nada, mas preguiçoso ...
— Daniel Bencik

Eu posso executar o seu código sem erro ... mesmo que eu mude de "MyFile.dia" para "My File here.dia" ainda sem a mensagem de erro que você mencionou ...
— Dave

Da linha cmd? Você pode postar o comando exato que você usa?
— Daniel Bencik

Eu o executei a partir de um arquivo .bat, conforme o seu assunto? Seu título diz "Arquivo bat para abrir o excel" ... bem, como um arquivo .bat, ele funciona como está
— Dave

Respostas:


1

A falha deve ser que seu caminho não está realmente fazendo referência ao que você pensa que é ou, um problema com a localidade pode ser ou como está reconhecendo caracteres ...

Acabei de criar o seguinte

"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "C:\Users\DRook\Desktop\a d c.xlsx"/e "C:\Users\DRook\Desktop\My File . dia"

Funciona como esperado (ou seja, nenhuma mensagem de erro) no prompt de comando e em um arquivo .bat.

Suspeito que o arquivo não tenha sido referenciado corretamente de alguma forma ou que possa ter alguma configuração de localidade que o esteja confundindo!

Para ter certeza (apenas para descartar), localize MyFile.diae renomeie-o My File . diano Explorer. Em seguida, com o shiftbotão pressionado, clique com o botão direito do mouse no seu arquivo (file.dia) e selecione a opçãoCopy as path

Em seguida, cole isso como o parâmetro final em seu comando.

Lembre-se, se você não criou essa sequência e a copiou e colou de outra fonte, as marcas "podem não fazer o que você pensa que deveriam. Sugiro que você reescreva a sequência inteira e teste-a. Ou copie minha sequência acima e teste isso, apenas renomeie os caminhos.

Se D:não for uma unidade local, sugiro testar com tudo na área de trabalho (ou pelo menos um local onde você não terá problemas com a rede ou as permissões).

Eu até tentei com estrutura de diretório semelhante e funciona bem.

insira a descrição da imagem aqui

Editar

Eu também tentaria cada parâmetro, um de cada vez, para garantir que o caminho estivesse correto. Portanto, no prompt de comando, digite

"C: \ Arquivos de Programas (x86) \ Microsoft Office \ Office14 \ EXCEL.EXE" e pressione enter

Então

"D: \ Desktop \ libs \ xlam + apps + diagramViewer \ diagramViewer.xlsm" e pressione enter

Então

"D: \ Desktop \ MyFile.dia" e pressione enter

Então

"D: \ Desktop \ Meu arquivo. Dia" e pressione enter

Editar 2

Certo, agora posso entender melhor a falha, mas ofereço apenas 1 solução, que é uma solução que você não deseja - não permita espaços em branco.

O que está acontecendo quando envio espaço em branco no parâmetro é que recebo a seguinte mensagem do Excel (observe, meu parâmetro é e/"C:\Users\DRook\Desktop\My File . dia")

insira a descrição da imagem aqui

Observe que o problema é que o Excel parece estar trocando espaço em branco pela extensão (portanto, veja o espaço em branco, assume que é o fim de um nome de arquivo e cria a extensão).


Dave, muito obrigado. Eu olhei o conteúdo do arquivo bat com "Mostrar todos os caracteres" no Notepad ++ - não havia nada suspeito. No entanto, notei que não há espaço entre "... ad c.xlsx" e / e no seu exemplo. Eu tentei, mas não funcionei - no entanto, quando eu fiz "..diagramViewer.xlsm" / e "myFile.xls" (ou seja, sem espaços), tudo funciona como eu queria. Eu não entendo nada, mas estou feliz que funcione.
— Daniel Bencik

OK, parou de funcionar ...
— Daniel Bencik

Como assim, parou de trabalhar?
— Dave

Dá o mesmo erro como sempre ... Eu não posso descobrir o que as nossas máquinas diferem em Eu não acredito OS diferente poderia afetar isto ....
— Daniel Bencik

Eu fiz uma atualização. Estou no W7
— Dave

1

Eu estive olhando para algo semelhante, mas queria usar uma macro no arquivo XLSM aberto para executar automaticamente se passou um parâmetro.

Há uma longa discussão em http://www.vbforums.com/showthread.php?366559-Excel-How-to-Pass-Command-Line-Parameter-DKenny-is-KING

sobre esse assunto.

O que fiz foi usar a sugestão da postagem nº 19 (interessante que o "comando" do VB (6) não funciona nos aplicativos do Office, que eu verifiquei). O que faço é usar um arquivo em lotes para iniciar o Excel: -

Set ExcelArgs=AutorunMacros
"C:\Program Files (x86)\Microsoft Office\Office14\excel.exe" /e "C:\Path to\Excel File\Analyser Program.xlsm" 

Em seguida, na pasta de trabalho Macro, tenho o seguinte (clique na guia "Pasta de trabalho" no projeto

Private Sub Workbook_Open()
Dim ExcelArgs As String
ExcelArgs = Environ("ExcelArgs")
If Lcase (ExcelArgs)= "autorunmacros" Then
    Call StartMyMacro(Auto:=True)
End If
End Sub

O StartMyMacro é o que você deseja alcançar automaticamente.

Além disso, o My StartMyMacro é definido da seguinte forma

Public Sub StartMyMacro(Optional Auto As Boolean = False)

que, se chamado manualmente, tem Auto Set como False, e chamá-lo no Automatic Open define a variável como True. No final, com Auto = True, salve a pasta de trabalho (na verdade uma nova criada durante a macro) e saia do Excel. Isso faz com que a janela do CMD seja fechada e a variável de ambiente seja limpa.


0

Já enfrentamos problemas semelhantes. Acabamos renomeando o arquivo xlsm. Houve um problema com a codificação no nome do arquivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.