[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
早速の回答ありがとうございました。
大変助かりました。
テストをしてみたら、一覧作成できました。
これでやりたいと思っていたことが進めれます!
本当にお世話になりました。ありがとうございました。
(m.sui) 2014/07/09(水) 09:20
アプリケーション定義またはオブジェクト定義のエラーです。』 というエラーが必ず出るようになってしまい、一度にデータの取り込みができなくなってしまいました。 デバッグを見てみると、『結果シート.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
お手間をおかけしすみませんでした。ありがとうございました。
(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.