DBシートの内容をマクロで台帳にする方法

このQ&Aのポイント
  • エクセルのDBシートの内容をマクロで台帳にする方法について説明します。
  • DBシートのA列には商品の記号があり、B列以降には商品の固有情報が記載されています。
  • マクロを実行すると、DBシートの任意のセルから指定した情報を台帳にコピーします。同じ名称のシートがある場合はコピーしないようにします。
回答を見る
  • ベストアンサー

DBシートの内容をマクロで台帳にしたい

マクロ初心者です。 エクセルのDBシートの内容をマクロで台帳にしたいのですが、マニュアル本を見てもなかなかうまくできません。 基本的には「DB」シートと、台帳原紙シートからなるエクセルファイルがあります。 「DB」シートのA列 A4:A500には商品の記号がならび、B列以降はその行の商品の固有情報が記載されています。  例 A7  商品αの記号   B7  商品αの項目  C7商品αの仕様・・・ 台帳原紙シートは空欄の商品台帳となっております。 DBシートのA列の任意のセル(例 A14 記号名 「TEST-8」)を選択し、マクロを開始すると、台帳原紙シートをコピーして、そのシート名を「TEST-8」とし、台帳「TEST-8」のセルD1にDBシートのB7の記載情報をコピー。同じく台帳「TEST-8」のセルD5にDBシートのH7の記載情報をコピーしたいのです。  なお、マクロを開始した際、すでに記号名と同じ名称のシートがある場合は、コピーせず、そのシートに飛ぶようにしたいと考えております。 Sub DB⇒台帳() Dim Sheetname As String On Error GoTo Er1 Sheetname = Cells(ActiveCell.Row, 5) If Sheetname <> "" Then Sheets("Orig.Sheet1").Select Sheets("Orig.Sheet1").Copy Before:=Sheets(3) End If Er1: End Sub と見よう見真似でやってみたものの、既存のシートには飛べましたが、結果は散々・・・。 いろいろご指導をお願い申し上げます。

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

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

sub macro1()  dim r as long  dim SheetName as string ’準備  if activesheet.name <> "DB" then exit sub  r = activecell.row  sheetname = cells(r, "A").value  if sheetname = "" then exit sub ’転記  on error goto errhandle  worksheets(sheetname).range("D1").value = worksheets("DB").cells(r, "B").value  worksheets(sheetname).range("D5").value = worksheets("DB").cells(r, "H").value  worksheets(sheetname).select  exit sub ’必要に応じてシート作成 errhandle:  worksheets("台帳原紙").copy after:=worksheets(worksheets.count)  activesheet.name = sheetname  resume end sub

NM-baseball
質問者

お礼

keithin様  早急なるご回答を賜りまして誠にありがとうございます。いまからご教示いただいた情報をもとに再度挑戦してみます。  まずは取り急ぎお礼申し上げます。

関連するQ&A

  • <マクロ>シートの名前を変えたい

    いつも、教えていただきありがとうございます。 マクロを始めたばかりなので説明もうまくできるか分かりませんが 教えてください。 データ入力専用のシートがあります。(sheet1ですが、名前は「台帳原紙) そこにデータを入力した後、控えとしてシートを複製しています。 その後、入力のあるセルをクリアするマクロを自動記録しました。 複製は、シートの名前を指定してないので「台帳原紙(2)」となります。 そこで、自動記録したマクロに修正を加えて名前を変えるところまで 記録したいのです。 上記マクロは、「台帳原紙」にボタンを作りマクロを登録しています。 Sub Macro2() Sheets("台帳原紙").Copy Before:=Sheets(2) Sheets("台帳原紙").Select Range("A2:I19,A21:C30,I21:I30").Select Range("I21").Activate Selection.ClearContents ActiveWindow.SmallScroll Down:=-27 Range("A2").Select End Sub シートの名前は、今日の日付にしたいです。 台帳原紙のA2に今日の日付が入力されるのでそれを利用する方法でも良いのですが教えていただけませんか?

  • 指定シートの有無を確認

    指定したシートの有無を確認するVBAを作っているのですがうまく作動しません。 Sub dummy() Dim dummy Dim sheetname As String sheetname = Sheets("入力").Cells(1, 1).Value '←『入力』というシートのセルA1と同じ値のシート名 On Error Resume Next Set dummy = sheetname If Err.Number = vbnomal Then flag = True On Error GoTo 0 If flag Then Msgbox "シートがあります" Else Sheets("原紙").Copy before:=Sheets(1) Worksheets(1).Name = sheetname End Sub 補足:入力というシートのA1に値が入っており、その値と同じシートがあればメッセージが出る、無ければ『原紙』というシートをコピーしてコピーしたシートのタブにA1の値を表示する

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • マクロでエクセルシートのコピー

    マクロでシート1を最後尾に名前をつけてコピーしたいと思ってます。 つけたい名前は、シート2のあるセルにかいてあります。 私は下記のように書いたのですが、エラーになってしまいます。 Worksheets("Sheet2").Select newsheet = Cells(1, 1) Sheets("Sheet1").Select Sheets("Sheet1").Copy After:=Sheets(newsheet) どのようにすればシートをシート名をつけてコピーできますか? 教えてください。 エクセル97です。

  • 台帳登録をしたい...

    エクセルのSheet1で作ったデータを別のBookのSheet(台帳)のセルA1から順番に登録させるマクロを作りたい。 (1)Sheet1では、セルA2からA200まのデータがある範囲を調べ、データの有る範囲だけを台帳に順番に登録したい。 Sheet1の内容は常に変化するので、作業が終わったらマクロを実行し (1)の処理をしたい。 上記のようなことがしたいのですが、マクロの記録では出来ないので 誰か教えてください。 よろしくお願い致します。

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • Excel マクロについて

    お世話になります マクロをはじめて記録しましたが、うまく動きません まず、原紙となるページ”オリ”があり、1~31までの記録用ページがあります 処理が終わった場合や、間違った場合には原紙となる”オリ”をコピーし、貼り付ける  つまり原紙と同じ状態に戻すようにしたいのです で、まず記録の際に、シート31を開いて入力した後、元に戻すためシートオリをコピーし、元のシート31に戻り貼り付けた。 というのが下のソースになります。 ActiveWindow.ScrollWorkbookTabs Position:=xlFirst Sheets("オリ").Select Range("A4:W43").Select Selection.Copy ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets("31").Select Range("A4").Select ActiveSheet.Paste Range("C6").Select この内容では、シート1で実行した場合でも31が元に戻ってしまうので困っております。 どこかを変えればよいのでしょうか?

  • シート作成について

    Excellマクロで検索とシート作成等を行いたいのですが、全くの素人のためご教授願えればと思います。 (1)"入力"シートのC5から値のある行(C列)まで同じシートがあるか確認する (2)同じ名前のシートが無ければ、"原紙"シートに"入力"シートのG列からX列までを転記しシートをコピーする(既にある場合は作成なし、転記のみ) ※転記する列は、入力シートG=原紙シートC など指定される (3)コピーしたシート名をセルの値(C列)と同じ名前に変更 (4)C5から値のある最終行まで(1)~(3)を繰り返す 解りやすくご説明いただけると幸いです。宜しくお願いいたします。

  • EXCEL 任意のシートを選択するマクロ

    よろしくお願いします。 シートがsheet1からsheet10まであります。 マクロのコマンドで、sheets("sheet1") 等がありますが、 sheet11のA1セルに入力したシート名(たとえば、sheet6)を このマクロのコマンドに当てはめる事はできないものでしょうか? A1セルに入力したシート名と同じシートを参照するようなコマンドであると助かります。

専門家に質問してみよう