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 funciona da maneira que eu quero.

No entanto, quando o parâmetro de arquivo do Excel (MyFile.dia) contém um espaço, tudo está 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 todos funcionam OK. O problema começa quando tento incluir a opção /e 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"

Estes não produzem nenhum erro, o problema é que o Excel não entende que o último arquivo é algo que eu 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". Daí

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

    
por Daniel Bencik 03.09.2013 / 13:50

3 respostas

1

A falha deve ser o seu caminho, na verdade, não está referenciando o que você pensa que é, ou um problema com a localidade, 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, sem mensagem de erro) no prompt de comando e no arquivo .bat.

Eu suspeito que o arquivo não tenha sido referenciado corretamente de alguma maneira ou de que você possa ter alguma configuração de código de idioma que esteja confundindo-o!

Para ter certeza (apenas para descartá-lo), localize o MyFile.dia e renomeie-o como My File . dia no Explorer. Então, com o botão shift pressionado, clique com o botão direito do mouse no arquivo (arquivo.dia) e selecione a opção Copy as path

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

Lembre-se, se você não criou essa string e a copiou e colou de outra fonte, as "marcas podem não fazer o que você acha que deveriam. Sugiro que você reescreva toda a string e teste-a. copie minha string acima e teste isso, basta renomear os caminhos.

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

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

Editar

Eutambémtentariacadaparâmetroumdecadavezparagarantirqueocaminhoestácorreto.Então,dentrodopromptdecomando,digite

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

Então

"D: \ Desktop \ libs \ xlam + aplicativos + 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 eu posso ver / entender melhor a falha, mas oferecer apenas 1 solução, que é uma solução que você não deseja - não permitir espaço em branco.

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

Note, então 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 final de um nome de arquivo e cria a extensão).

    
por 03.09.2013 / 14:30
1

Eu tenho procurado algo semelhante, mas queria usar uma macro no arquivo XLSM aberto para autorun IF passou um parâmetro.

Há uma longa discussão em link

sobre este assunto.

O que fiz foi usar a sugestão na postagem 19 (interessante que o "comando" VB (6) não funciona nos aplicativos do Office, que verifiquei). O que eu 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, dentro da 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 chamando-o do 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, em seguida, feche o Excel. Isso faz com que a janela do CMD seja fechada e a variável de ambiente seja limpa.

    
por 08.09.2015 / 11:11
0

Nós enfrentamos um problema semelhante. Acabamos renomeando o arquivo xlsm. Houve um problema com a codificação no nome do arquivo.

    
por 23.11.2015 / 06:24