• ベストアンサー

エクセルファイルの比較

エクセル2000を使用しています。 データーの入ったファイルを100個以上、グラフ化するのですが、作業に入ってから、データーに誤りがあり、幾つか修正し、新しいファイルを送ってもらったのですが、修正した分だけでなく、全ファイル届きました。 旧ファイルのデータと新ファイルのデータがあっているかを比べるようなフリーソフトがあったら教えて下さい。 (更新日時を確認するという方法もありますが、当てにならないので)

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

それらしきソフトもないようだし、回答も無いので作ってみました。 シートの内容がわからないので前提付です。 (1)今は各Bookのシート1(シート名:Sheet1)を対象としています。 (2)最初の100個以上のファイルを特定のフォルダに入れます。 (3)修正された100個以上のファイルを別のフォルダに入れます。 (4)新しいファイルと古いファイルは同じファイル名で、個数は同じとしています。 検証するためのBookを作ります。 (1)新規BoookでSheet1のみにします。他は削除。 (2)下記のコードをVBEの標準モジュールに貼り付けます。       ツール→マクロ→Visual Basic Editor でVBE画面に移り、       挿入→標準モジュール で標準モジュールを挿入します。 (3)モジュールの『***』部分を(2)、(3)のフォルダ名に変更します。 (4)シートに戻り、ツール→マクロ→マクロ でSheetCheckを実行します。 照合結果をシート1に書き出します。 ファイルサイズを調べたり、新旧のシートをコピーしてきて照合等をしています。 ファイルサイズ、入力範囲、入力個数、個々のセルの値をチェックしています。                       (Excel2000で動作確認しました) ↓ここから Dim TargetBook As String              '変更の有無を調べるBookの1つ Dim myBookname As String              'このブック Const srcForder = "D:\000work_xls\0005\Hikaku1"   '*** 元のブックがあるフォルダ Const chgForder = "D:\000work_xls\0005\Hikaku2"   '*** 変更後のブックがあるフォルダ Public Sub SheetCheck()   Dim srcCheckArea, chgCheckArea As Range     '元のシートと変更後シートの入力範囲   Dim chgRg As Range               '変更後シートのセル   Dim ws1 As Worksheet              '結果出力するシート1   Dim rw As Long                 'シート1の行カウンタ   Application.ScreenUpdating = False   Set ws1 = Worksheets("Sheet1")   myBookname = ThisWorkbook.Name   TargetBook = Dir(chgForder & "\" & "*.xls")   While Len(TargetBook) > 0     rw = rw + 1: ws1.Range("A" & rw) = TargetBook     'シートをコピーする     SheetCopy srcForder, "srcSheet"    '最初のブックからSheet1をコピー     SheetCopy chgForder, "chgSheet"    '変更されているかもしれないブックからSheet1をコピー     '各シートの使用範囲を定義     Set srcCheckArea = Worksheets("srcSheet").UsedRange     Set chgCheckArea = Worksheets("chgSheet").UsedRange     '内容をチェック     If FileLen(srcForder & "\" & TargetBook) <> FileLen(chgForder & "\" & TargetBook) Then       ws1.Range("B" & rw) = "ファイルサイズが異なります"    'ファイルサイズのチェック     ElseIf srcCheckArea.Address <> chgCheckArea.Address Then   '入力範囲のチェック       ws1.Range("B" & rw) = "入力範囲の変更あり"     ElseIf srcCheckArea.Count <> chgCheckArea.Count Then     'データ数のチェック       ws1.Range("B" & rw) = "データ数の変更あり"     Else                             '個々のセルのチェック       For Each chgRg In chgCheckArea         If chgRg.Text <> Worksheets("srcSheet").Range(chgRg.Address).Text Then           ws1.Range("B" & rw) = "データ値の変更あり"           Exit For         End If       Next     End If     Application.DisplayAlerts = False 'シートを削除     Sheets("chgSheet").Delete     Sheets("srcSheet").Delete     '次のブック     TargetBook = Dir   Wend   ws1.Select   Application.ScreenUpdating = True End Sub 'シートをコピーしてシート名を変更する(Copyの前のSheet1が対象シート) Public Sub SheetCopy(xlsFolder As String, newSheetName As String)   Workbooks.Open Filename:=xlsFolder & "\" & TargetBook   'シート1をコピー。最初のSheet1がデータファイルのSheet1   Sheets("Sheet1").Copy After:=Workbooks(myBookname).Sheets(1)   Sheets("Sheet1 (2)").Name = newSheetName   Windows(TargetBook).Activate   ActiveWindow.Close End Sub

kapakapa
質問者

お礼

大変遅くなりましたがご回答ありがとうございます。 なかなか回答がなかったものであきらめておりました。 早速試してみます

関連するQ&A

  • 複数のエクセルファイルの数値をひとつのエクセルファイルでまとめるには?

     Winxp、Excel2003を使っています。複数のエクセルファイルから特定のセルの数値を抜き出し一つのファイルにまとめることは可能でしょうか?  具体的に申し上げますと、データ集計のため、複数のエクセルファイル(500個程度)から125R×1Cのセル内の数値(○×)を抜き出し一つの新しいデータ集計用のエクセルファイルを作成する作業をしています。一つずつコピー&ペーストで作成するとかなりの時間がかかってしまい困っています。    上記のような作業を簡単に、正確に行うためのオススメの方法やフリーソフトがありましたら教えて頂けますでしょうか。お願い致します。

  • エクセルでファイル比較をしたいのですが。

    2つのエクセルのファイルがあります。 一つは、約2万件の会社データ(郵便番号、住所、社名<漢字・ひらがな>)、もう一つは約2000件の会社データ(郵便番号、住所、社名<漢字・ひらがな>)です。 前者をAファイル、後者をBファイルとします。 Aファイルのデータが新しいので、これを元にBファイルの内容(郵便番号、住所)を更新したいと思います。 どうすれば、エクセルを使って、できるでしょうか?

  • 2つのエクセルファイルの比較

    仕事で使用している顧客一覧(エクセルファイル)があります。 このファイルは会社のシステムで自動的に生成され、 毎日その日の最新版が日付ごとのフォルダ(今日だったら20080527) に上書きされます。ファイル名は同じです。 そこで昨日のファイルと本日のファイルに変更点が あればどのような形でも良いので分かるようにしたいと思っています。 変更点の色が変わって2つのファイルが比較できるフリーソフトを試してみましたが、 当然なのですが、新規の顧客が従来の顧客の間に入ってしまうと、 順番が変わりそれ以降の顧客のデータ全て変更点とみなされてしまいます。 できれば名前が入っている列、例えばB列をキーとし、 新規の顧客データや、従来の顧客のデータの順番が入れ替わっても 変更点のみ色が変わるようにするにはどのようにすればよいでしょうか。 また、そのような機能を満たしているソフトなどありましたら、 教えていただけると大変助かります。

  • グラフを1日ごとに更新したい

    エクセルで作ったグラフをHPに載せています 現状手動修正で更新作業をしていますが 簡単に更新できる方法があれば教えてください 以下詳細です。 1.自分でエクセルグラフを作る  (エクセルにこだわってませんが、あるサイトよりデータを入手し   自分なりにグラフ化するためWEBクエリを使ってます) 2.自分のHPにエクセルのグラフ部分だけを載せる 3.日々データが更新されるので更新作業を簡素化したい   (設定すると自動で更新されるようにする)   (常時過去1週間のデータを取り込みたい    例     本日は 1月1日~1月8日までの分    あすは 1月2日~1月9日までの分などのようにしたい) http://www.sigma358.net/demo/stock/119/bb?mo=6 このようなグラフを日々自動で表示させたいのです。

  • エクセルのファイル内データ比較

    データがエクセルファイルなのでここで質問いたします. エクセルファイルが300個ぐらいあります. この中で基本になるファイルは50個ぐらいあります. その50個のファイルの1つと残り250個ぐらいのファイル内データを比較できる方法はないでしょうか? 当然一気に比較する方法ではなくてもかまいません. 現在1つ1つ開いて見て比較する途方もない作業で死にそうです. ファイル内データはマクロもなければ計算式すらありません. 数字データがA1~A90,B1~B90まで入っています. データ数は全ファイル共通となっています. どなたか良い知恵を授けてください.お願いします.

  • PowerPointにExcelファイルのデータをリンクさせるには?

    Excel2002を使用してアンケートのデータを集計しています。そのデータを利用して、プレゼンテーション(PowerPoint2002使用)を作成したいのです。昨年作成したプレゼンテーションがあり、それを変更したいのですが、データを差し替えると、もとデータの配置がバラバラになってしまいます。 配置は以下のようにしたいのです。 グラフ(Excelで作成したものをリンク)  表(Excelで作成したものをリンク) グラフ(Excelで作成したものをリンク)  表(Excelで作成したものをリンク) グラフ(Excelで作成したものをリンク)  表(Excelで作成したものをリンク) ※グラフ部分は、昨年はオートシェイプで円グラフを描いていました。 ※表部分は、昨年はPowerPointの表で作成していました。 このように、左側にグラフを3つ、右側に表を3つ、Excelファイルが更新されるとPowerPointのファイルも更新されるように、リンクさせたいのです。スライドのレイアウトの作業ウィンドウの中には、4つのコンテンツというレイアウトがありますが、これを6つのコンテンツに変更することはできるのでしょうか?コンテンツのプレースホルダを追加することはできますか? コンテンツの枠内に、リンク貼り付けすると配置が乱れません。 PowerPoint初心者のため、とても苦戦しています。どなたか良い方法がございましたら、ご指導お願いいたします。

  • エクセルファイルが表示しません。ファイル破損でしょうか

    ビスタの2007で作成し、97-2003ワークシートで保存したものです。エクセルの画面は出ますがデータは表示されず、白紙状態です。ファイル名は正常 サイズは1097kbです。更新日時は開こうと試みた時に更新されています。開く方法があるのでしょうか? それともファイルが壊れたのでしょうか。重要データなので是非とも復元したいと思っておりますので、どうぞよろしくお願い致します。

  • エクセルファイルの回復について

    すいません 助けて下さい エクセルをデスクトップから外付けのハードディスクに上書き保存中に 印刷しようと、エクセルのファイルを開いたら、データーが見れなくなりました 開こうとすると 「作業中の内容は失われた可能性がありますエクセルは作業内容の回復を試みる ことができます。」とでてしまいエラー報告後、 ドキュメントの回復に 題名のオリジナル ユーザーによる最終保存日時 が出ているのですが、クリックしてもファイルを読み込ませんと出てしまいます どなたか、分かる方、お願いいたします かなり、あわてて、おります 助けて下さい

  • エクセルの複数ファイルを連動して修正する方法は?

    こんにちわ。 さっそくですが質問させて頂きたいと思います。 エクセルで作成された名簿ファイルA,B,Cがあるとします。 A,B,Cのファイルに共通するのは「住所」です。 たとえば、AのファイルのNo.1の住所を修正したとき、 今はB,CのNo.1を手入力で住所を修正しています。 これを、Aを修正すると自動的にB,Cのファイルが更新されるようにすることは可能ですか? 私はエクセルは得意ではないんですけど、結構難しい作業でしょうか。 アクセスはそういうのが得意なソフトだと思うのですが、これをエクセルでやりたいのです。※エクセル2002です。 どうぞ宜しくお願い致します。

  • 突然エクセルのデータが何ヶ月も古いものに変わってしまいました。

    エクセルで自作の家計簿をつけており、毎日のように更新していました。 昨日の夜も通常通りファイルを更新し、終了したのですが、今日そのファイルを開いてみると、データが2月までで、それ以降のものが消えてしまっていました。 更新日時を確認すると、2月になっています。 データを誤って消してしまっただけなら、更新日時は昨日になっているはずですよね? 突然何ヶ月も前のデータになってしまって困っております。 何かいつもと違うことといえば、「更新プログラムをインストールしてシャットダウン」をしたことくらいです。 ちなみに、他のエクセルファイルは問題ないようです。 Vistaで、Excel2003使用です。 原因や対処法など、分かる方がいらっしゃったら是非教えていただければ助かります。 どうぞよろしくお願いいたします。

専門家に質問してみよう