[[20140708170348]] 『VBEで一覧を作成したい』(m.sui) ページの最後に飛ぶ

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

 

『VBEで一覧を作成したい』(m.sui)

職場でのデータ作成のためにVBEを利用したいと思っています。

[[20120206161956]] 『フォルダー内の複数のBOOKから 同じ項目を 別のBOOKに一覧にする』(ayakohana)をそのまま利用するつもりなのですが、リストに無いファイルだけを後ろに追加登録して、このエクセルでも一覧を作成できるようにしたいのです。
VBEは全くの素人のため、マクロを作成していただけると大変ありがたいです。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 こんなことでしょうか。

 Sub データ集計()
    Dim fso As New Scripting.FileSystemObject    '// ツールの参照設定で Microsoft.Scripting.Runtime にチェックを付ける

    Dim 結果シート As Worksheet
    Set 結果シート = ActiveSheet

    Dim フォルダパス
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show <> True Then Exit Sub
        フォルダパス = .SelectedItems(1)
    End With

    Dim 最終列 As Long

    最終列 = 結果シート.Range("B2").End(xlToRight).Column
    If 最終列 = Columns.Count Then
        MsgBox "取得位置が範囲が未定義です "
        Exit Sub
    End If

    Dim ファイル
    Dim 検索結果 As Range
    Dim 行 As Long
    Dim 列 As Long
    For Each ファイル In fso.GetFolder(フォルダパス).Files
        Set 検索結果 = 結果シート.Range("A:A").Find(ファイル.Name, lookAt:=xlWhole)
        If 検索結果 Is Nothing Then
            行 = Application.Max(結果シート.Cells(Rows.Count, "A").End(xlUp).row + 1, 3)
            With Workbooks.Open(ファイル.Path)
                結果シート.Cells(行, "A").Value = ファイル.Name
                For 列 = 2 To 最終列
                    結果シート.Cells(行, 列).Value = .Worksheets(1).Range(結果シート.Cells(2, 列).Value).Value
                Next
                .Close False
            End With
        End If
    Next
 End Sub
(Mook) 2014/07/08(火) 22:53

(Mook)様

早速の回答ありがとうございました。
大変助かりました。

テストをしてみたら、一覧作成できました。
これでやりたいと思っていたことが進めれます!

本当にお世話になりました。ありがとうございました。
(m.sui) 2014/07/09(水) 09:20


教えていただきました上記の方法で一覧が作成できていたのですが、
最近になって『実行時エラー'1004':
              アプリケーション定義またはオブジェクト定義のエラーです。』
というエラーが必ず出るようになってしまい、一度にデータの取り込みができなくなってしまいました。
デバッグを見てみると、『結果シート.Cells(行, 列).Value = .Worksheets(1).Range(結果シート.Cells(2, 列).Value).Value』の列に色がついているのですが、
取り込もうとしているエクセルに何か問題があるのでしょうか?
教えてください。
(m.sui) 2014/08/04(月) 10:04

 エラーが出たときの黄色い行の「列」を確認(マウスカーソルを持っていくと見えます。)
 して 2行目のその「列」の位置を確認してみてください。

 アドレスとして正しい文字列が記述されているでしょうか。
 あるいは、参照先の該当アドレスのデータに問題ないでしょうか(セルの結合等)。
(Mook) 2014/08/04(月) 10:23

すみません。
よくわからなかったので、もう一度質問させてください。

デバッグは、『結果シート.Cells(行, 列).Value = .Worksheets(1).Range(結果シート.Cells(2, 列).Value).Value』の行全体に色がついています。この中のどこかに問題があるのでしょうか?
デバッグで色がついている行を7/8に教えていただいた内容と比べてみましたが、変わっている部分はありませんでした。

ちなみに、参照先のデータはエラーが出る前の内容と特に変更をしている部分はありません。セルの結合等も行っていません。

どこを確認すればよいかもう一度教えてください。お願いします。
(m.sui) 2014/08/04(月) 11:40


 >結果シート.Cells(行, 列).Value = .Worksheets(1).Range(結果シート.Cells(2, 列).Value).Value
 の行で
 >アプリケーション定義またはオブジェクト定義のエラーです。

 が出ている場合、
 (1)結果シート、
 (2)Cells(行,列)
 (3).Range(結果シート.Cells(2, 列).Value)
     この中で指定している
      (4)結果シート.Cells(2, 列).Value
 が EXCEL の指定方法として適切でないため、参照できないというケースが多いです。

 エラーが起きたとき、転記は1行も実行できない状況でしょうか。
 それとも何行か処理が進んで途中で止まったのでしょうか。

 確認のためには処理の先頭にカーソルを置いて、F8 を押しながらどこまで処理が
 進んだか確認してください。

 列、行 の数値はいくつになっていますか?
 現在のシートの2行目「列」列のセルには何が入っていますか?
 収集対象のシートの「行」行、「列」列のセルには何が入っていますか?

 変数の確認は、マウスカーソルを当てることでもわかりますし、ウォッチウィンドウに
 変数をドロップすることでも確認できます。

 このあたりを確認すれば、おかしいところが見つかると思います。

 度々紹介させてもらっているリンク先ですが、参考になると思います。
『マクロを「書いてみた」「動かした」「ダメでした」。』
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200.html
『デバッグトレースの開始方法』
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html

(Mook) 2014/08/04(月) 12:51


たびたびすみません。

収集対象のシートは、下記のようになってます。(セルの結合は行っていません。)
  C D   
3 〒 郵便番号
4
5   住所
6   住所
7
8   名前

現在のシート(マクロを設定している方のシートのことですよね?)は、
2列目 C3
3列目 D3
4列目 D5
5列目 D6
6列目 D8

で設定しています。
エラーメッセージは出ますが、処理は最後のD8までできています。

参考のリンク先も見てみたのですが、よくわからなかったので
もう一度教えていただけますでしょうか。
(m.sui) 2014/08/04(月) 15:38


 エラーが出ているときに黄色い行でとまると思いますが、そのときの「行」という変数と
 「列」という変数は何でしょうか。

 まずはこちらにお答えをください。

 >エラーメッセージは出ますが、処理は最後のD8までできています。 
 というのは、エラーの後どうやって続けているのでしょうか。
 そのあたりも説明ください。

 >参考のリンク先も見てみたのですが、よくわからなかったので 
 とはいいますが、かなり丁寧に説明されていますので、一から説明するよりそちらを熟読
 いただいたほうがわかりやすいと思います。

 上のリンク先だけでなく、冒頭にあるデバッグに関する一連の記事は手を動かしながら
 (実際EXCELを操作しながら)読んでください。

 変数の参照はこちらに記載されています。
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030_03.html

(Mook) 2014/08/04(月) 16:14


何度も返信いただき、ありがとうございました。
1つずつ確認をし、エラーを修正できました。

お手間をおかけしすみませんでした。ありがとうございました。
(m.sui) 2014/08/04(月) 17:26


 無事動いたようで何よりです。

 同じような不具合で困っている人のために、解決した際は、どういう原因でどう修正したら
 直ったということをコメントされると良いと思います。
(Mook) 2014/08/04(月) 18:47

コメント返信:

[ 一覧(最新更新順) ]


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