ここから本文です

Excel2007でSheet1に下のような表(横に10マス、縦に1~30マス程度で不定)をつくりフ...

wai********さん

2017/2/908:17:07

Excel2007でSheet1に下のような表(横に10マス、縦に1~30マス程度で不定)をつくりファイル"A"としました。

そこで、
マクロボタンを押すことにより、
サーバーに保存してあるファイル"B"のSheet1に
ファイル"A"のSheet1のデータのみ累積保存をして、ファイル"B"を終了したいと思います。
その時、ID(C列)がすでに存在する時は、その列は書き換えをし、
IDが存在しない時は、下方に累積保存させたいと思っています。
このようなことは可能なのでしょうか。ご教授いただければ幸いです。

Sheet1,B&quot,A&quot,Excel2007,ファイル,C&quot,Rows.Count

閲覧数:
29
回答数:
2

違反報告

ベストアンサーに選ばれた回答

2017/2/909:41:40

コード例です。


Option Explicit
Sub Sample()
Const BkBPath As String = "C:\Work\B.xlsx" 'ブックBのフルパス名(適宜変更して下さい)
Dim bkA As Workbook, bkB As Workbook
Dim stA As Worksheet, stB As Worksheet
Dim rA As Long, rB As Variant

'高速化のためエクセルの再描画を抑止する
Application.ScreenUpdating = False

Set bkA = ThisWorkbook
Set stA = bkA.Worksheets("Sheet1")
Set bkB = Workbooks.Open(BkBPath)
Set stB = bkB.Worksheets("Sheet1")

'ブックAの3行目からC列の最終行まで繰り返す
For rA = 3 To stA.Range("C" & Rows.Count).End(xlUp).Row
With stA.Range("C" & rA)

'C列が空欄でないとき
If .Value <> "" Then

'ブックBのC列から一致するIDを探す
rB = Application.Match(.Value, stB.Columns("C"), 0)

'見つからなかったときはブックBの最下行+1を転記先とする
If IsError(rB) Then rB = stB.Range("C" & Rows.Count).End(xlUp).Offset(1).Row

'ブックAのC列から10列分をブックBに転記する
.Resize(, 10).Copy
stB.Range("C" & rB).Resize(, 10).PasteSpecial

End If
End With
Next rA

'ブックBを上書き保存して閉じる
bkB.Close True

'エクセルの再描画を再開する
Application.ScreenUpdating = True
End Sub

コード例です。


Option Explicit
Sub Sample()
 Const...

  • 質問者

    wai********さん

    2017/2/911:40:10

    nagato_blue_noahさん 早速にありがとうございます。
    考えていたように動作しました。
    今後ともよろしくお願いします。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tak********さん

2017/2/908:48:14

可能か不可能で言えば可能です。
サーバーの保存形式やデータ出力形式により多少、書き換えまでのプロセスに係るsourceが難しくなります。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる