
見積書の商品を発注したときに、その情報を別ブックで管理したいと思っています。
見積書の発注用シートとは別のシートに管理データを蓄積しながら転記できるマクロは組めたのですが、使い勝手が悪いため全く別のブックに管理データを蓄積したいと思います。
見積書データは保存をするときは、その都度異なるファイル名で保存し、管理データはc:\管理¥集計.xlsで保存します。
途中まで作ってみたのですが、アクティブシートとブックが途中でこんがらがってしまって行き詰っています。
サンプルデータを添付いたしますので、ご教示願えませんでしょうか。
マクロとVBAについては初心者なので大変申し訳ありませんが、よろしくお願い申し上げます。

No.1ベストアンサー
- 回答日時:
マクロを載せているブックに「発注シート」が存在する
「発注シート」の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
>アクティブシートとブックが途中でこんがらがってしまって行き詰っています。
アクティブ何タラやセレクト・セレクションを使ってマクロを書いていると,そうなりがちです。
サンプルを参考に
どのブックの.何て言うシートの.どこ番地のセル に何をする
という書きぶりに慣れるよう,練習してみてください。
頂いた回答を元に調整したところ、無事に転記ができるようになりました!
マクロの書き方になれるように頑張ります。
ありがとうございました。
No.2
- 回答日時:
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 を
何にも使っていませんね。
iRow 以下の部分はサンプルデータをいくつか組み合わせていたときに残ってしまったみたいです。
オブジェクト名など、自分でわかりやすく記述することで間違えないようになるんですね。大変勉強になりました。
Worksheetなら ws、Workbookならwbにしなくてはいけないのかな?と間違って覚えていました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
【ExcelVBA】zip圧縮されたCSV...
-
【Excel VBA】書き込み先ブック...
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
オブジェクトは、このプロパテ...
-
Excelマクロ 該当する値の行番...
-
VBAで別のブックにシートをコピ...
-
ワイルドカード「*」を使うとう...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
vbaでvbaProjectのパスワード解...
-
VBA アプリケーション定義また...
-
ADOで複数のBookから抽出
-
Excel マクロ ファイルと同じシ...
-
VBA コードを実行すると画面が...
-
ACCESSVBA からExcelの他ブック...
-
エクセルマクロで任意のファイ...
-
Excel2007VBAファイルの表示に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のエクセルファイルとシー...
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
【Excel VBA】書き込み先ブック...
-
2つ目のコンボボックスが動作...
-
[Excel]ADODBでNull変換されて...
-
Excelマクロ 該当する値の行番...
-
VBA 実行時エラー 2147024893
-
Excelのマクロコードについて教...
-
Excel にて、 リストボックスの...
-
【ExcelVBA】インデックスが有...
-
VBA アプリケーション定義また...
-
【Excel VBA】表の列の値毎に分...
おすすめ情報