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 ...".

Daniel Bencik
fonte
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
fonte
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.

RadioPlanner2013
fonte
0

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

Cara simples
fonte