ExcelのマクロやVBA等の本を見たりして勉強してますが全く付いていけず困っております。
お力お貸しください。。。
複数店舗の売上や予約数等(項目別に別Seetになってます)を今はリンク貼り付けでどうにか対応していますが、今後店舗が増えていくと作業が追い付かなくなってしまいます。
ファイル名は(****2706管理表)で統一されており、月が替われば2706⇒2707等に変更するようになっています。
各店舗のシート名(予約と媒体)の必要箇所(C、E、F、G列の3~33)だけを集計用の別ファイルに取り込みを毎日行いたいのです。更に、取り込む列は縦ですが別ファイルに取り込んだ時には
その列を横向きに表示をさせたいです。
ネットで調べたりしてみましたが理解が出来ず質問させて頂きました。
皆さん何卒ご教授お願いします
No.1ベストアンサー
- 回答日時:
この場合の他のブックを開くには
Dir関数を使う事になります。
ネットで一度、調べてみてください。
仮に、取り込むブックの
A1セル に、データがあるフォルダへのパスを記述
A2セル に、2706管理表.xlsx
と入れておいてください。
Sub Sample1()
Dim buf As String
buf = Dir(Range("A1").Value & "\*" & Range("A2").Value)
'変数に指定したフォルダにある2706管理表.xlsxで終わるファイル名を入れる
Do While buf <> ""
GYOU=Range("A" & Rows.Count).End(Xlup).Row+1
'このブックのデータが入っている最終行番号を取得しておく
Workbooks.Open Range("A1").Value & "\" & buf
'最初のファイルを開く
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU+30).Value=ActiveBook.Sheet("予約と媒体").Rnage("C3:G33").Value
'このシートの最終行の下に、指定したシート名のC3~G33の値を入れる
Workbooks(buf).Close SaveChanges:=False
開いたブックを閉じる
buf = Dir()
'次のブックへ
Loop
End Sub
こんな感じになると思います。
動作は確認していません。エラーが出たらご自身で修正してみてください。
補足に気が付けば、再度、回答いたします。
早速回答して頂きありがとうございます。
コードを使用させて頂き、実際にマクロを動かしてみます。
その時にまた問題にぶつかってどうしようもない場合はご教授お願いします。
No.9
- 回答日時:
保存した2706管理表.xlsのファイルを右クリックして
プロパティで確認します。
全般のタブで場所に表示されています。
そのまま、コピーして貼り付けても大丈夫です。
A1セルには
C:\Users\私の名前\Desktop\管理表集計テスト
A2セルには
*2706管理表.xls*
と前後に*を追加で、2706管理表.xls を含む
で一度試してみてください。
A1セルに上記教えて頂いたパスを確認してコピー貼り付け行い、
A2セルに*2706管理表.xls を含む*を入力しました。
が、やはり何も起きませんでした。。。
他に私が間違っている所等ありますでしょうか?
No.8
- 回答日時:
それと
buf = Dir(Range("A1").Value & "\*" & Range("A2").Value)
'変数に指定したフォルダにある2706管理表.xlsxで終わるファイル名を入れる
の
’で始まる部分(VBエディターでは緑色に表示される部分)は
コメントアウトと呼ばれてプログラムには全く関係ありません。
後から自分が見直したり、ほかの方が見たときにわかりやすい様に
説明などに使います。
うまくいくようになりましたら、ご自身の言葉でコメントを書くと
勉強になりますし、後々にも役に立ちます。
No.7
- 回答日時:
>をコピーすればよかったのでしょうか?
どちらでも構わなかったですが
>Sub ボタン3_Click()が黄色になったのですが
ひょっとして
Sub Sample1()
の下に
Sub ボタン3_Click()
?
だったら、Sub ボタン3_Click()
を削除と
最後に End Subがふたつあったら一つ削除
してください。
コードは Sub~End Subの間に記述します。
Sub Sample1()
Dim buf As String
buf = Dir(Range("A1").Value & "\" & Range("A2").Value)
Do While buf <> ""
GYOU = Range("A" & Rows.Count).End(xlUp).Row + 1
Workbooks.Open Range("A1").Value & "\" & buf
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = ActiveWorkbook.Sheets("予約と媒体").Range("C3:G33").Value
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
でSample1を実行するか
何度もご教授ありがとうございます。
上記のコードを入力しても作動しないという事はコード以外の何かが間違っているという
ことですかね・・・?
①デスクトップに『管理表集計テスト』名でのフォルダー作成してあり、
場所
C:\Users\私の名前\Desktop
ネットワークパス
\\私の名前\Users\私の名前\Desktop\管理表集計テスト
2つのパスが確認できました
②そのフォルダーの中に『管理表集計』名でのBook*取り込み先用Book
この中にSheet1のA列1に『\\私の名前\Users\私の名前\Desktop\管理表集計テスト』パスを
書き込み
A列2に『2706管理表.xls*』と書き込み
後は空白になってます。
このBookのマクロにご教授頂いたマクロコードをコピーしてあります。
③同フォルダーの中に『***2706管理表.xlsx』名でのBook*取り込み元用Book
この中に『予約と媒体』名でのシートあり
エクセルは2007を使用しており、2つのBookはマクロを有効しております。
今現状の設定している状況ですが、何かおかしい点はありましたでしょうか・・・?
何度も申し訳ありませんが宜しくお願い致します。
No.4
- 回答日時:
何度も訂正で失礼します。
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU+30).Value=ActiveBook.Sheet("予約と媒体").Rnage("C3:G33").Value
も
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = ActiveWorkbook.Sheets("予約と媒体").Range("C3:G33").Value
3か所もミスがありました。
少し略して
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = Sheets("予約と媒体").Range("C3:G33").Value
でも大丈夫ですし
もし シート 予約と媒体 がアクティヴな状態で保存されているなら
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = Range("C3:G33").Value
でも大丈夫です。
一応、エラーはないことを以下で確認しときました。
説明文を除けは、これくらいですみます。
短いと云えば簡単な方です。
テクニックは Dir関数と
データの入っている最後の行番号を求める
Range("A" & Rows.Count).End(xlUp).Row + 1
の部分です。
これは、参考書に出ているかと思います。
Sub ボタン3_Click()
Dim buf As String
buf = Dir(Range("A1").Value & "\" & Range("A2").Value)
Do While buf <> ""
GYOU = Range("A" & Rows.Count).End(xlUp).Row + 1
Workbooks.Open Range("A1").Value & "\" & buf
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = ActiveWorkbook.Sheets("予約と媒体").Range("C3:G33").Value
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
コードを入れなおしたのですが、Sub ボタン3_Click()が黄色になったのですが
Sub ボタン3_Click()
Dim buf As String
buf = Dir(Range("A1").Value & "\" & Range("A2").Value)
Do While buf <> ""
GYOU = Range("A" & Rows.Count).End(xlUp).Row + 1
Workbooks.Open Range("A1").Value & "\" & buf
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = ActiveWorkbook.Sheets("予約と媒体").Range("C3:G33").Value
Workbooks(buf).Close SaveChanges:=False
buf = Dir()
Loop
End Sub
をコピーすればよかったのでしょうか?
それとも
ThisWorkbook.ActiveSheet.Range("A" & GYOU & ":D" & GYOU + 30).Value = Sheets("予約と媒体").Range("C3:G33").Value
の部分だけを最初に組んで頂いたコードと入れ替えれば良かったですか?
No.3
- 回答日時:
失礼しました。
>VBエディターでエラーの行にいるが付いていると思います。
は
VBエディターでエラーの行に色が付いていると思います。
それと
>私の実行させようとしているマクロは複雑なものなのでしょうか・・・・?
結構、高度な部類です。
フォルダー内の不特定のファイルを探し出すのに
Dir()関数を使っています。
本ではあまり見かけないのでは??
http://officetanaka.net/excel/vba/tips/tips95.htm
こんなところが参考になると思います。
ご教授ありがとうございます。
エラーは無くなりましたが、実行をしてもウンともスンとも言わないのは
何かが間違っているという事ですよね・・・?
データ元のエクセルをマクロ有効ブックで保存を行い、***2706管理表.xlsxという名前に
なっていてデータ取り込み先のブックのA2には2706管理表.xlsxと打ち込んでいます。
ただ、取り込み先のブック名が****.xlsmという名前なんですがここがおかしいという事であってますでしょうか?
何度もご教授して頂いて本当に申し訳ないですがご回答お願いします。
No.2
- 回答日時:
VBエディターでエラーの行にいるが付いていると思います。
それを教えてください。
今、ちょっと気が付いた点では
開いたブックを閉じる
の説明文の最初に 'が抜けています
’開いたブックを閉じる
にするか、単なる説明文なので削除して頂いて結構です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
ユーザーフォームの切り替えに...
-
VBAで別のブックにシートをコピ...
-
VBA 別ブックからコピペしたい...
-
Excel2007VBAファイルの表示に...
-
vbaでvbaProjectのパスワード解...
-
vbaで他のブックに転記したい。...
-
拡張メタファイルにて貼り付け
-
【VBA】全シートの計算式を全て...
-
エクセルマクロで、他ブックか...
-
【ExcelVBA】インデックスが有...
-
エクセル vba ある検索値を別ブ...
-
Excelマクロ 該当する値の行番...
-
VBA コードを実行すると画面が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
【マクロ】AブックからBブック...
-
【ExcelVBA】インデックスが有...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBS Bookを閉じるコード
-
VBAで別のブックにシートをコピ...
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
[Excel]ADODBでNull変換されて...
-
VBAで複数のブックを開かずに処...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
vbaでvbaProjectのパスワード解...
おすすめ情報
hallo-2007にご教授頂いたコードを書いて実行してみましたがsubまたはfunctionが定義されていません。とエラーが出てしまい1日中解決策を模索してましたが全く答えを導き出せませんでした。。。
私の実行させようとしているマクロは複雑なものなのでしょうか・・・・?
本を2冊購入して勉強してますが、実行しようとするマクロの説明などが1つも無く折角教えて頂いているんですが、何がどうなっているのかも不明に・・・。
初心者すぎて本当に恥ずかしいですが、教えてください。