web-dev-qa-db-ja.com

パラメータを使用してExcelを開くためのBatファイル-スペース

Excelを実行し、その中の特定のファイルを開いて、このファイルに引数を渡したいと思います。私の電話は

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

そしてこれは私が望むように実行されます。

ただし、Excelファイルパラメーター(MyFile.dia)にスペースが含まれていると、引用符に関係なく、すべてが台無しになります。エラーメッセージは、「File.dia」が見つからないことです。

どうすればこれを解決できますか? MSヘルプは役に立ちません。

編集:

デイブのコメントに反応して、私は試しました:

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

そして、すべて正常に動作します。問題は、Excelに引数を渡すために/eスイッチを含めようとすると始まります。つまり.。

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

これらはエラーを生成しません。問題は、最後のファイルがxlsmファイルに渡したいものであり、Excelで開く別のファイルではないことをExcelが理解しないことです。 .diaは.xlsmによって処理されるパラメーターである必要があることをExcelに伝えるために、私が機能することがわかったのは、「/ e」の周りのスペースを削除することだけでした。したがって、

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

その結果、Excelが「.dia」ファイルを開こうとすると、「。diaファイルが存在しません...」というエラーメッセージが表示されます。

2
Daniel Bencik

障害は、パスが実際にそれが何であるかを参照していないか、ロケールの問題である可能性があるか、または文字の認識方法である必要があります...

私はちょうど以下を作成しました

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

コマンドプロンプトと.batファイルから期待どおりに機能します(つまり、エラーメッセージは表示されません)。

ファイルが何らかの方法で正しく参照されていないか、ロケール設定が原因で混乱している可能性があります。

確実に(除外するために)、エクスプローラーでMyFile.diaを見つけて、名前をMy File . diaに変更します。次に、 shift ボタンを押したまま、ファイル(file.dia)を右クリックして、オプションCopy as pathを選択します。

次に、これをコマンドの最後のパラメーターとして貼り付けます。

この文字列を自分で作成せず、別のソースからコピーして貼り付けた場合、「」マークが思ったとおりに機能しない可能性があることを忘れないでください。文字列全体を書き直してからテストすることをお勧めします。または、文字列をコピーしてください。上記でテストし、パスの名前を変更するだけです。

D:がローカルドライブでない場合は、デスクトップ上のすべてのもの(または、少なくともネットワークやアクセス許可に問題がないローカルの場所)でテストすることをお勧めします。

同様のディレクトリ構造で試してみましたが、問題なく動作します。

enter image description here

編集

また、パスが正しいことを確認するために、各パラメーターを一度に1つずつ試行します。したがって、コマンド内でプロンプトタイプ

「C:\ ProgramFiles(x86)\ Microsoft Office\Office14\Excel.EXE」を押して、 enter

次に

「D:\ Desktop\libs\xlam + apps + dialogViewer\diagramViewer.xlsm」を押して enter

次に

「D:\ Desktop\MyFile.dia」を押して enter

次に

「D:\ Desktop\MyFile .dia」を押して、 enter

編集2

そうです、私は今、障害をよりよく見たり理解したりすることができますが、あなたが望まない解決策である解決策を1つだけ提供します-空白を許可しないでください。

パラメータに空白を送信すると、Excelから次のメッセージが表示されます(パラメータはe/"C:\Users\DRook\Desktop\My File . dia"であることに注意してください)。

enter image description here

問題は、Excelが空白を拡張子と交換しているように見えることです(したがって、空白を参照してください。これがファイル名の終わりであると想定し、拡張子を作成します)。

1
Dave

私は似たようなものを見てきましたが、開いたXLSMファイルのマクロを使用して、パラメーターを渡した場合に自動実行したいと考えていました。

http://www.vbforums.com/showthread.php?366559-Excel-How-to-Pass-Command-Line-Parameter-DKenny-is-KING で長い議論があります

この主題について。

私がしたことは、投稿#19の提案を使用することです(VB(6)の「コマンド」がOfficeアプリケーションで機能しないことを確認しました)。私がしていることは、バッチファイルを使用してExcelを起動することです:-

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

次に、マクロワークブック内に次のものがあります(プロジェクトの[ワークブック]タブをクリックします)

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

StartMyMacroは、自動的に実現したいものです。

さらに、MyStartMyMacroは次のように定義されています

Public Sub StartMyMacro(Optional Auto As Boolean = False)

これを手動で呼び出すと、自動がFalseに設定され、自動オープンから呼び出すと、変数がTrueに設定されます。最後に、Auto = Trueを使用して、ブック(実際にはマクロ中に作成された新しいブック)を保存してから、Excelを終了します。これにより、CMDウィンドウが閉じ、環境変数がクリアされます。

1

同様の問題に直面しています。最終的にxlsmファイルの名前を変更します。これは、ファイル名のエンコードに関する問題でした。

0
Simple guy