よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13355 / inTopicNo.1)  ファイルリネームマクロ
  
□投稿者/ たくろう -(2019/02/26(Tue) 11:10:20)
    いつもお世話になっております。

    ファイルリネームのマクロを作りましたが、うまくいきません。

    フォルダ1:Excelファイルが入っている
    フォルダ2:PDFファイルが入っている

    上記フォルダ内にあるファイルネームをマクロを保存したExcelに読み出し、
    フォルダ内1番目のExcelのファイルネームをフォルダ内1番目のPDFファイルに付ける、
    複数あれば繰り返す、
    というマクロを作りました。

    PDFファイルはスキャナーから取り込んだもので、
    例えば100ページあったとしたら、
    分割ソフトで2ページずつ50個のファイルにし、
    分割したPDFファイルには1.pdf、2.pdf・・・50.pdfのように、
    ファイルネームが付きます。

    それをフォルダ1にあるExcelファイルネームを付けようとするのですが、
    フォルダ2のpdfファイルを読み込む際、
    1、2、3・・・の順ではなく、1、10、11・・・19、2、20、21・・・
    というような順番で読み込んでしまい、
    Excelとの並びが合わなくなってしまいます。
    結果、2.pdfに付けたいファイルネームが10.pdfに付いてしまいます。

    分割後のPDFファイルネームが01.pdf、02.pdfとなれば問題ないのですが、
    そのような分割ソフトも見つかりませんし、
    ファイル数が3桁になった場合はまた問題が発生してしまいます。
    PDFファイルを1、2、3・・・の順に読み込ませる方法はあるでしょうか。

    マクロ初心者故、このような質問の仕方で良いのかもわかりませんが、
    作成したコードは下記の通りです。

    Sub リネーム

    Sheets("リネーム").Select
    Range("A7:B100").Select
    Selection.ClearContents
    Range("A7").Select

    Dim fd_path As String
    Dim fl_name As String
    Dim i As Long

    fd_path = 「フォルダ2」

    fl_name = Dir(fd_path & "\*")
    If fl_name = "" Then MsgBox "ファイルが存在しません。": Exit Sub

    Range("B2").Value = fd_path

    i = 7
    ChDir fd_path & "\"
    Do Until fl_name = ""
    Cells(i, "A").Value = fl_name
    i = i + 1
    fl_name = Dir
    Loop


    'Dim fd_path As String
    'Dim fl_name As String
    'Dim i As Long

    fd_path = 「フォルダ1」

    fl_name = Dir(fd_path & "\*")
    If fl_name = "" Then MsgBox "ファイルが存在しません。": Exit Sub

    i = 7
    ChDir fd_path & "\"
    Do Until fl_name = ""
    Cells(i, "B").Value = fl_name
    i = i + 1
    fl_name = Dir
    Loop

    Cells.Replace What:=".xlsx", Replacement:=".pdf", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    'Dim i As Long

    i = 7

    Do Until Cells(i, 1).Value = ""
    FileCopy Range("B2").Value & "\" & Cells(i, 1).Value, _
    Range("B3").Value & "\" & Cells(i, 2).Value
    i = i + 1
    Loop

    ※セルB2にはフォルダ1のパス、
     セルB3にはフォルダ2のパスが入っています。
     また、セルA7〜A100にはフォルダ2のPDFファイルネーム(リネーム前)が入り、
     セルB7〜B100にはフォルダ1のExcelファイルネームの拡張子を.xlsxから.pdfに変更したものが入るようにしています。

    どうぞ宜しくお願い致します。
引用返信/返信 削除キー/
■13356 / inTopicNo.2)  Re[1]: ファイルリネームマクロ
□投稿者/ よねさん -(2019/02/26(Tue) 15:20:10)
    >それをフォルダ1にあるExcelファイルネームを付けようとするのですが、
    >フォルダ2のpdfファイルを読み込む際、
    >1、2、3・・・の順ではなく、1、10、11・・・19、2、20、21・・・
    >というような順番で読み込んでしまい、
    >Excelとの並びが合わなくなってしまいます。
    >結果、2.pdfに付けたいファイルネームが10.pdfに付いてしまいます。
    これが問題なら、読み込み方を変えればよいのでは?
    Dir関数で読み込んでいるからそのようになっているのなら
    他の方法を考えて、ファイル名は1〜10の順番になっているので
    その番号を指定して 
    Fot i=1 to 10
    とすれば順番になるので、この i をファイル名に使えばよいのでは?
    
    for 〜 Next からは 該当番号がなくなって時に Exit で抜ければよいと思います。
    

