質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

38773閲覧

エクセル VBA 別ファイルへの書き込み

cat_junko

総合スコア44

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2015/11/12 23:17

「計測ファイル」の”最大値”と言うシートの変動最大値 と言う項目部分を別ファイルの”一覧表”に書き出したいと思っているのですが・・・

◆計測ファイル→コピー元
◆別ファイル→コピー先

コピー元から、コピー先のファイルを開くというところまでは行くのですが書き込もうとすると
該当セルが空白になってしまいます。

(画像を、追加したいのですがなぜか何度やっても乗っかってこないのでもう少ししてから再度やってみます)

とりあえず、「A」と言うファイルの”最大値”シートの特定セルを「B」というファイルの”一覧表”の特定セルに書き込むやり方が知りたいです。
また、ファイルがいくつもあるときの書き込み方法もあれば宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

VBAプログラムが「計測ファイル」に書かれていると想定して、ファイル「A」()が既に開かれている状態で実行されるVBAのコードは以下のようになります。

VBA

1Sub ブック間のデータコピー() 2 Dim wb_A as workbook, wb_B as workbook 3 Dim ws_A_Saidai as worksheet, ws_B_Ichiran as worksheet 4 5 '使用するブック、シートを変数に設定する。 6 set wb_A = ActiveWorkbook 7 set wb_B = workbooks.open("B.xlsx") 8 set wb_A_Saidai = worksheets("最大値") 9 set wb_B_Ichiran = wb_b.worksheets("一覧表") 10 11 'Aからコピー 12 ws_A_Saidai.Activate '最大値シートをActiveにする 13 Range("A2").Select '最大値の最初の項目が入っているセルを選択。A2は実際のシートに合わせて変更が必要 14 Selection.Copy 15 16 'Bにペースト 17 wb_B.Activate '別ファイルに移って 18 ws_B_Ichiran.Activate '集計表シートをActivate 19 Range("C2").Select '最大値の最初の項目が入っているセルを選択。C2は、実際のシートに合わせて変更が必要 20 ActiveSheet.Paste 21 22 wb_A.Activate '元のブックに戻る 23End Sub 24

これで、画像が挿入されているセルがうまくコピーされないのなら、以下のチェックをしてみてください。

1)AファイルのA2セルに数値や文字列などのデータを入力しておいて、VBAを実行してみてください。
結果 NG: Bファイルのセルは空白のまま
VBAのプログラムに問題があります。(申し訳ありませんが、コードを見直して下さい)

結果 Positive : Bファイルのセルにデータが入っているが、画像は見当たらない。
これは、画像が元のセルに挿入されていないからだと考えられます。次のチェックをしてみてください。

  1. Excelの画面で画像の場所は自由に動かせますので、画像の下に見えているセルがその画像が挿入されているセルと異なる場合があります。セルをコピーすれば、そのセルに挿入された画像もコピーされますが、元のセルの上に見えているだけ(別のセルに挿入されている)の画像はコピーされません。

そこで、Aファイルの最大値シートのA2セルに下記URLなどを参考にして、画像の挿入をしてください。

http://www.slownet.ne.jp/sns/area/pc/reading/pc_lesson/200611101627-1000000.html

そして、VBAを実行してみてください。

投稿2015/11/13 02:27

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cat_junko

2015/11/13 03:23

回答ありがとうございます。 質問が、分かりづらく申し訳ありません。 「画像挿入」と、言うのはここの質問画面に乗せたかったのですが何度やっても 出来なかった と、言う意味でした。
cat_junko

2015/11/13 04:59

Sub Book_Data_Copy() Dim wb_A As Workbook, wb_B As Workbook Dim ws_A_Saidai As Worksheet, ws_B_Ichiran As Worksheet '使用するブック、シートを変数に設定する。 Set wb_A = ActiveWorkbook Set wb_B = Workbooks.Open("\\●●●\●●●\●●●\●●●\●●●\01_計測内容-11月.xlsm") Set ws_A_Saidai = Worksheets("最大値") Set ws_B_Ichiran = wb_B.Worksheets("一覧表") '計測結果グラフからコピー ws_A_Saidai.Activate '最大値シートをActiveにする Range("E3").Select '最大値の最初の項目が入っているセルを選択。 Selection.Copy '01_計測内容にペースト wb_B.Activate '別ファイルに移って ws_B_Ichiran.Activate '一覧表シートをActivate Range("C7").Select '最大値の最初の項目が入っているセルを選択。 ActiveSheet.Paste wb_A.Activate '元のブックに戻る End Sub 変更したのですが、「ファイルは開く」のですが開いてからインディックスがありません とエラーになってしまいます。
coco_bauer

2015/11/13 08:17

インデックスがありませんというのは、"最大値"もしくは"一覧表"という名前のワークシートが見つからないために出たエラーと思われます。 「別ファイルの”一覧表”へ」は、『B.xlsxに既に"一覧表"というワークシートが作られているので、そこに』と理解したのですが、『B.xlsxに"一覧表"というワークシートを作成して、そこに』という事であれば、ワークシートを作るコードが必要です。
guest

0

ファイルを開くと開いた方のブックがアクティブになるので、
コピー元のセルを参照しているつもりが、コピー先となっているのでは
ないでしょうか?

コピー元とコピー先のブックをオブジェクト型変数で宣言しておくと
間違えにくいと思います。

Dim Inputwb As Workbook
Dim Outputwb As Workbook
Set Inputwb = Workbooks("Book1.xlsx")
Set Outputwb = Workbooks("Book2.xls")

ブックのオープン時にセットすることもできます。
Set Outputwb = Workbooks.Open("Book2.xlsx")

投稿2015/11/12 23:56

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

検索ワード
excel vba コピー ペースト
にて、Google検索してみてください。
事例が見つかります。
その上で困った部分、不明点ががあれば、
具体的に質問を追加してみてください。

ワークブックを開く、閉じる方法は、
excel vba workbook open
excel vba workbook close
で、検索できます。

投稿2015/11/12 23:22

編集2015/11/12 23:24
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問