[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一つのフォルダに次々と追加される新規ファイルの中の情報を、別のファイルのセルに取得する方法』(11号)
当方メーカーですが新規受注があるとひとつのフォルダAに1受注1ファイルが作成されていきます。ファイル名は「58548×××」のような数字と日本語の混ざったものです。
作成したいのは、新規ファイルなのですが、それは、フォルダA内に次々と新規作成されるファイルの中のセルA1に入っている「個体番号」とセルA2に入っている「サイズ番号」を自動で取得できるファイルです。
どのようにすればよろしいか知恵をおかしいただけますでしょうか。
何卒よろしくお願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
それより、フォルダ内には受注ファイル以外のブックは存在しないのでしょうか? もし違うブックも混じっているなら、ファイル名やシート名に、一定の決まりはありますか?
あと、必要な情報は2セル分との事ですが、では1つのブックで2列だけ抜き出して良いのですか? どのブックから開いたとか、ブックの最終更新日時とか、原本に繋がる情報は要らないのでしょうか。 私だったら、更新日時が変わっていたり、追加されたファイルがあれば、太字強調とか考えますよ。
(???) 2020/02/20(木) 15:51
どのブックから開いたかがわかればうれしいです。
ブックを開かずにそのブックの中のデータの一部を取得することは可能なのでしょうか。
(11号) 2020/02/20(木) 16:03
Dim FSO As Object, f As Variant, wb As Workbook, asht As Worksheet, ctr As Long, foln As String Set asht = ActiveSheet asht.Range("A1:C1").Value = Array("個体番号", "サイズ番号", "ファイル名") With Application.FileDialog(msoFileDialogFolderPicker) .Title = "フォルダAを選択してください" If .Show = True Then foln = .SelectedItems(1) End With Set FSO = CreateObject("Scripting.FileSystemObject") For Each f In FSO.GetFolder(foln).Files If asht.Range("C:C").Find(f.Name, , , xlWhole) Is Nothing Then Set wb = Workbooks.Open(Filename:=f, ReadOnly:=True) asht.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = Array(wb.Sheets(1).Range("A1"), wb.Sheets(1).Range("A2"), f.Name) ctr = ctr + 1 wb.Close False End If Next f If ctr > 0 Then MsgBox "今回の処理で新たに" & ctr & "件追記しました。" Else MsgBox "今回の処理で追加ありません" End If End Sub (mm) 2020/02/20(木) 16:06
しかしながら、ブックとして開かないだけであり、Excel自体は裏でファイルとして開いているわけで、普通に開いて取り出した方が判りやすいと思いますよ?
(???) 2020/02/20(木) 16:15
mmさんのVBAを実行したところ、何ファイルもエクセルが開いているような挙動になったのですがこれは毎回起きるのでしょうか?
(11号) 2020/02/20(木) 17:14
>これは毎回起きるのでしょうか?
毎回、というのがどういう意味か分かりませんが、 何回か起動してみたら毎回起きるかどうか判断で きるとともいます。
逆に、毎回おきないのであれば、不具合があると いうことになります。 (OK) 2020/02/20(木) 18:42
スルー願います。 (OK) 2020/02/20(木) 19:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.