[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『パス名が無効ですと表示される』(真っ黒)
お世話になります。
ファイル名を一括でリネームしたいと思い、ネット見つけたサンプルコードを試してみたのですが、パス名が無効ですと表示されます。
マクロを保存している「変換」ファイルをフォルダに入れ、同じフォルダ内に春、夏、秋、冬のファイルを入れています。
シートのA列(1行目は見出し)の変換前のファイル名は、以下のコード(test1)で表示できました。
A B 1 変換前 変換後 2 冬.xlsx ふゆ.xlsx 3 変換.xlsm 変換.xlsm 4 夏.xlsx なつ.xlsx 5 春.xlsx はる.xlsx 6 秋.xlsx あき.xlsx
Option Explicit Sub test1() Dim str1 As String, str2 As String Dim cnt As Long
str1 = ThisWorkbook.Path & "\" str2 = Dir(str1 & "*.*")
cnt = 2
Do Until str2 = "" Range("A" & cnt).Value = str2 cnt = cnt + 1 str2 = Dir() Loop End Sub
ファイル名をB列の名前にしたいのですが、test2を実行すると、パス名が無効ですとNameステートメントの部分で止まってしまいます。
Sub test2() Dim i As Long Dim Last As Long Dim str As String
Last = Cells(Rows.Count, 1).End(xlUp).Row str = ThisWorkbook.Path & "\"
For i = 2 To Last Name str & Cells(i, 1).Value As str & Cells(i, 2).Value Next
End Sub
test1で取得したファイル名とtest2のパスが違うのかと思いましたが、ローカルウィンドウで見比べても同じに見えます。
また、変換ファイルを名前を付けて保存し、別の名前にして実行すると、一度だけ変換がうまくいったりします。
自分で組んだコードではないのでうまくいかないのは当たり前ですが、アドバイスいただければ幸いです。
もう1点、test1でファイル名を表示する際、変換ファイルはシートA列に表示しない方法はありますか?
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
(マナ) 2019/12/23(月) 19:41
さきほどあったコメントが消えてますね・・・ >自分で組んだコードではないのでうまくいかないのは当たり前ですが、 自分のほうがうまく作れる、という意味ではないです。不快にさせて申し訳ありません。
改めて調べたところ、変換ファイル名が変換対象にはいっているせいでうまくいかないことがわかりました。 つまり開いているファイルの名前は変更できない、ということなんでしょうか。 test1で出したファイル名から、変換シート名を消したところ、希望通り動きました。 変換ファイル名を除いてシートに出す方法は自分で考えてみます。 ありがとうございました。
衝突。マナさん、その通りでした。当たり前のことでしたね。ありがとうございます。 (真っ黒) 2019/12/23(月) 19:47
Sub test1()
Dim str1 As String, str2 As String Dim cnt As Long
str1 = ThisWorkbook.Path & "\" str2 = Dir(str1 & "*.*")
cnt = 2
Do Until str2 = "" If str2 = "変換.xlsm" Then Exit Do Else Range("A" & cnt).Value = str2 cnt = cnt + 1 str2 = Dir() End If Loop End Sub (真っ黒) 2019/12/23(月) 19:52
これはだめでしょう。
(マナ) 2019/12/23(月) 20:00
Sub test1()
Dim str1 As String, str2 As String Dim cnt As Long
str1 = ThisWorkbook.Path & "\" str2 = Dir(str1 & "*.*")
cnt = 2
Do Until str2 = "" If str2 = "変換.xlsm" Then str2 = Dir() Else Range("A" & cnt).Value = str2 cnt = cnt + 1 str2 = Dir() End If Loop End Sub (真っ黒) 2019/12/23(月) 20:49
If str2 <> ThisWorkbook.Name Then Range("A" & cnt).Value = str2 cnt = cnt + 1 End If str2 = Dir()
あるいは、拡張子を指定するだけでもよいかもしれません。
str2 = Dir(str1 & "*.*") ↓ str2 = Dir(str1 & "*.xlsx")
(マナ) 2019/12/23(月) 21:22
>If str2 <> ThisWorkbook.Name Then マクロを実行してるブックを指定できるのですね。用途に合ってます。 エクセルファイル以外にも使うので、拡張子は指定しないつもりです。 アドバイスありがとうございます。 (真っ黒) 2019/12/23(月) 21:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.