質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

526閲覧

バッチファイル の 処理が途中でとまる

KoTT

総合スコア19

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2023/06/05 06:18

編集2023/06/06 03:26

問題

  • [バッチファイル] 処理が途中でとまる

バッチファイルに対象のエクセルをドラックアンドドロップすると、フォルダが生成され、エクセルが自動で立ち上がり処理が走るが、"処理中"という状態が続いて、強制終了になってしまう。

前提

エクセルは開かずWindowsのバッチファイルの入ったフォルダに対象ファイルをドラック&ドロップし、以下の処理をかけたい。

対象ファイル:.xlsx または xls
OS:Windows

### 処理

1.バッチファイルの入ったフォルダと同ディレクトリに新規フォルダ"output"を生成
2.ファイルを開く
3.sheet"入力用"を選択
4.各セルの後ろに全角スペースや半角スペースがあれば削除
5.各セル内に改行があれば削除
6. 非表示にしているsheet名"CSV書き出し用"を再表示
7. sheet"CSV書き出し用"を選択した状態にする
8. 名前をつけて保存。ファイル形式は Unicode テキスト (*.txt)。ファイルの名称は元ファイルと同じ
9. outputフォルダに 8.の.txtファイルを格納
10.終了

その他条件
・保護ビューの注意喚起ポップアップは無視する(編集を有効にするをクリック状態にして作業をすすめる)
・複数ファイルを同時にできること
・複数ファイルを同時に処理した場合、出力ファイルを1つにまとめるか個別にわけるかは、バッチファイルのコードで変更できるようにする
・保存する形式やファイル名はバッチファイルのコードで変更できるようにする
・バッチファイルのそれぞれのコードがどういう作動をしているかコメントアウトで説明をいれること

bat

1@echo off 2setlocal enabledelayedexpansion 3 4REM フォルダ名とファイル名を取得 5set "folder=%~dp1" 6set "filename=%~nx1" 7 8REM 出力フォルダを作成 9if not exist "%folder%output" mkdir "%folder%output" 10 11REM Excelファイルを開く 12start "" /wait excel.exe "%filename%" 13 14REM 変換処理を実行 15for %%f in ("%folder%*.xlsx" "%folder%*.xls") do ( 16 REM ファイルを開く 17 start "" /wait excel.exe "%%f" 18 19 REM シートを選択 20 echo "入力用"シートを選択中... 21 powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%f'); $worksheet = $workbook.Sheets.Item('入力用'); $worksheet.Activate(); $workbook.Save(); $workbook.Close(); $excel.Quit();" 22 23 REM スペースと改行を削除 24 echo スペースと改行を削除中... 25 powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%f'); $worksheet = $workbook.Sheets.Item('入力用'); $range = $worksheet.UsedRange; for ($i = 1; $i -le $range.Rows.Count; $i++) { for ($j = 1; $j -le $range.Columns.Count; $j++) { $cell = $range.Item($i, $j); $cell.Value2 = $cell.Value2.ToString().Replace(' ', '').Replace([char]10, '').Replace([char]13, ''); } }; $workbook.Save(); $workbook.Close(); $excel.Quit();" 26 27 REM CSV書き出し用シートを表示 28 echo "CSV書き出し用"シートを選択中... 29 powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%f'); $worksheet = $workbook.Sheets.Item('CSV書き出し用'); $worksheet.Visible = 1; $worksheet.Activate(); $workbook.Save(); $workbook.Close(); $excel.Quit();" 30 31 REM テキストファイルに保存 32 echo テキストファイルに保存中... 33 powershell -Command "$excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%%f'); $worksheet = $workbook.Sheets.Item('CSV書き出し用'); $worksheet.SaveAs('%%~dpnxf.txt', -4158); $workbook.Close(); $excel.Quit();" 34 35 REM 出力ファイルを移動 36 echo 出力ファイルを移動中... 37 move "%%~dpnxf.txt" "%folder%output" 38) 39 40REM 終了処理 41echo 処理が完了しました。 42pause

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/06/05 10:26 編集

質問ポイントは何でしょうか? タイトルが、「バッチファイル の 処理が途中でとまる」なので、最初、「エラーで終わる」ということかと思ったのですが、エラーメッセージが書かれていないし、「途中」がどこのことかも書かれていないし、 「実現したいこと」に、『 [バッチファイル] 処理が途中でとまる』とかいてあることから、 「止まること」が実現したいことと言うことなのでしょうか?
guest

回答1

0

自己解決

すいません、そもそもバッチファイルとVBSファイルにわけて処理を記載しなければならなかったみたいで、コードを考え直します。

投稿2023/06/06 03:28

KoTT

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問