プロが教えるわが家の防犯対策術!

見積書の商品を発注したときに、その情報を別ブックで管理したいと思っています。
見積書の発注用シートとは別のシートに管理データを蓄積しながら転記できるマクロは組めたのですが、使い勝手が悪いため全く別のブックに管理データを蓄積したいと思います。

見積書データは保存をするときは、その都度異なるファイル名で保存し、管理データはc:\管理¥集計.xlsで保存します。

途中まで作ってみたのですが、アクティブシートとブックが途中でこんがらがってしまって行き詰っています。
サンプルデータを添付いたしますので、ご教示願えませんでしょうか。

マクロとVBAについては初心者なので大変申し訳ありませんが、よろしくお願い申し上げます。

「マクロを利用して別ファイルにデータを書き」の質問画像

A 回答 (2件)

マクロを載せているブックに「発注シート」が存在する


「発注シート」のA1,B2,C3セルの内容を,c\管理\集計.xlsのSheet1に転記する


sub macro1()
workbooks.open("C:\管理\集計.xls")

with workbooks("集計.xls").worksheets("Sheet1").range("A65536").end(xlup).offset(1)
.value = thisworkbook.worksheets("発注シート").range("A1").value
.offset(0, 1).value = thisworkbook.worksheets("発注シート").range("B2").value
.offset(0, 2).value = thisworkbook.worksheets("発注シート").range("C3").value
end with

workbooks("集計.xls").close savechanges:=true
end sub




>アクティブシートとブックが途中でこんがらがってしまって行き詰っています。

アクティブ何タラやセレクト・セレクションを使ってマクロを書いていると,そうなりがちです。
サンプルを参考に
どのブックの.何て言うシートの.どこ番地のセル に何をする
という書きぶりに慣れるよう,練習してみてください。
    • good
    • 0
この回答へのお礼

頂いた回答を元に調整したところ、無事に転記ができるようになりました!
マクロの書き方になれるように頑張ります。
ありがとうございました。

お礼日時:2010/04/18 20:00

No.1 さんが書かれたことがすべてなのですが、


実際の方法として私が好んで実践しているのを紹介させてください。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dim 見積書xls As Workbook, 集計xls As Workbook
Dim 販売記録 As Worksheet, 見積Data As Worksheet
Dim 販売記録_行 As Long, 見積Data行 As Long

Set 見積書xls = ThisWorkbook
Set 集計xls = Workbooks.Open ("C:\集計\集計.xls")
Set 見積Data = 見積書xls.Worksheets("見積Data")
Set 販売記録 = 集計xls.Worksheets("販売記録")

販売記録_行 = ああだこうだ(省略)

見積Data.Range("B21:S30").Copy 販売記録.Cells(販売記録_行, 1)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

すこし冗長ですが、こんな風に書けば間違えずコーディングできます。
ポイントは2点
(1) 日本語で意味の分かる変数名、関数名を使う
(2) オブジェクト(Worksheetなど)は親の名前もハッキリ書く
  VBA初心者はオブジェクトの親子関係がよくわからないものですが
  このように書く習慣をつけると、自ずと親子関係が分かり、上達が早いです。

余談ですが、『iRow = 』以下の4行は結果として得られた iRow を
何にも使っていませんね。
    • good
    • 0
この回答へのお礼

iRow 以下の部分はサンプルデータをいくつか組み合わせていたときに残ってしまったみたいです。

オブジェクト名など、自分でわかりやすく記述することで間違えないようになるんですね。大変勉強になりました。
Worksheetなら ws、Workbookならwbにしなくてはいけないのかな?と間違って覚えていました。

ありがとうございました!

お礼日時:2010/04/18 20:05

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