引用返信/返信 削除キー/
■13357 / inTopicNo.3)  Re[2]: ファイルリネームマクロ
□投稿者/ たくろう -(2019/02/26(Tue) 18:28:07)
    ご返信ありがとうございます。
    本当に初心者で、作成したものもwebからの情報を切り貼りして作成したので、
    「Fot i=1 to 10」を何と置き換えたらいいのかわかりません。
    また、PDFのファイルネームもわかりやすいように1.pdf、2.pdfとしましたが、
    実際には1_○×△.pdf、2_○×△.pdf、・・・50_○×△.pdfのようなものになりますが、「1 to 10」で良いのでしょうか。
    「for〜Nextからは該当番号がなくなって時にExitで抜ければよい」についても何をどうしたら良いのか・・・
    せっかくご返信いただいたのに大変申し訳ございません。
    可能であれば具体的に何を何に置き換えれば良いか教えていただけませんか。
    宜しくお願い致します。
引用返信/返信 削除キー/
■13358 / inTopicNo.4)  Re[3]: ファイルリネームマクロ
□投稿者/ よねさん -(2019/02/27(Wed) 07:52:13)
    2019/02/27(Wed) 08:08:38 編集(投稿者)
    > 実際には1_○×△.pdf、2_○×△.pdf、・・・50_○×△.pdfのようなものになりますが
    
    後ろの _○×△ は共通のようですので i&"_○×△" でファイル名になります。
    いや、_○×△ は共通ではないというのなら、この方法は使えません。
    他の方法を考えることになると思います。
     
    と、書きましたが、
    もしかして、セルA7〜A100 とセルB7〜B100 の名前の並びが変になっているのが問題なのですか?
    そうであれば、A列を並べ替えればよいと思いましたがいかがでしょう?
    (Excelの並べ替えで1〜50まで昇順に順番に並べられるので)
    
    

引用返信/返信 削除キー/
■13359 / inTopicNo.5)  Re[4]: ファイルリネームマクロ
□投稿者/ たくろう -(2019/02/27(Wed) 10:09:06)
    分割ソフトを使うので、後ろの_○×△は共通です。
    旧PDFファイル名をセルA7〜A100に読み込む際に並びがおかしくなります。
    但し、現状は読み込んでリネームするまで一気に進んでしまいますので、
    途中で並び替えができません。
    また、リネーム後に残ったセルA7〜A100のデータを手動で並び替えをしても、
    やはり1_○×△.pdf、10_○×△.pdf、11_○×△.pdf・・・2_○×△.pdf、20_○×△.pdf・・・の順になってしまいます。
    Excelの設定の問題でしょうか。
    当方、win7/Excel2013です。
引用返信/返信 削除キー/
■13360 / inTopicNo.6)  Re[5]: ファイルリネームマクロ
□投稿者/ よねさん -(2019/02/27(Wed) 12:55:55)
    現在コードを細かく見たり、作成する時間が持てない状況です。
    申し訳ありませんが、以下のようなこちらの考えを書かせていただくだけになるかと思います。
    
    お作りになっているコードがファイル名の書き出しや、リネームといった作業を行うようになっているので、
    「セルA7〜A100のデータを手動で並び替え」は無駄なことと思います。
    コードの中にこの並べ替えを書く必要があると思います。
    
    マクロの流れとしては
    分割ソフトで作成されたPDFファイルがフォルダに保存される
    これを順次読み出し、A7以降にファイル名を書き出す。<--- ここでは順番がおかしくなる。
    ここで、A7以降を並べ替える。<--- ここで昇順の並べ替えを行う
    並べ替えた順番でファイルを呼び出して、ファイルのリネームを行う。
    といった処理にしたらよいのでは・・・と思います。

引用返信/返信 削除キー/
■13361 / inTopicNo.7)  Re[6]: ファイルリネームマクロ
□投稿者/ たくろう -(2019/02/27(Wed) 14:40:41)
    何度もありがとうございます。
    並べ替えなら「マクロの記録」でも出来そうなので、
    教えていただいた位置に上記を組み込んでみます。
    Excelの並び替えがおかしいのは調査が必要なので、
    こちらが解明次第、並べ替えをやってみたいと思います。
    いつもいろいろ教えていただきありがとうございます。
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -