• ベストアンサー

VBAで他のブックのシートにボタン一つで書込みたい

現在申し込み票のExcelがあるのですが、マクロをボタンに登録してボタン一つ押すと申し込み票の名前と生年月日、住所が他のExcelのブック(例えば申込者名簿.xls)のシートに、名前→A1、生年月日→B1、住所→C1に入力されて保存されるようにしたいです。 更に次にもう一度ボタンを押した時には、名前→A2、生年月日→B2、住所→C2・・と言うようにどんどん書き足したいです。 書き足した後は元のExcelブックも申込者名簿.xlsも閉じるようにしたいです。 どのようにVBAを書けばよいのでしょうか? まだVBA初心者のためいまひとつわかりません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ど~もぉ。 情報が少なかったのですが、想像で作ってみました。質問とは違うかもしれませんが参考にしてください。 まず、 <申し込み票.xls>シートの設定 セルA1 を「名前」 セルB1 を「生年月日」 セルC1 を「住所」 上記のようにデータを入力する場所とします。 <申込者名簿.xls>シートの設定 セルE1 に数式[=COUNTA(A:A)]を入力 次に、申し込み票.xlsに下記のコードをコピペする (シート名が違う場合は、変更してください) [Test1]は申込者名簿.xlsにデータをコピーするコード [Test2]は両方のブックを保存後閉じるコード ------------------------------------------------------------------ Sub Test1() Dim TargetSheet As Worksheet, TargetRow As Long Dim DName As String, DBirth As Date, DAddress As String  With Worksheets("Sheet1")   DName = .Range("A1").Value   DBirth = .Range("B1").Value   DAddress = .Range("C1").Value  End With  Set TargetSheet = Workbooks("申込者名簿.xls").Worksheets("Sheet1")  With TargetSheet   TargetRow = .Range("E1").Value + 1   .Cells(TargetRow, 1).Value = DName   .Cells(TargetRow, 2).Value = DBirth   .Cells(TargetRow, 3).Value = DAddress  End With  Set TargetSheet = Nothing End Sub Sub Test2()  Workbooks("申込者名簿.xls").Close SaveChanges:=True  ThisWorkbook.Close SaveChanges:=True End Sub ------------------------------------------------------------------ Excel2003 どうでしょ~

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

要点は (1)他ブックの決まったシートをつかまえるコード(そしてセルに値を代入する)コピー・貼り付けは使わないほうがたやすい。 Xのブックのセルの値=Yのブックのセルの値、の形になるが、XもYもブック+シートを指定して、セルを指定する必要がある。 セルはブック名+シート名+Cells(i,j)で、捉える。iは行、jは列番号。 (2)お互い最下行を問題にすれば、よいと思うが最下行は ブック名+シート名+Range("A65536").End(xlUP).Rowで捉えられるので、書き込みは+1下行を指して行う あるいは代入を受ける側は、行ポインタで値代入行を管理し、一回ごとに+1して行く。 (3)ボタンのClickイベント関係の勉強。 ーー VBAの初心者には少し難しい課題。 課題の丸投げの質問になっている。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

どのブックのどのシートのどのセルにあるデータを、どうしたいのか。 レイアウトなどを提示した方が回答がつくかも知れないですよ。

関連するQ&A

  • VBA(Excel):他のブックからシートごと取込みたい

    他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。 以下を例として、ご回答いただけると幸いです。 よろしくお願いします。 ---------------------------------- 次の3つのブックが存在するとします。 a.xls b.xls c.xls a.xlsにはシートが1つだけあり、シート名は"sheet1"です。 b.xlsにはシートが1つだけあり、シート名は"sheet1"です。 c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。 a.xlsにVBAマクロを作り、a.xls上で実行させて、 a.xlsの"sheet1"は残したまま、 b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、 a.xlsのシートとして取込み、 同様に今度は、 a.xlsの"sheet1"、"sheet1-b"は残したまま、 c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、 c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、 c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、 a.xlsのシートとして取込み、 最終的に、a.xlsには、 "sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c" の、5つのシートが存在するようにしたいのです。 (各シート上のデータは、a.xlsの各シートとしてすべて移行されている) ----------------------------------

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • 【画像あり】複数のブック・シートから検索はできる?

    タイトルの件、質問いたします。 下記の図【現状】のとおり、呼出ブック・Sheet1のB1セルに【NO】をハイフンを入れて 入力すると、名簿ブック・Sheet1の情報が、呼出ブックのB2、B3セルに【名前、趣味】 が呼出されます。 この名簿ブックの範囲を下記の図【やりたい事】とおり、広げる事はできますか? 具体的には、下記のとおりです。 【広げたい名簿ブックの範囲】→3つのブック、11のシート ●名簿ブック・Sheet1  名簿ブック・Sheet2  名簿ブック・Sheet3  名簿ブック・Sheet4 名簿ブック・Sheet5 ●名簿1ブック・Sheet1 名簿1ブック・Sheet2 名簿1ブック・Sheet3  ●名簿2ブック・Sheet1 名簿2ブック・Sheet2 名簿2ブック・Sheet3 【呼出ブック・Sheet1にある関数】 B2セル:=VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿.xls]Sheet1!A:C,2,FALSE) B3セル:=VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿.xls]Sheet1!A:C,3,FALSE) ↑上記関数は、教えてgoo回答者様にご教授いただきました。 【条件】 ●エクセルバージョン:2003 ●名簿ブックは全て閉じているものとします。 ●同じフォルダ内に全てあります。理想は、名簿ブックのみ、違うフォルダに格納したいです。 ●名簿ブックにある、人の情報は全て、違う人です。 以上、宜しくお願いいたします。

  • 別ブックから数字を置換えてデータを呼出【画像あり】

    タイトルの件、質問します。 下記の図のとおり 2つのブックがります【呼出ブック、名簿ブック】  ■名簿ブックは、通常は開いていません。  ■2つのファイルの保存場所は、違う場所を想定しています。  ■NOの規則性は、全くありません。 ●呼出ブック【Sheet1】のB1セルに、 001-001-001 と【ハイフンを付けて】入力すると ● ⇒呼出ブックのB2セルに 名簿ブックから、名前が ● ⇒呼出ブックのB3セルに 名簿ブックから、住所が 呼出される。 ※数字、記号は、全て半角です。 【参考】 NOが001001001【名簿ブック】とハイフンを付けずに、同じ形式を入力すると 下記の数式で表示できます。 呼出ブックB2セル⇒ =VLOOKUP(B$1,[名簿.xls]Sheet1!A:C,2,FALSE) 呼出ブックB3セル⇒ =VLOOKUP(B$1,[名簿.xls]Sheet1!A:C,3,FALSE) ※上記数式は、教えてgoo回答者様に、ご教授いただきました。 ※名簿ブックは、呼出ブックと違う場所にあり、ファイルは閉じています。 【エクセルバージョン】 2003以下

  • エクセルVBAでブック間のコピーをしたい。

    エクセルVBAでブック間のコピーをしたい。 エクセルのVBA初心者です。 複数のブックが開いている時(ブックA,B,C...)に、今選択しているブックAのあるセルを、直前に選んでいたブックBやC(そのつど変わります)にコピーする方法は有りますでしょうか? どなたか教えて下さい。

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい

    Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい A.xls B.xls と二つのブックがあります。 A.xlsが閉じられる時、B.xlsも同時に閉じたいです。 A.xlsに以下のマクロを入れました。 Private?Sub?Workbook_BeforeClose(Cancel?As?Boolean) ?Workbooks("B.xls").Close?SaveChanges:=False End?Sub 問題はA.xlsが保存してない場合、「A.xlsへの変更を保存しますか?」というメッセー ジが 出てきますが、そこでキャンセルを押された場合でもB.xlsが閉じられてしまいます。 A.xlsが本当に閉じられた時だけB.xlsを閉じたいのですが そのようなことは可能でしょうか?

  • エクセルのVBAで新しくブックを開いた上でさらに…

    エクセルのVBAで新しくブックを開いた上でそのブックにVBAを埋め込む事はできますか? 分かりにくいと思うので具体的にかきます。 今、ブック1にコマンドボタンAがあり、このボタンAを押す事により 以下の2つを実現したいです。 (1)あたらしくブック2を開きます。 (2)更にこのブック2のシートにはコマンドボタンBができており (3)このボタンBの機能としてこのボタンBを押すと  ブック2のセルA1に数字1が入ります ブック2が開いた後で自分で、コマンドボタンBのマクロをブック2のモジュール内に書くのは簡単ですが、ブック1のコマンドボタンAを押したときに自動的にブック2のマクロを書き込みたいのです。 今、ボタンAを押すことで(1)と(2)まではできるのですが (3)のやり方がわかりません。 そもそもこういった事はできないのでしょうか? ご存知の人がいたら教えてください。よろしくお願いします。

  • VBAによるブック間のシートの移動またはコピペ

    検索で探すもピッタリ来るものが探せなかったものですみません。 Aブックにシート1とシート2があります。 bブックにシート3があります。 シート2とシート3の名前は同じ"abc"とします。 Aブックのシート1にコマンドボタンを設置し、このボタンをクリックするとシート3をシート2に移動またはコピー&ペーストするようにVBAで実現できますでしょうか? よろしくご教授ください。

専門家に質問してみよう