ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel VBA 製作所コミュのVBZ初心者です。完成された雛形などを頂けると助かります。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
フォルダ内の複数(子)ブック(集計というシートのみ)を
(親)ブックにコピーして
(子)ブックのファイル名をシートの名前に割り当てて
(親)ブックの集計シートで串刺ししたいのですが
初心者でVBAがまったくわからないのですが、どなかた助けてください。
複数ブックは任意で(フォルダ内にあった個数分)
最大60個ファイルくらいになる予定です
また、指定するフォルダも任意で参照設定したいです。

ほんとに、ずうずうしいのですが完成された雛形などを頂けると助かります

コメント(12)

下記を転記しておきます

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

?マクロを親ブックに置くのか、マクロ作業専用のブックに置くのか?
?親ブックにマクロをおく場合は親ブックと子ブックが同じフォルダーか?
??で異なる場合は親ブックと子ブックに位置関係は?
??が固定で無い場合は子ブックのフォルダーをどうやって認識させるか?
たとえばユーザーフォームのテキストで入力するなど・・・

まずはフォルダーを変数(変数0)に取り込む方法を検討する

?次に、同じフォルダーにすべての子ブックを置くのであれば

FOR NEXT や For Each...Next 文等で そのフォルダー内のファイル名を
1つづつ変数1に取り込みながら末尾の ,xlsを削除して別の変数2へ代入しおく
(文字列操作関数を使用)
次に子ブックを取得したフォルダー名(変数0)と変数1をつなぎあわせてフルパスでファイルを開き
子ブックの集計シートを親ブックへコピーし
親ブックにできた集計シートを
先ほどの変数2にシート名をを変更する
さらに子ブックを閉じる
この動作がFor Each...Nextで繰り返される

・・・・・

等まずは大きな動きを検討し
その中を分割して最低限の動作を(小さい動作→パスの取得など、ファイル名の取得、変更など)
少しずつ検討、小さなマクロを作成してはブロックごとの動作確認を繰り返し問題なければ
順につなぎ合わせていけば長い道のりにはなりますが
最終的には期待しているものができるかと思います

答えは複数あるのであなたの望む解答を見つけてください

検討を祈ります
まるなげは関心しません

ところで新規のExcelブックに
以下のマクロを組み込んで実行させることはできますか?
実行前に必ずファイル名(任意で)を付けて保存してください


Sub test()

Dim str1 As String
Dim str2 As String
Dim str3 As String

str1 = ThisWorkbook.Path
str2 = ThisWorkbook.Name

MsgBox str1
MsgBox str2

str3 = Left(str2, Len(str2) - 4)
MsgBox str3

End Sub
丸投げ対してはスルーしたい気は山々ですが

本課題の作業はマクロにて効率化できる作業であり
その目の付け所には賛同します
依頼者へというより
同じような作業をマクロにて効率化しようとして挫折した人や
これから取り組もうという人等へ・・・
もうひとつヒントを・・・



以下のマクロを組み込んだのExcelブックと
同じフォルダーに数個の.xls形式のファイルを置いておき
実行してみて下さい?

Sub ファイル表示()

Dim i As Integer
Dim ブックパス As String
Dim 表示拡張子1 As String
Dim ファイル As String

ブックパス = ThisWorkbook.Path
表示拡張子1 = ".xls"


i = 2


ファイル = Dir(ブックパス & "\*" & 表示拡張子1)


Do Until ファイル = ""

Cells(i, 1) = ファイル
i = i + 1

ファイル = Dir
Loop

End Sub
>>3
マクロを保存したブックと同じフォルダのエクセルファイル名をA列に列挙するものですね!

上記「ブックパス」をフォルダ選択方式にすれば、任意のフォルダが読み込めそうですね。
というわけでフォルダ選択をするためのFunctionを作成してみました。

ブックパス = ThisWorkbook.Path
を
ブックパス = getFolder

のようにすれば使用できます。(と思いますw)
下記コードを標準モジュールにコピペすれば使えるようになります^^
ここを参考にしました:http://officetanaka.net/excel/vba/tips/tips39.htm
〜〜〜〜
Function getFolder() As String
  getFolder = ""
  Dim Shell, myPath
  Set Shell = CreateObject("Shell.Application")
  Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "C:\")
  If Not myPath Is Nothing Then getFolder = myPath.Items.Item.Path
  Set Shell = Nothing
  Set myPath = Nothing
End Function
〜〜〜〜
他のシートのコピーや串刺しについては、子のエクセルブックがどういう形でどうしたいのか、
ちょっと情報がすくないので追記が欲しいですね。
多数のご意見ありがとうございます。
丸投げ感が多いにありますが、これまでいろいろと試しては見ましたが
挫折しここにたどり着いた次第です。
もう少し、条件や情報を整理してみます。
みなさんよろしくお願いします。
今どうでしょうか?
お手数かけます
http://proxy.f3.ymdb.yahoofs.jp/bc/5f6f999e/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/%bd%b8%b7%d7.zip?BCRm9gLBVL0m2BHS
まず質問の意味がわからない。
サッカーでハットトリック決めたいんだけどどうするの?って言ってるのと同じ。

どっかのディレクトリのファイルの「集計」シートを取得したいところまではわかった。
串刺し?
まとめたいの?
んなら

初期処理(必要な情報の読み込み)
チェック処理(全てのファイルの存在チェック)
他ブック読み込み
シート作成処理(チェック込み)
コピー(方式はいろいろ)
読み込み終了
集計処理
終了処理


これ雛形
具体的なコードは適当なのあるから調べれば一発で探せる。
そっから先が聞きたいなら「具体例を挙げて」質問すればいい
集計ヌキで60ファイルなら10秒かからないかと。
すみません No,8のコメントで雛形を添付してみたんですが
URLの貼り付け方を間違っていたみたいです
申し訳ありません。是非ハットトリックを決めたいです。

http://proxy.f3.ymdb.yahoofs.jp/bc/5f6f999e/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/%bd%b8%b7%d7.zip?BCQNRlLBUgTX2BHS
意見を言わせてもらいます。これはExcelではなくAccessで管理する方が良いと思います。

理由としては、今後月別の管理となっていくでしょうし、一つのファイルに60シートもの管理を行うのは
効率的とは言えないと思います。

ですので、集計結果をAccessで管理することをおすすめします。もし、AccessがないのであればExcelでの管理になりますが、ExcelVBAで可能な内容なので、9の方が言うようにネットで調べれば出てきますよ。

あと、任意のファイルを読み込みたいのであれば、Dir関数を使うよりは、"ファイルを開く"のダイアログボックスを使うのが良いと思います。
11>山さん

 ま、そういわずにVBAでやりましょうよwww

 簡単な管理方法としての提案ならば
次のような手法でVBA不要の計算が可能です。

ブック内にワークシートを次のような順で同じデザインで
作成します。

↓ワークシート名
集計、Start、山田さん、斉藤さん、遠藤さん、End

そして集計シートのA1の内容に記述するのは
=sum(Start:End!A1)

これだけで、Start〜Endの位置に挟まれたワークシート
毎のA1セルの合計の計算ができます。

StartとEndワークシートは、集計ワークシートに
記述するのにシート名を固定するためのダミーです。
(中身はからっぽでOK)

たとえば斉藤さんを計算からはずすのであれば、
斉藤さんのシートをEndの後ろに持って行くだけで
OKです。

当然、60もの管理は無理に近いですが、この手法を
ベースにして、ワークシートを挿入する、しないだ
けの管理ならVBAで簡単にできると思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel VBA 製作所 更新情報

Excel VBA 製作所のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。