• 締切済み

セルをクリックすると別のファイルのシートをコピー

新しいシート(sheet1)に項目をつけて セルA1「表紙」・セルA2「消火器」・セルA3「誘導灯」を設定 セルA1の「表紙」をクリックすると、(sheet2)に別のブックからシート(表紙)をコピー セルA2の消火器」をクリックすると、(sheet3)に別のブックからシート(消火器)をコピー セルA3の「誘導灯」をクリックすると、(sheet4)にに別のブックからシート(誘導灯)をコピー という風にsheetを増やしていきたいのですが、どうやったら良いのでしょうか? マクロもVBAも経験ありません。 が、がんばりますので、アドバイスをお願いいたします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

ごめんなさい、誤記ました 誤: private sub Worksheet_BeforDoubleClick(byval Target as excel.range, Cancel as boolean) 正: private sub Worksheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean) 失礼しました。

maigo2naru
質問者

お礼

keithinさま いろいろご面倒をおかけして申し訳ありません。 さっそく、試したところ、うまくsheetがコピー挿入することができました。 本当に、ありがとうございました。 感謝でいっぱいです。 本当にありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

んーと。。。。。。 では、次の通りにしてください。 手順: Cドライブにtestフォルダを作成する testフォルダの中に表紙フォルダを作成し、表紙.xlsを保存し、表紙という名前のシートを用意する testフォルダの中に総括表フォルダを作成し、総括表.xlsを保存し、総括表という名前のシートを用意する testフォルダの中に消火器フォルダを作成し、消火器.xlsを保存し、消火器という名前のシートを用意する testフォルダの中に点検者フォルダを作成し、点検者.xlsを保存し、点検者という名前のシートを用意する A社ブックを用意する A社シートに表紙、総括表、消火器、点検者と記入する シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_BeforDoubleClick(byval Target as excel.range, Cancel as boolean)  dim myPath as string  dim myfile as string  mypath = "C:\test\" & target.value & "\"  myfile = target.value & ".xls"  on error goto errhandle  workbooks.open(mypath & myfile)  workbooks(myfile).worksheets(target.value).copy _   after:=thisworkbook.worksheets(thisworkbook.worksheets.count)  target.parent.select  cancel = true  workbooks(myfile).close false  exit sub errhandle: end sub ファイルメニューから終了してエクセルに戻る 表紙とか消火器と記入してあるセルをWクリックすると、各ブックから各シートをコピーしてくる。 間違えると出来ないので、間違えないようにやってください。 #再掲: >やるべきことを一つ一つステップを踏んで決めてから、それからマクロに取りかかるようまずしっかり準備してみて下さい。 何をしなきゃならないのかから丸投げして、やること全部手取り足取り教えてほしいってご相談なので、ご希望の通りにしました。 がんばってください。

maigo2naru
質問者

お礼

keithinさま いろいろありがとうございます。 手順どおりに作成してみましたが、A社ブックにそれぞれのシートが挿入されませんでした。(すみません) testのフォルダの中にA社のブックを保存していていいのですか? A社ブックのシートに表紙、総括表、消火器、点検者を記入する・・・のは、 sheet1内のセルに入力していいのですか? sheet1のタブを右クリックで 書いていただいているコードをコピー貼り付けでいいですか? でも、何かが違っているのでしょうねTT 重ね重ね申し訳ございません。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

つまりどういうことでしょう。 あなたのご説明だけ読むと 1.元ネタ(消火器)ブックと「A社ブック」と「マクロブック」の3つのブックが存在する 2.「消火器」を選んだら、消火器ブックを探して開いて消火器シートを持ってこなきゃならない   「誘導灯」を選んだら、誘導灯ブックを探して開いて誘導灯シートを持ってこなきゃならない   「表紙」を選んだら、「表紙ブック」(???)を探して表紙シートを持ってこなきゃならない といった事を言いたかったのですか? 随分メンドクサイお話ですね。 「消火器ブック」とか「誘導灯ブック」とか、どこのフォルダに保存してあるのかも不明です。 「消火器ブック」の中から「具体的にどのシートを」引っ張ってくればいいのかも不明です。 ふつーに考えると「消火器型式一覧」の中から「この内容が書かれていればこれは消火器ブックだ」と調べて(step1)から、更に消火器ブックの中から「該当のシート」を探して持ってくる(step2)ような構成になってるはずです。 マクロはあなた以上の「教えてチャン」です。つまり、漫然と「思い描いてる」だけでは、ただの一行も進みません。 具体的に「何がどうなったら何をしたらいい」のか、やるべきことを一つ一つステップを踏んで決めてから、それからマクロに取りかかるようまずしっかり準備してみて下さい。 そういう準備が自力で出来ない場合は、寄せられた回答に従ってあなたの準備を行ってください。 再掲: >1.マクロブックを用意する >2.表紙等を記入したマクロシートを用意する >  他のシートは「削除しておく」 >3.「別ブック.xlsx」という元ネタブックは「いっしょに横に開いてある」

maigo2naru
質問者

補足

ありがとうございます。よろしくお願いします。 今、作成しているファイルは、 「表紙」フォルダ (表紙.xls)ファイル 「総括表」フォルダ (総括表.xls)ファイル 「消火器」フォルダ (消火器.xls)ファイル 「点検者」フォルダ (点検者一覧.xls)ファイル (自火報その4.xls)ファイル (消火器ロット表.xls)ファイル 以上のファイルが 報告書テンプレートのフォルダの中にあります。 今後追加の予定があります。 すみません。面倒な質問と、下手な説明でご迷惑をかけます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ご相談の(ヤリタイ事の)説明不足: 1.ネタを持ってきたい「別ブック」って何?そのブックは「いまどうなっている」の? 2.「シートをコピーしたい?」それとも「誘導灯シートから『所定のセル(内容)』をコピーしたい」? ヤリタイ事(例): 1.マクロブックを用意する 2.表紙等を記入したマクロシートを用意する   他のシートは「削除しておく」 3.「別ブック.xlsx」という元ネタブックは「いっしょに横に開いてある」 手順: マクロシートのシート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean)  on error goto errhandle  workbooks("別ブック.xlsx").worksheets(target.value).copy after:=thisworkbook.worksheets(thisworkbook.worksheets.count)  target.parent.select  cancel = true  exit sub errhandle: end sub ファイルメニューから終了してエクセルに戻る 表紙とか消火器と記入してあるセルを「Wクリックする」と、元ネタブックから「シートをコピーしてくる」。

maigo2naru
質問者

補足

アドバイスありがとうございました。 説明不足ですみません。 例えば、A社の設備に、消火器と誘導灯がある場合 ファイル名「A社」 sheet1「A社」詳細を入力して、 Sheet2に消火器のテンプレート (消火器のシートごと) sheet3には誘導灯のテンプレート (誘導灯のシートごと) をコピー挿入して 「A社」ファイルを完成させたいのです。 現在は、消火器のフォルダの中に消火器のテンプレート(エクセルxls)を作っています。 お手数を掛けて申し訳ありません。 よろしくお願いします。

関連するQ&A