No.1
- 回答日時:
小生がいつもやっている手ですが、
DOSpromptにて、ディレクトリをとります。
それを、excelで開いて、エクセル画面上で修正、
DOS batch fileを作ります。
具体的に
DOS promptにて、該当フォルダ”あるフォルダ”をカレントとします。
手順は、DOS promptの画面で、まず、
>C:リターン
>cdスペース
と打って、その一方で、エクスプローラを開いて、”あるフォルダ”をドラッグしてDOS prompt画面に持ってきます。
>cd C:\xxxxxxxxxxxxxxxxxxxxxxxx\あるフォルダ リターン
これで、”あるフォルダ”をカレントにできました。
次に、
>dir /s/b/o >mylist.txt
と打ちます。
エクセルからmylist.txtを開く
エクセル画面にて
ren oldname newname
oldname ----- 絶対パスです。
newnameも絶対パスとします。
と言った感じで、編集します。newnameは、「C,4とH,4を合体させたファイル名」
最後に、saveasで、DOS(tab)で保存します。
エクスプローラにて、ファイル名を mylist.batに変更します。
mylist.batをダブルクリックすれば、バッチファイルが動作します。
尚、実行前にバックアップを取っておいてください。
No.2
- 回答日時:
エクセルマクロで、実施する理由は何でしょうか?
Vector
Download: Windows > ユーティリティ > ファイル管理 > ファイル名変更:
http://www.vector.co.jp/vpack/filearea/win/util/ …
みたいに、フリーソフトで、たくさんありますが・・・
データベース化したいとか?
別のデータで名前を参照して書き換えたいとか?
No.3
- 回答日時:
モジュール的には、そんなに難しいものでは、ありません
ファイル名の一覧を取得するモジュールは、作成してませんが・・・
Sub usFileReName()
On Error Resume Next
Dim I As Long
Dim usBePath, usBeName As String
Dim usAfPath, usAfName As String
I = 2
With ActiveSheet
usBePath = .Cells(I, 1)
usBeName = .Cells(I, 2)
usAfPath = .Cells(I, 3)
usAfName = .Cells(I, 4)
While usBePath & usBeName <> ""
If Dir(usBePath & "\" & usBeName) = "" Then
.Cells(I, 5) = "File Not Found"
Else
If Dir(usAfPath & "\" & usAfName) = "" _
And usAfPath & usAfName <> "" Then
Name usBePath & "\" & usBeName As usAfPath & "\" & usAfName
.Cells(I, 5) = "File ReName Complete"
Else
.Cells(I, 5) = "File Not ReName"
End If
End If
I = I + 1
usBePath = .Cells(I, 1)
usBeName = .Cells(I, 2)
usAfPath = .Cells(I, 3)
usAfName = .Cells(I, 4)
Wend
End With
End Sub
で、ある程度は、可能だと思いますが置き換え後の「ファイル名が不正の場合」の検出をどうするか?考えてないので、その当りは注意してください
A列から変更前のパス、B列から変更前のファイル名を読み取り
C列から変更後のパス、D列から変更後のファイル名を読み取り
E列に変換結果を出力しています
> .Cells(I,?)
の部分を差し替えてやれば、希望した列から読み取ります
> I=2
の部分で、1行目はタイトルが付いている前提で読み飛ばしてあります
で、モジュールってある程度わかります?
ありがとうございます。
モジュールはほんの少ししか・・・・・
このマクロを実行するには、先にファイルの置いてある場所や保存する名称を記入しておくと言うことになるのでしょうか?
すみません、勉強不足で・・・・
No.4
- 回答日時:
こんにちは。
これはhttp://oshiete1.goo.ne.jp/kotaeru.php3?qid=2846439
の質問の続きですね。
やりたいことはだいたいわかったのですが、まだ不明な点があるので、確認させてください。
・上記URLの質問では、マクロが同じフォルダー内でないと動作しないため、たくさんのフォルダーに散らばっているテキストファイルとエクセルファイルをいちいち手で移動させているので、それをマクロでできないか、ということだったと思うのですが、この質問では「名称変更」のやり方を質問されていますね。同じドライブ内ならファイル名の変更もファイルの移動も同じ事なので、これは「名称変更して、マクロを動かすフォルダに移動」ということでよろしいでしょうか。
・この質問ではエクセルファイルについてしか書かれていませんが、前の質問ではテキストファイルもマクロを動かすフォルダに手で移動させて、と書いていました。これもマクロで自動的に移動させた方がよいのでしょうか。
・その場合、テキストファイルの場合はフォルダはたくさんあるけどファイル名は全部違うとありますが、テキストファイルが保存されているフォルダはどこにあるのでしょうか。質問文では
「あるフォルダ」>「900個のフォルダ」>「A,Bというフォルダ」>エクセルファイル
という階層構造になっていますが、テキストファイルはこの中でどこにあたるのでしょうか。
・整理番号を元に型番と品番と結びつけるマクロを動かす(そのマクロの入っているブックがある)フォルダは、質問文冒頭の「あるフォルダー」なのでしょうか。それとも他にワーク用のフォルダがあるのでしょうか。
・上記マクロを動かした後、移動(名称変更)したエクセルファイル、テキストファイルは元のフォルダ、元のファイル名に戻すのでしょうか?
以上の点を補足願えますか?
この回答への補足
ありがとうございます。あちらもこちらもすみません。
1、マクロは同一フォルダー内でしか動作できません。
2、名称変更の理由としては、散らばっているファイルが同一名称のためです。
もし、名称変更ができれば、それぞれのファイル名(テキスト,エクセル)で関連性を持たせることで それを元に処理する方が楽ではないかと思ったからです。
3、テキストもマクロを動かすフォルダに動かしています。
4、テキストも あるフォルダ>850個ほどのフォルダ>フォルダ>ファイル
5、テキストファイルと言っていますが、拡張子は付いていません。
6、動作させるマクロファイルは特に指定された場所にはありません。
7、エクセルのファイルも「A,B」とフォルダ名称を書きましたが実際は異なる名称です しかし2つあるのは確かです。
すみません、補足になりましたでしょうか?
余計にわけがわからなくなってしまったかも知れませんね。
現在、テキストは同一名称ではないため 1つのフォルダーに入れてしまおうかと考えていますが・・・・・・
No.5
- 回答日時:
> このマクロを実行するには、先にファイルの置いてある場所や保存する
> 名称を記入しておくと言うことになるのでしょうか?
最初のファイル名が判らないと、どれをどれに変更するか判らないでしょ^^;
と、言う事で先に、ファイル名およびフォルダの変更前、変更後の一覧を作る必要があります
変更前に関しては下位のフォルダも検索して・・・等、考えると面倒なので・・・
フリーソフトで、ファイル名一覧で、CSVで作成可能なもので代用された方が、簡単だと思いますよ
No.6
- 回答日時:
No.4のham_kamoです。
とりあえず、書かれた仕様で、1つのフォルダにファイルを集めるマクロを組んでみました。エクセルファイルの場合はC4セルとH4セルを元に名称を変更し、その他のファイルの場合はそのまま移動します。
質問文で書いている「あるフォルダ」に新しいブックを作成し、Alt+F11でVBAの画面を開き、標準モジュールを追加して以下のマクロをコピーして貼り付けてください。
Sub ファイル名一覧作成()
Dim RootPath As String
Dim i As Integer, j As Integer
Dim R As Range
Dim FSO As Object
Dim D As Object, F As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
RootPath = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Worksheets("Sheet1").Unprotect
Worksheets("Sheet1").Activate
Cells.ClearContents
i = 1: j = 1
For Each D In FSO.GetFolder(RootPath).SubFolders
Application.StatusBar = j & "フォルダ処理中"
Cells(i, "A").Value = D.Name & "\"
i = i + 1: j = j + 1
Next
i = 1
For Each R In Range("A1", Cells(Rows.Count, "A").End(xlUp))
For Each D In FSO.GetFolder(RootPath & R.Value).SubFolders
Application.StatusBar = j & "フォルダ処理中"
Cells(i, "B").Value = R.Value & D.Name & "\"
i = i + 1: j = j + 1
Next
Next
i = 1: j = 1
For Each R In Range("B1", Cells(Rows.Count, "B").End(xlUp))
For Each F In FSO.GetFolder(RootPath & R.Value).Files
Application.StatusBar = j & "ファイル処理中"
Cells(i, "C").Value = R.Value & F.Name
If StrConv(F.Name, vbLowerCase) Like "*.xls" Then
With ActiveSheet
Workbooks.Open (RootPath & Cells(i, "C").Value)
.Cells(i, "D") = Worksheets(1).Range("C4").Value & _
Worksheets(1).Range("H4").Value & ".xls"
Workbooks(Workbooks.Count).Close
End With
Else
Cells(i, "D").Value = F.Name
End If
i = i + 1: j = j + 1
Next
Next
Set FSO = Nothing
Worksheets("Sheet1").Protect
Application.StatusBar = ""
Application.ScreenUpdating = False
MsgBox ("完了しました")
End Sub
Sub ファイル名の変更と移動()
Dim RootPath As String, WorkPath As String
Dim R As Range
RootPath = ThisWorkbook.Path & "\"
WorkPath = "C:\temp\zzz\" 'ファイルを集めるフォルダを指定
With Worksheets("Sheet1")
If .Range("A1") = "" Then Exit Sub
For Each R In .Range("C1", Cells(Rows.Count, "C").End(xlUp))
Name RootPath & R.Value As WorkPath & R.Offset(0, 1).Value
Next
End With
End Sub
Sub ファイル名を元に戻して元のフォルダに移動()
Dim RootPath As String, WorkPath As String
Dim R As Range
RootPath = ThisWorkbook.Path & "\"
WorkPath = "C:\temp\zzz\" 'ファイルを集めるフォルダを指定
With Worksheets("Sheet1")
If .Range("A1") = "" Then Exit Sub
For Each R In .Range("C1", Cells(Rows.Count, "C").End(xlUp))
Name WorkPath & R.Offset(0, 1).Value As RootPath & R.Value
Next
End With
End Sub
上記2箇所に「'ファイルを集めるフォルダを指定」と注釈のついたところがあります。そこのフォルダ名は実際のフォルダ名に書き換えてください。
上記マクロは
「ファイル名一覧作成」
「ファイル名の変更と移動」
「ファイル名を元に戻して元のフォルダに移動」
の3つのプロシージャがあります。
「ファイル名一覧作成」を実行すると、サブフォルダのサブフォルダを探して、ファイル一覧をSheet1に作ります。A列にサブフォルダ一覧、B列にサブフォルダのサブフォルダ一覧、C列にB列の中で見つかったファイルの名称、D列に新しいファイル名を出力します。
それを実行した後、
「ファイル名の変更と移動」を実行すると、作成したファイル名一覧に基づき、ファイルをリネームしながら一箇所に移動します。
「整理番号を元に型番と品番と結びつけるマクロ」の処理が終わった後、「ファイル名を元に戻して元のフォルダに移動」を実行すると、集めたファイルを元のフォルダに戻し、ファイル名も元に戻します。ただし、Sheet1のファイル名一覧はこれを実行するまでに書き換えたりしないでください。(一応書き換えられないようにシート保護をかけています)
最初は900個もある本物のファイルで試すより、テスト用に一部のフォルダをコピーして動作確認をした方がよいでしょう。うまく動かない、あるいは何か不明な点があれば補足をお願いします。
この回答への補足
ありがとうございます返答が非常に遅くなり申し訳ありません。
テスト結果ですが
1、「ファイル名一覧作成」では 現状のマクロを置く位置をファイルが入っているフォルダの1つ上に置かないとだめなんですね。
現在頂いたファイルと同じ場所に4つのフォルダを置いてテストしています
そのうち、1つはフォルダ直下にエクセルファイルがあります それは、リストには出ていません。
それ以外のものは、フォルダ下にフォルダがありその中にエクセルファイルがあるので表示されています。
あとシート1のセル幅がノーマルのためパスが分かりずらい感じです
2、「ファイル名の変更と移動」では実行時エラー53 ファイルが見つからないとなり
Name RootPath & R.Value As WorkPath & R.Offset(0, 1).Value
が反転されています。
WorkPath = "C:\Documents and Settings\*****\My Documents\test\z"
の位置にマクロファイルを置いていますが だめです
すみません
'形状コードを探す
n = p_org
Do Until r.Cells(n, 1) = ""
r.Cells(n, 6) = MACHINE
m = k + 1 '"%SETUP"の次の行
z = 0
Do Until s.Cells(m, 1) = "" Or z = 1
St = s.Cells(m, 1)
x = InStr(St, "Z")
y = InStr(St, "P")
St2 = Mid(St, Start:=x + 1, Length:=y - x - 1)
If Trim(St2) = Trim(r.Cells(n, 1)) Then
x = InStr(St, "(")
y = InStr(St, ")")
z = 1
St3 = Mid(St, Start:=x + 1, Length:=y - x - 1)
r.Cells(n, 3) = St3
End If
m = m + 1
Loop
If z = 0 Then
MsgBox "Z=" & r.Cells(n, 1) & "がNCファイルに見つかりません"
End If
n = n + 1
Loop
Else
MsgBox "NCファイルとZ表があっていません"
End If
End If
Else
MsgBox "NCファイルが見つかりません"
End If
End With
Workbooks("work.xls").Close SaveChanges:=False
あと少しあるのですが入れるものが無いのでこれぐらいです
No.7
- 回答日時:
こんにちは、ham_kamoです。
やはり一発ではうまくいかないものですね。1つ1つかたづけていきましょう。●補足要求1
> 1、「ファイル名一覧作成」では 現状のマクロを置く位置を
> ファイルが入っているフォルダの1つ上に置かないとだめなんですね。
とのことですが、私は「現状のマクロを置く位置」というのが、この質問文に出てくる「あるフォルダ」だと思っていたのですが、そうではなかったのでしょうか。
マクロでは「同じフォルダ内のファイルしか結びつけることができない」から「あるフォルダ」より下の階層にあるファイルをとりあえず全部「あるフォルダ」に持ってくる、そこでマクロも動かす、と思っていました。
マクロはどこのフォルダで動くのでしょうか。「あるフォルダ」の下に900個くらいのフォルダがある、とありますが、その900個のフォルダそれぞれでマクロを動かすのでしょうか?そうすると、ファイルを移動させる先も「あるフォルダ」でなく、その1段下のフォルダになるのでしょうか。
つまり、先の回答のマクロでは、
あるフォルダ\folder1\A\a.xls
を
WorkPathで指定したパス\aa1.xls (aa1.xlsは変更された名前)
に移動
と処理するようになってますが、そうでなくて、
あるフォルダ\folder1\A\a.xls
を
あるフォルダ\folder1\aa1.xls
に移動
にする、ということでしょうか。
●補足要求2
> 現在頂いたファイルと同じ場所に4つのフォルダを置いてテストしています
> そのうち、1つはフォルダ直下にエクセルファイルがあります
> それは、リストには出ていません。
えっと、900個くらいフォルダがあって、その下にA,Bフォルダがあって、さらにその下にエクセルファイルがあると思っていたのですが、それだけでなくA,Bフォルダと同じ階層にもエクセルファイルがある、ということでしょうか。
上と同じ書き方をすると、
あるフォルダ\folder1\A\a.xls
あるフォルダ\folder1\B\a.xls
以外に、
あるフォルダ\folder1\a.xls
というパターンもあるということですか?
> あとシート1のセル幅がノーマルのためパスが分かりずらい感じです
すみません、シート保護をしたらセルの幅も変えられないのでした。これは自動的に幅を調整するように処理を追加します。
> 2、「ファイル名の変更と移動」では実行時エラー53 ファイルが見つからないとなり
あ、これは、
WorkPath = "C:\Documents and Settings\*****\My Documents\test\z"
を
WorkPath = "C:\Documents and Settings\*****\My Documents\test\z\"
と最後に"\"を入れてください。
とりあえず、上記で挙げた、確認させていただきたい点の補足をいただいてからマクロを修正するので、とりあえず補足をお願いいたします。
この回答への補足
こんばんわ 度々申し訳ありません
1 testというフォルダを作りその下にzと言うフォルダを作成しました。
そのzの中に対象となる5つのフォルダを入れた状態の場合
現在作成中のマクロを勝手ながらkhamとファイル名にさしていただいてますが
c:\temp\\z\ここに5つのフォルダABCDEとします
tempの階層にkhamを置いて走らせた場合は\Aの直下にエクセルがある場合は一覧表示に出てきますので zの位置にkhamを置くと\B\a.xlsと表示されますが\Aは表示されません たぶんイレギュラーだとは思うのですがたまたまテストに使用したフォルダーがそのようになっていました。
こんなのにも、対応可能なのでしょうか?
2、「ファイル名の変更と移動」ではパスをC:\temp\z\にしましたが
Name RootPath & R.Value As WorkPath & R.Offset(0, 1).Value
の所が黄色の反転で同一エラーで停止します
補足になりましたでしょうか?
'エクセルファイルを開く
Workbooks.Open Filename:=ThisWorkbook.Path & "\work.xls"
Set s = Range("A1:A3000")
m = 1
k = 0
Do Until s.Cells(m, 1) = "" Or k <> 0
If Trim(s.Cells(m, 1)) = "MACHINE=MPAV" Then 'NCファイルからマシン名を探す
MACHINE = "MPAV"
k = 1
ElseIf Trim(s.Cells(m, 1)) = "MACHINE=MV2F" Then
MACHINE = "MV2F"
k = 1
ElseIf Trim(s.Cells(m, 1)) = "MACHINE=MV2C" Then
MACHINE = "MV2C"
k = 1
End If
m = m + 1
Loop
m = 1
k = 0
Do Until s.Cells(m, 1) = "" Or k <> 0
If Trim(s.Cells(m, 1)) = "%SETUP" Then 'NCファイルから"%SETUP"を探す
k = m
End If
m = m + 1
Loop
No.8
- 回答日時:
なるほど、だいたいわかりました。
とりあえず、c:\temp\z\ にこのマクロを置いても大丈夫(c:\temp\z\A の直下にエクセルがあってもOK)なように修正しました。
あと、各列の幅も文字列にあわせて調整するようにしました。
「ファイル名一覧作成」のマクロだけ、以下のマクロに差し替えていただけますか?
Sub ファイル名一覧作成()
Dim RootPath As String
Dim i As Integer, j As Integer
Dim R As Range
Dim FSO As Object
Dim D As Object, F As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
RootPath = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Worksheets("Sheet1").Unprotect
Worksheets("Sheet1").Activate
Cells.ClearContents
i = 1: j = 1
For Each D In FSO.GetFolder(RootPath).SubFolders
Application.StatusBar = j & "フォルダ処理中"
Cells(i, "A").Value = D.Name & "\"
i = i + 1: j = j + 1
Next
i = 1
For Each R In Range("A1", Cells(Rows.Count, "A").End(xlUp))
For Each D In FSO.GetFolder(RootPath & R.Value).SubFolders
Application.StatusBar = j & "フォルダ処理中"
Cells(i, "B").Value = R.Value & D.Name & "\"
i = i + 1: j = j + 1
Next
Next
i = 1: j = 1
For Each R In Union(Range("A1", Cells(Rows.Count, "A").End(xlUp)), _
Range("B1", Cells(Rows.Count, "B").End(xlUp)))
For Each F In FSO.GetFolder(RootPath & R.Value).Files
Application.StatusBar = j & "ファイル処理中"
Cells(i, "C").Value = R.Value & F.Name
If StrConv(F.Name, vbLowerCase) Like "*.xls" Then
With ActiveSheet
Workbooks.Open (RootPath & Cells(i, "C").Value)
.Cells(i, "D") = Worksheets(1).Range("C4").Value & _
Worksheets(1).Range("H4").Value & ".xls"
Workbooks(Workbooks.Count).Close
End With
Else
Cells(i, "D").Value = F.Name
End If
i = i + 1: j = j + 1
Next
Next
Set FSO = Nothing
Columns("A:D").EntireColumn.AutoFit
Worksheets("Sheet1").Protect
Application.StatusBar = ""
Application.ScreenUpdating = False
MsgBox ("完了しました")
End Sub
長くなるので、いったんこの回答はここまでにして、「ファイル名の変更と移動」でエラーが出る件は次に回答いたします。とりあえず「ファイル名一覧作成」で一覧が正常に出るか確認していただけますでしょうか。
この回答への補足
'エクセルファイルを開く
Workbooks.Open Filename:=ThisWorkbook.Path & "\work.xls"
Set s = Range("A1:A3000")
'Znoの列を探す
q = 1
t = 0
Do Until s.Cells(7, q) = "" And s.Cells(7, q + 1) = "" And s.Cells(7, q + 2) = "" And s.Cells(7, q + 3) = ""
If Trim(s.Cells(7, q)) = "ZNo" Then
Zno(t) = q
t = t + 1
End If
q = q + 1
Loop
'必要なデータを転記する
n = 8
Do Until m = t - 1
n = 8
Do Until n = 27
If Trim(s.Cells(n, Zno(m) + 2)) <> "" Then
r.Cells(p, 1) = s.Cells(n, Zno(m)) 'Zno
r.Cells(p, 2) = s.Cells(n, Zno(m) + 2) '品番
r.Cells(p, 5) = s.Cells(4, 3) '機種
r.Cells(p, 4) = s.Cells(4, 8) 'D or S
p = p + 1
End If
n = n + 1
Loop
m = m + 1
Loop
End If
'エクセルファイルを閉じる
Application.CutCopyMode = False
Workbooks("work.xls").Close SaveChanges:=False
End If
End With
'探すファイル名を決定する キーは数字
FILE = r.Cells(p - 1, 5)
xx = 20
yy = 0
For i = 0 To 9
If InStr(FILE, i) <> 0 Then
x = InStr(FILE, i)
If xx > x Then
xx = x
End If
End If
If InStrRev(FILE, i) <> 0 Then
y = InStrRev(FILE, i)
If yy < y Then
yy = y
End If
End If
Next i
FILE2 = Mid(FILE, Start:=xx, Length:=yy - xx + 1)
'NCデータを探す
'NCファイルを探す
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path
.FileType = msoFileTypeAllFiles
If r.Cells(p - 1, 4) = "S/R" Then
.Filename = "D*SR*"
ElseIf r.Cells(p - 1, 4) = "D/R" Then
.Filename = "D*DR*"
End If
If .Execute > 0 Then
If .FoundFiles.Count > 1 Then
MsgBox "NCが複数あります"
Else
If InStr(.FoundFiles(1), FILE2) <> 0 Then 'ファイルとZ表が正しいかどうかチェック
Workbooks.OpenText Filename:=.FoundFiles(1), comma:=False
'もとのファイルを閉じて、エクセルファイルに写し変える
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\work.xls"
ActiveWorkbook.Close Filename:=.FoundFiles(1)
ありがとうございます!!
無事動作いたしました。 いったん この質問を閉めた方が良いでしょうか?新規で質問あげた方がよろしければそのようにいたしますが?。
No.9
- 回答日時:
続いて「ファイル名の変更と移動」のエラーの件です。
おそらくフォルダ名が違っているのかと思うのですが、「整理番号を元に型番と品番と結びつけるマクロ」が動くフォルダ(ファイルを集めるフォルダ)と、このマクロが動くフォルダが同じであるのであれば、あえてマクロ内にフォルダー名を指定する必要がないので、
「ファイル名の変更と移動」
「ファイル名を元に戻して元のフォルダに移動」
のマクロをそのように書き換えてみました。ついでにエラーチェックもしています。これで試していただけますか?
(自分で作っておきながら、長ったらしいマクロ名にしてしまい、後悔しています。マクロ名は動作に支障ないので、Sub の後の名前はご自分で分かりやすいように適当に変えていただいでもかまいません)
Sub ファイル名の変更と移動()
Dim RootPath As String, FName As String
Dim R As Range
RootPath = ThisWorkbook.Path & "\"
With Worksheets("Sheet1")
If .Range("A1") = "" Then Exit Sub
For Each R In .Range("C1", Cells(Rows.Count, "C").End(xlUp))
FName = RootPath & R.Value
If Dir(FName) = "" Then
If MsgBox(FName & vbCrLf & "がありません" & vbCrLf & vbCrLf & _
"OK→続行/キャンセル→中断", vbOKCancel, "名前変更エラー") = vbCancel Then
Exit Sub
End If
Else
Name FName As RootPath & R.Offset(0, 1).Value
End If
Next
End With
End Sub
Sub ファイル名を元に戻して元のフォルダに移動()
Dim RootPath As String, FName As String
Dim R As Range
RootPath = ThisWorkbook.Path & "\"
With Worksheets("Sheet1")
If .Range("A1") = "" Then Exit Sub
For Each R In .Range("C1", Cells(Rows.Count, "C").End(xlUp))
FName = RootPath & R.Offset(0, 1).Value
If Dir(FName) = "" Then
If MsgBox(FName & vbCrLf & "がありません" & vbCrLf & vbCrLf & _
"OK→続行/キャンセル→中断", vbOKCancel, "名前変更エラー") = vbCancel Then
Exit Sub
End If
Else
Name FName As RootPath & R.Value
End If
Next
End With
End Sub
ここと、下の補足に使うマクロを写してみます
Sub link_shape_cell()
Dim Zno(20) As Integer
'ThisWorkbook.Worksheets("Sheet1").Range("A1:Z3000").Clear
k = 0
j = 0
'このファイルにデータをコピー
ThisWorkbook.Worksheets("Sheet1").Activate
Set r = Range("A1:A3000")
'現行ファイルの末尾を探す
p = 1
Do Until r.Cells(p, 1) = ""
p = p + 1
Loop
p_org = p
'Z表を探す
'csvファイルを探す
With Application.FileSearch
.LookIn = ThisWorkbook.Path
.Filename = "Q*.xls"
If .Execute > 0 Then
If .FoundFiles.Count > 1 Then
MsgBox "Z表が複数あります"
Else
Workbooks.Open Filename:=.FoundFiles(1), Format:=2
'もとのファイルを閉じて、エクセルファイルに写し変える
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\work.xls"
ActiveWorkbook.Close Filename:=.FoundFiles(1)
No.10
- 回答日時:
「ファイル名一覧作成」はうまくいったようですね。
とりあえずよかったです。> いったん この質問を閉めた方が良いでしょうか?
いえ、新規の質問にすると私も今までの流れがわかりにくくなるので、このまま行きましょう。(回答で作成したマクロに、この質問の場合だと Q2846325.xls という名前をつけて保存しているのですが、質問番号が変わるとそのファイルを探すのに手間がかかってしまうので)
それで、このサイトでは質問者が回答者に何か伝えたいとき、1つの回答につきお礼欄と補足欄1つずつしか使えず、これを使い切ってしまうと回答者に伝える手段がなくなってしまいます。そのため、「お礼欄」「補足欄」を多めに確保するために、ちょっと細切れに回答します。この回答はとりあえずここまでとして、次はエラーが出る件について回答します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- 画像編集・動画編集・音楽編集 mp3の音楽ファイルの「アルバム」名を一括入力する方法 6 2023/05/08 14:58
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) フォルダ階層が深いファイルの拡張子の一括変換 2 2022/12/23 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Returnに対するGoSubがありません
-
【COBOL】read文でエラー
-
gccを行ってもexeファイルが生...
-
batファイルでレジストリキーの...
-
FORTRANの実行エラーについて
-
「アクティブ ユーザーが多すぎ...
-
access テキストボックスの値取得
-
PowerShellを使って関連付けら...
-
freadでデータがない場合の読込...
-
ExcelVBAで既に開いてるwordを...
-
VB6 Dir関数で52エラー発生
-
OUTLOOK VBA 指定フォルダ内の...
-
VB実行時エラー75:「パス名が...
-
ADOを使用してExcelファイルを...
-
「パス名が無効です」の発生原因
-
エクセルVBAでパワーポイントを...
-
ADOのMoveNextでアプリケーショ...
-
Visual Studio 2005 C++で以下...
-
ASPからACCESSのOPENどうしても...
-
EXCEL VBAで複数人でのADO接続...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
FTPの送信結果を検知したい
-
NAS上のファイルの使用中が解除...
-
VBA ExecuteExcel4Macro 型が一...
-
access テキストボックスの値取得
-
EXCELのVBAでWORDが開いてある...
-
すでにファイルが開かれている...
-
EXCELVBAでONEDRIVE上への保管...
-
Excelファイルのマクロによる排...
-
OUTLOOK VBA 指定フォルダ内の...
-
RAR圧縮ファイル(分割)の順番が...
-
エクセルマクロでエラーの原因...
おすすめ情報