[[20060703014002]] 『他のブックから指定のシートをコピー抽出』(ばらぶ) ページの最後に飛ぶ

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

 

『他のブックから指定のシートをコピー抽出』(ばらぶ)

こんにちは、またまた質問させていただきます。

BOOK1にシートが3つ
BOOK2にシートが2つあります。

上記2BOOKは入力のみで関数はあるもののマクロはなし

作業BOOK3で上記BOOK内にある指定したシートをシートごと呼び出すことがVBAで出来るのでしょうか?

あくまでシートはコピーでBOOK1BOOK2は変更はなしです。

「BOOK3でマクロを起動するとBOOKとシートを選択でき、コピー挿入できる。」

こんな都合のいいこと出来ますか?

よろしくお願いします。

WindowsXP
Excel2000


 文面からは「マクロの記録」でできそうな内容ですが、
記録したマクロでは対応できない部分がある、ということですか?
(みやほりん)(-_∂)b

お返事有難うございます。

説明のが分かりにくくてすいません。。

マクロで記録すると指定の場所にある指定したブックしか挿入できませんでした。

又、ブックの保存場所が変わるとうまくいきません。

出来れば起動すると

『ブックを選択をきいてきて⇒選択⇒シートの選択を聞いてきて

 ⇒選択⇒シートをコピー挿入⇒選択したBOOKを保存せずに終了』

BOOK3のみ開いた状態

をしたいのです。無理でしょうか?

(ばらぶ)


「開く」ダイアログボックスから任意のブックを開くコードは次のようなコードで。
 
 Dim myPath As String 
    myPath = Application.GetOpenFilename(("Excel ファイル (*.xls), *.xls"), , "ブックを選択して下さい。") 
    If myPath = "False" Then Exit Sub 
    Set wb_A = Workbooks.Open(myPath) 
 
【参考】下記のINAさんのコードを参考
[[20040915105039]] 『複数ブックの特定シートを合体』(ran)
 
問題はシート選択の部分。
運用の部分で質問します。
ただ、Book1,Book2はシート挿入のための雛形としてだけ存在でしょうか。
それとも、何か編集した結果としてのコピーシートが必要、ということでしょうか。
(雛形なら、シートコピーよりも、テンプレートのほうが便利)
(みやほりん)(-_∂)b

みやほりんさんお返事ありがとうございます。

ブックの選択、呼び出しコードありがとうございます。

ブックの呼び出しは可能になりました!!が、シートについては依然???です。

ヾ(TzT;)スイマセン

>運用の部分で質問します。

>ただ、Book1,Book2はシート挿入のための雛形としてだけ存在でしょうか。

上記質問で、

運用内容:月間機器集計作業

運用手順:BOOK1に月別機器稼動一覧が手入力されています。

     シート名「0607(年月)」三ヶ月保存(3シート)

     BOOK2に機器別稼動一覧が手入力されています。

     シート名「機種」2種類(2シート)

     BOOK1・2共時間やVLOOKUP等簡単な関数が含まれています。

     BOOK1・2の入力作業は同僚が行っておりフロッピーで受け渡しをしています。

     2つのブックを受け取り、私が手作業でBOOK3にシートをコピー挿入し、

     その2つを使って(VBA)集計を行っています。

     最後にそのシートを削除しています。(データが多いため)

やりたいことは、毎回シートを手作業でコピーすることが省けないかということです。

>(雛形なら、シートコピーよりも、テンプレートのほうが便利)

なので雛形に該当しないと思います(間違ってたらすいません。多分・・)

【参考】INAさんのコードを拝見させていただきました。

「シートを合体」というわけではないのですが、コード内容を

とてもすぐには理解できないので少しづつ勉強したいとおもいます。

シートを合体出来るならシートをコピー挿入も出来そうな気がしてきました。

○)>o<(○

(ばらぶ)


すいませんがもう少しお知恵をお貸しください。。

m(UU;)m

(ばらぶ)


 Book3に登録したマクロと仮定して、ざっくり次のようなコードで
「ブック選択>シート選択>Book3へ選択シートコピー>選択したブック閉じる」
という動作になると思います。
 
 Sub BookAndSheetSelect()
      Dim Flag As Boolean
      Dim myPath As String, msg As String, shName As String
      Dim wb_A As Workbook, Sh As Worksheet
         myPath = Application.GetOpenFilename(("Excel ファイル (*.xls), *.xls"), , "ブックを選択して下さい。")
         If myPath = "False" Then Exit Sub
         Set wb_A = Workbooks.Open(myPath)
         For Each Sh In wb_A.Worksheets
             msg = msg & Sh.Name & Chr(10)
         Next
         msg = msg & "シート名を入力してください"
         Do
             shName = InputBox(msg, "シート選択")
             For Each Sh In wb_A.Worksheets
                 If shName = Sh.Name Then Flag = True
             Next
             If Not Flag Then shName = ""
         Loop While Len(shName) = 0
         wb_A.Worksheets(shName).Copy before:=ThisWorkbook.Sheets(1)
         wb_A.Saved = True
         wb_A.Close
         Set wb_A = Nothing
 End Sub
 
シート名入力の場面では、大文字小文字、全角半角は区別され、一字でも違うと
再入力を促されます。
(みやほりん)(-_∂)b

みやほりんさん

どうも有難うござます。

完璧です!!!(思ってた通りの作業が出来ました!)

感謝感激雨あられですっ。

K(>д<)K

このコードを自分で理解できるよう頑張って勉強していきたいと思います。

本当に本当に有難うございました!!

(ばらぶ)


コメント返信:

[ 一覧(最新更新順) ]


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