ここから本文です

Excel VBA詳しい方、教えてください。コードをそのまま載せます。 PDFファイル名...

zep********さん

2020/2/1812:01:21

Excel VBA詳しい方、教えてください。コードをそのまま載せます。
PDFファイル名を取得→bat作成(ren ファイル名1 ファイル名2)→bat実行→PDFリネーム
のコードです。

実行すると正常終了するのですが、PDFファイル名は変わらないという事象です。手動でbatを実行するとファイル名は書き換わります。

そもそもbat使わずvbaでいける等のツッコミは無しでお願いします。


Sub Rename()


Const RenamePath As String = "C:\Rename\"

Dim buf As String
buf = Dir(RenamePath & "*.pdf")

Dim cnt As Long
cnt = 1

Dim dub As String
dub = """"



Do While buf <> "" '変数“buf”が空白になるまで

cnt = cnt + 1

Cells(cnt, 2) = dub & buf & dub

buf = Dir()

Loop



Dim timeStamp As String
timeStamp = Format(Now, "yyyymmddhhmmss")

Dim batFile As String
batFile = RenamePath & "re_filename_" & timeStamp & ".bat"

Dim i As Long

Dim j As Long



Open batFile For Output As #1

i = 1

Do While Cells(i + 1, 2) <> ""

i = i + 1

For j = 1 To 6

Print #1, Cells(i, j).Value&;

Next j

Print #1, Cells(i, 7).Value

Loop

Close #1


Dim ShellObject As Object

Set ShellObject = CreateObject("wscript.shell")

ShellObject.Run batFile, 1, True

MsgBox "batファイルを実行しました"



End Sub

閲覧数:
41
回答数:
3
お礼:
500枚

違反報告

回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

osy********さん

2020/2/2501:55:04

できたバッチを実行すると期待通り動く、ということはほぼ間違いなくカレントディレクトリの問題でしょう。

・マクロからバッチファイルを実行する
⇒バッチファイルのカレントディレクトリはマクロを実行したエクセルのもの(デフォルトはエクセルファイルのある場所)になります。

・バッチファイルを直接実行する
⇒バッチファイルのカレントディレクトリは、バッチファイルのある場所になります。

「どうしてもバッチファイルの中身は変えたくない」というのであれば、マクロ側のカレントディレクトリをRenamePathにすれば動くと思います。

プロフィール画像

カテゴリマスター

2020/2/1813:33:17

バッチファイルとVBAの動作是非の境界は…カレントディレクトリだろうか?
バッチファイルにはフォルダ込みで指定していますか?

sof********さん

2020/2/1812:14:05

batファイルにpause書いて実行できてるか確認してみたら

  • 質問者

    zep********さん

    2020/2/1812:29:40

    pause入れて実行したところ、pause画面出現→適当にキー押す→MsgBox「batファイルを実行しました」→リネームされず という結果でした・・・

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる