
https://oshiete.goo.ne.jp/qa/10255566.html でコマンドプロンプトで、指定したファイルが開いているかをDELコマンドとERRORLEVELで判別できることが分かりました。
start Excel.exe %FILE1%
del /q %FILE1% 2>&1 | find /V ""
if %errorlevel% == 1 (
echo 1
goto res
) else if %errorlevel% == 0 (
echo 0
start Excel.exe %FILE2%
)
この判定で実際に行いたいのは、エクセルでFILE1.csv と FILE2.xls を開く際に
FILE1.csv が開いてからFILE2.xlsを開くことです。
FILE1.csv はファイルによって(データ数?ファイル容量?)開く時間が異なるため、上記の判定を繰り返し行う必要があると考えています。
上記の判定を繰り返し行うには、どのようにしたらよいでしょうか?
宜しくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
やりたいことは『コマンドプロンプトで、まずFILE1.csvをExcelで開いて、それが完了したら次にFILE2.xlsを開きたい』ということで良いですか。
これ、どうあがいても保証はできませんよ。
No.1の人も書いているとおり、ExcelはまずFILE1.csvをロックしてから開きます。すなわちFILE1.csvが削除できないというのは、開き終わったからではなく、開き始めたからです。Excelの外から開き終わりを感知する方法はありません。
これは筋が悪いので、本当にしたいことは何か、からもう一度考え直した方が良いです。
ちなみに
> start Excel.exe FILE1.csv FILE2.xls
は(Excel.exeをフルパス指定すれば)一応できますけど、2つのファイルを順に開く保証はないですね。並列動作してそうです。並列動作しても良ければ、これでOKですが・・・
なお、あらかじめ起動したExcelファイルからVBAでFILE1.csvとFILE2.xlsを順に開くというのならWorkbooks.Openを並べればできます。
No.1
- 回答日時:
ご質問の件に関しましては、処理の戻り先として、
:AAA
等のラベル行を作成し、その行へ、
goto AAA
のような感じでジャンプさせてやり、
戻る前か、戻った後に、
ping localhost -n 6 >NUL:
のような感じで、数秒待つ処理を設けてやると良いかと思います。(※上記の「ping」コマンドを利用したウェイト例は「6」と記述されていますが、実際は1秒引いた「5」秒待つ処理です。)
ただ、恐らくですが、質問者さんが実現しようとしている方法ですと、一つ目のファイルを開いている途中でも、ファイルにライトプロテクトが掛かり、削除処理に失敗すると思われますので、その時点で、一つ目のファイルが開き切ったと判断され、一つ目のファイルが開き切る前に、次のファイルが開かれてしまうと思います。
正確に判断しようと思うと、以前のご質問のご回答にあるようなツールをインストールするのが良いかと思いますが、Windows標準の機能のみしか使えない環境で、マイクロソフト製のツールであっても、追加のインストールが出来ないような状況なのでしょうか。
そのような場合は、Windows標準のスクリプトで処理を実現する必要があるかと思いますが、良い方法があるかは私にはちょっと分かりません。
それ以前の簡単な方法として、引数で両ファイルを指定するという方法があります。
「OpenOffice」等で有効な方法で、「Microsoft Office」ではどうか分かりません。一度、そちらでご検証ください。
バッチファイルからですと、
start "" Excel.exe %FILE1% %FILE2%
という感じで実行します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
コマンドプロンプトで、指定したファイルが開いているかを判別する方法
その他(プログラミング・Web制作)
-
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
-
4
バッチファイルでのエラー処理の方法を教えてください
その他(プログラミング・Web制作)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
VBSでExcelのオープン確認
Visual Basic(VBA)
-
9
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
10
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
11
エクスプローラを最大化表示するコマンドかバッチ
Windows Vista・XP
-
12
特定のファイルを他のプロセスが編集中か確認する方法
Visual Basic(VBA)
-
13
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
14
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
15
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
16
AccessVBAで作成したExcelファイルを削除する方法は?
Visual Basic(VBA)
-
17
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
18
EXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法
Visual Basic(VBA)
-
19
ファイルが書き込み中かどうかの判定方法は?
UNIX・Linux
-
20
開いてるファイル(エクセル等)をバッチかVBScript自動的に保存す
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
binファイルを解凍したいの...
-
コマンドプロンプトで作成日時...
-
#include <Windows.h>というヘ...
-
リンクの張り付けかたを教えて...
-
warファイルをEclipseでプロジ...
-
コマンドプロンプトで、指定し...
-
C言語---ファイルに出力したデ...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
Latexで図番号だけを「図1.1」...
-
監視ツールを入れさせられまし...
-
WININET.DLL FtpCommand(TYPE)...
-
CSSファイルの日本語コメントが...
-
exeファイルの作り方
-
ストレージにある全てのファイ...
-
ハイパーリンクされたJPGファイ...
-
exeファイルが作れない(windows10)
-
GetOpenFilename メソッドについて
-
バッチ処理で追記コピーしたい
-
VBAでのicsファイル変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
「ブルーファイル」と「グリー...
-
ファイルが開かれているかどう...
-
バッチ処理で追記コピーしたい
-
VBAのバイナリ出力について
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで、指定し...
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
HTMLからのBATファイル実行
-
VBSが起動しない
-
他のMDBのマクロを実行する方法
-
Batファイルをバイナリ形式にす...
おすすめ情報