
Sub SumValues()
Dim file1 As Workbook
Dim file2 As Workbook
Dim file3 As Workbook
Set file1 = Workbooks.Open("file1.xlsx")
Set file2 = Workbooks.Open("file2.xlsx")
Set file3 = Workbooks.Open("file3.xlsx")
file3.Sheets(1).Range("A2").Value = file1.Sheets(1).Range("A2").Value + file2.Sheets(1).Range("A2").Value
file3.Sheets(1).Range("B2").Value = file1.Sheets(1).Range("B2").Value + file2.Sheets(1).Range("B2").Value
file3.Sheets(1).Range("C2").Value = file1.Sheets(1).Range("C2").Value + file2.Sheets(1).Range("C2").Value
file1.Close
file2.Close
file3.Close
End Sub
上記コード内容でfile1Sheet1a2=10、b2=20、c2=30とfile2Sheet1a2=40、b2=50、c2=60というファイルが二つあります。この二つのファイルのa2、b2、c2の値を合計した値をfile3のa2、b2、c2に合計値を表記するVBAコードを作成していただいたものです。
Excel のブックを開きます。
1.[Alt]+[F11] キーを押して VBA エディタを開きます。
2.左側の「Project Explorer」ウィンドウにある「Microsoft Excel Objects」を右クリックして、[Module] を選択します。
3.新しいモジュールが作成されたら、その中に上記の VBA コードをコピー&ペーストします。
4.[Alt]+[Q] キーを押して VBA エディタを終了します。
5.各セルにデータを入力した後、マクロを実行するために、[Alt]+[F8] キーを押します。
6.Macros」ダイアログボックスから「SumCells」マクロを選択し、[Run] を選択します。
7.合計値が表示されたら、file3 シートに結果を保存します。
上記 5.まで行えば簡単に行くのかと思ったのですが、全然だめでして、6.,7.の内容カ所が出てこないように思っており、そこがうまくいってないからなのでしょうか?
どうか張り付けた後のエクセルの手続き順序を教えてください。
コード自体にも問題があるのでしょうか
コードはfile3に張り付けました
VBAというフォルダーにfile1,file2,file3をまとめて入れております。このように一つのフォルダーにファイルを納めないといけないですか?
ファイル形式はxlsm
エクセルは365を使用しております。
コードに関しては「chatGPT」よりの回答をそのままコピー貼り付けです。
どうか基本がまったっくわかっていないので、ご迷惑かけますが何卒お教えください。お助けください。
No.1ベストアンサー
- 回答日時:
コードの基本はできてそうですがやっぱり完璧ではないですね...でもaiでここまでできたなら上出来です。
チョー覚えにくそうなショートカットだらけの張り付けだが一応間違えてはいないその方法もaiに聞いたのでしょうか。
技術の進歩に感動しますな。
このプログラムを日本語で言うと、
ブックを次の名前で”file1”、”file2”、”file3”を開く(パスを指定していないのでここで多分エラー)
A2、B2、B3の合計をfile3ブックに入れる(ここは改行がなければ完璧だがあるのでエラー)
全てのブックを閉じる(保存しないで閉じるので結局何もしてないことになる。まあ保存するか聞かれるけど。)
つまり全てにおいて惜しいプログラムです。
正直質問の様子だとファイルパスを入れてとか保存するプログラムを入れてとか直し方を言っても出来ないと思うので詳しい人と直していったほうがいいと思います。
そしてこのプログラム名はSumValuesなのでSumCellsマクロはなくて当然です。SumValuesを選んでください。上でも書きましたがエラーだらけで実行できないと思いますが。。。
張り付けもfile3に行うとopenした時にリセットされて多分プログラム停止すると思います。このプログラムだともうひとつの全く関係ないブックで実行する必要があります。
色々言いましたがまとめると詳しい人に聞いてください(全く役に立たなくてすみません、)
どうしても周りにわかる人がいないなら........詳しい回答が来るのを願っております笑
No.2
- 回答日時:
こんばんは
いろいろありそうですが・・
>6.,7.の内容カ所が出てこないように思っており、
>そこがうまくいってないからなのでしょうか?
文章に曖昧なところがあるので、実際の状況が正確にはわかりかねますが・・
>5.各セルにデータを入力した後、マクロを実行するために、[Alt]+[F8] キーを押します。
[F8] キーはエディタ画面での「ステップイン」コマンドです。
シートから実行する場合は、リボンの「開発」-「マクロ」からダイアログを開いてください。
(あるいは、Alt L P M キーを押し下げ)
>6.Macros」ダイアログボックスから「SumCells」
>マクロを選択し、[Run] を選択します。
ご提示のプロシージャは「SumValues」なので、それを実行したければ「SumValues」を選択する必要があります。
>コード自体にも問題があるのでしょうか
>コードはfile3に張り付けました
コードがfile3にあるのなら、実行する時にはfile3が開いた状態でしょうから、VBAからfile3を開く必要はないと思われます。
一番の問題点は、各ブック名を指定しただけでブック開こうとしていることでしょう。
(大抵の場合は、ご提示のままではエラーになると想像します)
ブック名だけでなく、ファイルのフルパスで指定するのが確実です。
>このように一つのフォルダーにファイルを納めないといけないですか?
フルパスで指定すれば、同じフォルダーでなくてもかまいません。
>ファイル形式はxlsm
マクロを有効にするブックの拡張子はxlsmなので問題ないのですが、ご提示のコードでは3つのブックの拡張子はxlsxとなっており、更には、
>コードはfile3に張り付けました
とも矛盾しています。
拡張子が違っていると「ファイルが見つからない」のでエラーが発生します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
drtファイルはどうしたら開...
-
window.open でのファイル指定方法
-
ファイル全てを .xlsm に変更し...
-
DOSコマンドで、標準出力を出力...
-
VBAでCSVファイルを途中行まで...
-
パスから最後のディレクトリだ...
-
batファイルでrenameができませ...
-
sprintfで10進数を桁数指定で16...
-
Windowsで複数のファイルを同じ...
-
バッチファイルの作り方(CSV→...
-
タブの色を変更する方法
-
エラーログ「\\x8ew\\x92\\xe8...
-
ANSI Cでファイル名、ディレク...
-
テキストファイルから日本語部...
-
JavaでCSVファイルを高速に読む...
-
chdirがうまくできない
-
C言語で特定の行を抽出する方法...
-
awkスクリプトでダブルクォーテ...
-
openした後、closeしないでプロ...
-
VB6.0でDB接続する際に切断時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル全てを .xlsm に変更し...
-
python renameについて
-
fgets で値が取得できない
-
drtファイルはどうしたら開...
-
window.open でのファイル指定方法
-
ファイルの存在の有無を確かめ...
-
VBAコードを張り付け後のエクセ...
-
複数ファイルを1つにするシェ...
-
csvファイルの横方向への改行に...
-
WindowsでPerlをする際,1行目の...
-
AutoNts
-
JSP URLに表示される拡張子 .jsp
-
CGIがうまく動作しません。原因...
-
powerpointでwebページとして保...
-
MySQLにバイナリデータを正常に...
-
巨大なテキストの最終行を取得...
-
PerlでのUseless use...
-
Cでのファイルからの入力および...
-
foreach内での変数の扱い?
-
一つのテキストファイルと複数...
おすすめ情報