[[20211024202540]] 『VBA ファイルがみつかりません エラー ファイル名変更でき』(しゅう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA ファイルがみつかりません エラー ファイル名変更できない』(しゅう)

お世話になっております。

特定のフォルダのファイル名取得後
規則性を用いてファイル名を変更するマクロを作成しております。

現在書いているコード
エラー部分抜粋

※FLD.Range("B8")
 Sheet FLDのB8にフォルダのパスをいれいます。
 パスのコピーでコピーペーストしております。

PDF保存ファイルの名前変更
'F列 保存マクロ実行前PDFファイル名→PDF保存名へ変更

    Dim folder_path As String
    Dim i As Long

    'エラーの場合は次へ すでにファイル名が変更されてたらエラーになるため
   'On Error Resume Next

    folder_path = FLD.Range("B8") & "\"

    For i = KANRITITLE + 1 To LR1 ’作業行の指定

      If Cells(i, FILENAME).Value <> "" Then ' H列の保存マクロ実行前PDFファイルが空白じゃなかったら

        Name folder_path & Cells(i, FILENAME) As folder_path & Cells(i, HOZONNAME)  'PDFファイル名の変更

        Else

      End If

    Next i

なのですが
Name folder_path & Cells(i, FILENAME) As folder_path & Cells(i, HOZONNAME) のところで

実行時エラー53
ファイルがみつかりません。

となります。

よくわからないのですがうまくいくファイルもあるのです。。。

ファイル名に空白が含まれているのがダメなのか?
とも思いましたが違うような。。

変更前のファイル名もVBAで取得したファイル名を
コピーペーストしておりますので
半角・全角の不一致ではないと思われます。

なぜでしょうか?

お力添えいただきたく宜しくお願い致します。

しゅう

< 使用 Excel:Excel2019、使用 OS:Windows10 >


抜粋とのことですが、差し支えなければ全体を見せていただいたほうが良いと思います。
とりあえず提示されているものをざっと見ですが、いくつか確認。

■1
以下には何が格納されているんですか?

 「FILENAME」(String型?)・・・・・
 「HOZONNAME」(String型?) ・・・・
 「FLD」(Worksheet型?)・・・・・・

特に、↓なので「FILENAME」「HOZONNAME」に何が格納されているのか気になります。

 Cells(i, FILENAME)
 Cells(i, HOZONNAME) 

■2
マクロ云々はおいておいて↓が示すファイルは本当に存在するのですか?

 FLD.Range("B8").Value & "\" & ActiveSheet.Cells(i, FILENAME).Value

(もこな2) 2021/10/24(日) 22:37


もこな2様

お世話になります。

ファイル名変更の全文です。

 「FILENAME」as long 列数を指定
 「FILENAME」as long 列数を指定
 FLD As Worksheet

下記全文です。

****マクロ変数設定*****

    Dim WB  As Workbook
    Set WB = ThisWorkbook

    Dim r As Long
    Dim x As Long

'シート「管理シート」をKANRIとする

    Dim KANRI As Worksheet
    Set KANRI = WB.Sheets("管理シート")

'シート「フォルダURL」をFLDする

    Dim FLD As Worksheet
    Set FLD = WB.Sheets("フォルダURL")

'管理シートタイトル行=KANRITITLE

    Dim KANRITITLE As Long
    KANRITITLE = KANRI.Range("A:Z").Find("書類入手日", LookAt:=xlPart).Row

 'マクロ実行前 保存名  列 = FILENAME
    Dim FILENAME As Long
    FILENAME = KANRI.Rows(KANRITITLE).Find("マクロ実行前", LookAt:=xlPart).Column

 'PDF保存名=HOZONNAME
     Dim HOZONNAME As Long
    HOZONNAME = KANRI.Rows(KANRITITLE).Find("PDF保存名", LookAt:=xlPart).Column

 'PDF保存場所リンク
   Dim LINK As Long
    LINK = KANRI.Rows(KANRITITLE).Find("PDF保存場所", LookAt:=xlPart).Column

  '書類名列=SHORUI
    Dim SHORUI As Long
    SHORUI = KANRI.Rows(KANRITITLE).Find("書類名", LookAt:=xlPart).Column

'A列最終行をLR1とする

    Dim LR1 As Long
    LR1 = KANRI.Range("A" & Rows.Count).End(xlUp).Row

'最終列の取得

    Dim LC1 As Long
    LC1 = Cells(KANRITITLE, Columns.Count).End(xlToLeft).Column

'保存場所に変更はありませんか?アラート

Dim rc As VbMsgBoxResult

    rc = MsgBox("フォルダの保存場所に変更はありませんか?", vbYesNo + vbQuestion)

      If rc = vbYes Then

          MsgBox "処理を続けます(*´з`)", vbInformation
      Else
        MsgBox "処理を中止します。" & vbLf & "SHEET フォルダURLを更新してからもう一度('◇')ゞ", vbCritical

       Exit Sub

      End If

   MsgBox "PDF保存対象は" & vbLf & "保存マクロ実行前PDFファイル名" & vbLf & "H列に" & vbLf & "記載があるものです('◇')ゞ", vbInformation

'PDF保存ファイルの名前変更
'F列 保存マクロ実行前PDFファイル名→PDF保存名へ変更

    Dim folder_path As String
    Dim j As Integer
    Dim i As Long

    'エラーの場合は次へ すでにファイル名が変更されてたらエラーになるため
   'On Error Resume Next

    folder_path = FLD.Range("B8") & "\"

    For i = KANRITITLE + 1 To LR1

      If Cells(i, FILENAME).Value <> "" Then ' H列の保存マクロ実行前PDFファイルが空白じゃなかったら

        Name folder_path & Cells(i, FILENAME) As folder_path & Cells(i, HOZONNAME)  'PDFファイル名の変更

        Else

      End If

    Next i

またファイル名は本当に存在するのかですが
上記のファイル名変更の前に別のマクロで
下記を動かしております。

下記マクロを動かして得られた結果をコピーペーストして
FILENAMEのとこに貼り付けしているので
待ちがいないかとおもうのですが。。。。

'PDF保存フォルダのPDFファイル名取得

'最終列の取得

    Dim LC1 As Long
    LC1 = Cells(KANRITITLE, Columns.Count).End(xlToLeft).Column

     Columns(LC1 + 2).Clear

    Dim folder_path As String
    Dim file_name As String

    folder_path = FLD.Range("B8") & "\"
    file_name = Dir(folder_path, vbNormal)
    i = KANRITITLE + 1
    Do Until file_name = ""
        KANRI.Cells(i, LC1 + 2) = file_name
        i = i + 1
        file_name = Dir()
    Loop

  MsgBox "PDF保存ファイル名を取得いたしました。", vbInformation
  MsgBox "現在保存されているPDFファイル名を" & vbLf & "K列に記載しております。" & vbLf & "必要であれば活用ください(*^^*)", vbInformation

お力添えいただきたく何卒宜しくお願い致します。

しゅう

(しゅう) 2021/10/25(月) 09:35


 デバッグのやり方のアドバイスです。

 見つからないと言っているので、無いのでしょう。
 なので、Name ステートメントのファイルパスを確認しましょう。
 エラー時のファイルパスを確認することが、問題解決の第一歩ですよ。

 方法1
 当該コードをブレークポイントにして、コード実行前にファイルパスがどうなっているか
 確認する。

 方法2
 当該コード前にMsgboxまたはイミディエイトウィンドウにファイルパスを出力し確認する。

 方法3
 当該コードのエラーを一旦無視し、エラー発生したか判定、エラー発生時、方法2のように
 ファイルパスを出力し確認する。

(tkit) 2021/10/25(月) 11:53


 >    'エラーの場合は次へ すでにファイル名が変更されてたらエラーになるため
 >   'On Error Resume Next
そのエラーが出るのをわかっていて、手っ取り早く無視しようとうしたのが上記コードかも。

(cai) 2021/10/25(月) 16:16


tkit様

お世話になります。
イミディエイトウィンドウにファイルパスを出力し確認する。
イミディエイトでも問題なし

空いているセルに下記の通りで書き出ししてみました。

Cells(i, 11).Value = folder_path & Cells(i, FILENAME)
このフルパスからファイル開けれます・・・・

本当になんでなのでしょうか・
新しいファイル名が長すぎるとかそんなことありますか?

ちなみに新しいファイル名例

SDS_500999964572640000_FIII 12345678/CAN_あさささ_はひふエステック_JP_20190801.pdf

こんな感じなのですが。。。
だめでしょうか?

CAI様

 >    'エラーの場合は次へ すでにファイル名が変更されてたらエラーになるため
 >   'On Error Resume Next
そのエラーが出るのをわかっていて、手っ取り早く無視しようとうしたのが上記コードかも。

このエラーコードやめたほうがいいですか?

お力添えいただきたく
何卒宜しくお願い致します。

(しゅう) 2021/10/25(月) 17:20


皆様

お力添えいただき誠にありがとうございます。
なんとファイルがありませんというエラーがでていましたが
変更後のファイル名にスラッシュが入り込んでいるため
エラーになっておりました。

スラッシュを置換したうえで保存名を確定したら
うまくいきました!

また勉強になりました。
ありがとうございます。

(しゅう) 2021/10/25(月) 17:56


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.