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 /e
opçã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 ...".
fonte
Respostas:
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
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.dia
e renomeie-oMy File . dia
no 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.
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"
)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).
fonte
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: -
Em seguida, na pasta de trabalho Macro, tenho o seguinte (clique na guia "Pasta de trabalho" no projeto
O StartMyMacro é o que você deseja alcançar automaticamente.
Além disso, o My StartMyMacro é definido da seguinte forma
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.
fonte
Já enfrentamos problemas semelhantes. Acabamos renomeando o arquivo xlsm. Houve um problema com a codificação no nome do arquivo.
fonte