重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

シート1のA1に日付、A2に専用コード、A3に品名、A4に数量・・・
の表があって毎日更新されていきます。

シート1A3へ入力したら新しいデータを自動で別のbook(品名別)にコピーしたいです。

調べてみると別のシートには入力毎移すことができました。が
種類も多く元のデータは月単位で新しくなるので、別のbookにしたいです。

お力お貸しくださいませんでしょうか。

よろしくお願いいたします。

A 回答 (5件)

No.4です。


直し方が違うようですよ。
回答に書かれている内容を今一度ご確認ください。
    • good
    • 0

No.2です。


このVBAって、ちゃんと動くのですよね?
やりたいことって、今は同じブックの別シートへコピーするところを別ブックへコピーするだけですよね?
であれば、こんな感じです。

コピー元は、Book1の「入力フォームテスト用」シートとします。
コピー先は、Book2の「Sheet1」とします。
Book2のSheet1モジュールに第一工場さんが書いたVBAコードを一部修正して移植します。
修正する箇所は、以下の部分だけです。

With Sheets("入力フォームテスト用")
 ↓
With Workbooks("Book2").Sheets("入力フォームテスト用")

Book1とBook2は同時に開いていないといけません。
Book2のSheet1をアクティブにするとコピーが行われます。
でも、こんなので良いのでしょうか?
    • good
    • 0
この回答へのお礼

うーん・・・

返信ありがとうございます。

試してみたのですが、book2は存在していたので、book3を作成しました。

同時に開いて、
Private Sub Worksheet_Activate()
With Sheets("入力フォームテスト用") ➡ここをWorkbooks("Book3.xlsx").Sheets
.AutoFilterMode = False
.Range("A2:J2").AutoFilter
.Range("A2:J2").AutoFilter Field:=3, Criteria1:="=品名"
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1")
.AutoFilterMode = False
End With
End Sub

→部分変更してみましたが、コピーできません><。

なぜなのか教えて頂けないでしょうか?

何度もすみませんがよろしくお願い致します。

お礼日時:2017/01/11 09:21

>シート1A3へ入力したら新しいデータを自動で別のbook(品名別)にコピーしたいです。


たぶん、発想がパソコンを活用する方向ではないですよ。
もし、元データに訂正が発生した場合はどうしますか?

> 調べてみると別のシートには入力毎移すことができました。
ならば、そのシートの内容を別ブックにコピーするマクロを追加してください。

>種類も多く元のデータは月単位で新しくなるので、別のbookにしたいです。
例えば、一枚のシート上に、種類と年月を入れると希望の資料になるマクロがあれば
シートもブックも一つですみますよね。
シートやブックが増えないようにパソコンを使う事がパソコンを活かすコツです。
    • good
    • 0
この回答へのお礼

貴重なご意見ありがとうございました。

お礼日時:2017/01/10 09:21

「別のシートには入力毎移すことができた」との事ですが、どのようにやったのでしょうか?別ブックに移すのも同じようなやり方でいけそうな気がするのですが、まずは、第一工場さんがやった内容を教えてください。

    • good
    • 0
この回答へのお礼

つらい・・・

返信ありがとうございます。
シート1のAに日付・Bにコード・Cに品名・DにNo・E・F・Dと必要な情報があります

下記の方法も別の方が質問されているのを参考にしました。



Private Sub Worksheet_Activate()
With Sheets("入力フォームテスト用")
.AutoFilterMode = False
.Range("A2:J2").AutoFilter
.Range("A2:J2").AutoFilter Field:=3, Criteria1:="=品名"
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1")
.AutoFilterMode = False
End With
End Sub

やはり1から勉強しないといけないでしょうか。

お礼日時:2017/01/10 09:20

Excelを利用している場合「自動でコピー」というのは マクロでないと無理です。


マクロで処理するには VBAの知識が必須です。なので そのままの状態でやろう
と思うなら VBAの勉強をしていただくしかありません。

ただ1つだけ入力したものを毎回仕訳してバラバラの保管場所にそれぞれ分けて
保存するというのは無駄が多過ぎます。

どうも表の作り方が致命的に悪いと思います。少なくとも初心者が管理するのに
は向いていません。シート1をフォームのように使いたいということなのだと思
いますが それなら中間処理として「データを一ヶ所に集める」ことが必要です。
一ヶ所に集まった所から 必要なものを必要な時に取り出すのは簡単だからです。
それなら抽出はデータベースクエリだけで済みます。

面倒に思うかもしれませんが 全体で考えた時 今のやり方はデメリットしかない
と思います。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。

お礼日時:2017/01/10 09:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!