アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelVBAについて質問致します

2つの同じファイル名のExcelファイルが
別々のファイルに有り
仮に片方を①、もう片方を②、マクロを書き込むファイルを③とします
①②には一部分だけ違った内容が書き込まれています
書式、書き込みセル位置は全く同じです

②のファイルの中身を③に書き込み
(一部関数が有るので値のみ書き込み)
①と違う部分を赤く着色したいのですが上手く行きません

①のファイルは名前の変更が可能です
ファイル名には最後にインプットと有りますが
同じ名前の組み合わせが大量に有るので
起動時に2つのファイルを選択するか
開いている2つのファイルを対象にしたいです

事務所のpcでダウンロード等は出来ないので
フリーソフトではなくコードで教えて頂けないでしょうか
宜しくお願い致します

A 回答 (4件)

大変お待たせいたしました。

こんな感じではいかがでしょうか?
---------------------------------------------------------------------------
Sub ファイル比較()
Dim 比較元 As Variant
Dim 比較先 As Variant
Dim ファイル名 As String
Dim 行終 As Long
Dim 列終 As Long
Dim 行 As Long
Dim 列 As Long
Sheets(1).Select
Cells.Delete Shift:=xlUp
ChDir ThisWorkbook.Path
比較元 = Application.GetOpenFilename("Excelブック,*.xls;*.xlsx", , "比較元のファイルを指定して下さい", , False)
If 比較元 = False Then Exit Sub
ChDir ThisWorkbook.Path
比較先 = Application.GetOpenFilename("Excelブック,*.xls;*.xlsx", , "比較先のファイルを指定して下さい", , False)
If 比較先 = False Then Exit Sub
ChDir ThisWorkbook.Path
ファイル名 = Dir(比較先)
Workbooks.Open Filename:=比較先
Sheets(1).Select
Cells.Copy
ThisWorkbook.Activate
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Windows(ファイル名).Activate
ActiveWorkbook.Saved = True
ActiveWindow.Close
With ActiveSheet.UsedRange
行終 = .Rows(.Rows.Count).Row
列終 = .Columns(.Columns.Count).Column
End With
ファイル名 = Dir(比較元)
Workbooks.Open Filename:=比較元
Sheets(1).Select
With ActiveSheet.UsedRange
If 行終 < .Rows(.Rows.Count).Row Then 行終 = .Rows(.Rows.Count).Row
If 列終 < .Columns(.Columns.Count).Column Then 列終 = .Columns(.Columns.Count).Column
End With
Application.ScreenUpdating = False
With ThisWorkbook.Sheets(1)
For 行 = 1 To 行終
For 列 = 1 To 列終
If .Cells(行, 列).Value <> Cells(行, 列).Value Then
.Cells(行, 列).Interior.ColorIndex = 3
Else
.Cells(行, 列).Interior.ColorIndex = xlNone
End If
Next
Next
End With
Application.ScreenUpdating = True
ActiveWorkbook.Saved = True
ActiveWindow.Close
Range("A1").Select
End Sub
---------------------------------------------------------------------------
※ シート名は関係なく一番左側のシートで対応します。
※ ファイル名も同じで無くてもよく、簡単に選択できるようにしました。
※ 比較するファイルは、マクロのファイルが有るフォルダーのサブフォルダにおいた方がファイル指定が楽になります。
※ もしかしたら比較元と比較先が逆かも知れません。適当に直して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます!
恐縮なのですが
元々着色されてた部分をそのままにしたいのですが可能でしょうか?
可能であればどの部分をどの様に変えれば良いでしょうか?

お礼日時:2017/02/23 23:56

余計な事をしてしまいましたね。

次の連続している2行を削除して下さい。
「Else」
「.Cells(行, 列).Interior.ColorIndex = xlNone」
    • good
    • 0
この回答へのお礼

ありがとうございます!!
理想の内容でした!

お礼日時:2017/02/24 00:05

・「値のみ書き込み」ですと以前にセルが赤に塗り替えられていた場合は、そのまま赤が残ってしまいます。

マクロの有るブックの最初のシートのセルを全削除してしまった方が良いと思います。いかがでしょうか?
・ 比較するシートですが結合されたセルはありますか?
    • good
    • 0
この回答へのお礼

申し訳ありません
今、確認した所関数は入っていなかったので値のみじゃなくて大丈夫です
むしろそのまま貼り付けの方が有難いです

最初のシートのセルを全削除する方が助かります

結合セルは有りません

宜しくお願い致します

お礼日時:2017/02/23 22:42

「別々のファイルに有り」は「別々のフォルダーに有り」の間違いだとして、フォルダー指定やファイル名はどのようにするのですか?


また比較するブックはのシート構成は1枚だけでしょうか?
赤く着色するのは「①」「②」「①と②両方」のどれになりますか?
    • good
    • 0
この回答へのお礼

申し訳ありません
別々のフォルダです

フォルダの指定は
無理であれば何処でも構わないのですが出来ればVBA起動時に選択出来る様にしたいです

シート構成はsheet1に比較対象が有ります
sheet2以降は無視で問題有りません

着色は②の内容を書き込んだ③のエクセルに行いたいです

お礼日時:2017/02/23 18:44

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