閉じたブックからデータを引き出し
別のブックの閉じたファイルからデータを抽出することは、ほとんどのExcelユーザーからの一般的な要求です。彼らは、閉じたファイルからデータをプルまたは統合したいと考えています。ただし、これは不可能です。この問題を解決するのに役立つ回避策があります。解決策はマクロコードを使用することです。
質問:私は毎日、あるファイルから別のファイルにデータをコピーすることに時間を費やしています。 「Open.xls」と「Closed.xls」の2つのファイルがあり、VBAコードを介して「Closed.xls」から「Open.xls」にデータをコピーしたいと思います。
===
知っておくべき重要事項:
まず、閉じたブックの「Usedrange」、つまり開いたブック内の「Closed.xls」を知っておく必要があります。 「open.xls」「Open.xls」ワークブック内の「Closed.xls」ワークブックのUsedrangeでIF関数を使用でき、「Closed.xls」ワークブックからデータを抽出します。*参照セルが空白の場合、#N / Aが配置されます。 specialcellsメソッドを使用すると、すべての#N / Aエラーを削除し、数式を値に変更できます。最初に、2つのExcelファイルを保存します。1)Open.xls 2)パス「D:\ Test」のClosed.xls 「フォルダ」以下は、「Closed.xls」ワークブックのスナップショットです。
「Closed.xls」ファイルから「Open.xls」ファイルにデータを自動的に保存するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。コードグループから、[VisualBasic]を選択します
-
ThisWorkbook(Closed.xls)の以下のコードをコピーします
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
-
「Open.xls」のデータをプルするには、標準モジュールに次のコードをコピーします
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells(1, 1) With Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
-
ThisWorkbook(Open.xls)の次のコードをコピーします
Private Sub Workbook_Open() Run "Importdata" End Sub
これで、VBAコードがすべて設定されました。ファイル名「Open.xls」を開くだけです。以下は、「Open.xls」ファイルのスナップショットです。
コードはA1.usedrangeからのセルコピーに限定されません。コードは開始範囲を選択し、完全に正常に機能します。ファイルはダウンロード可能です。ぜひお試しください。
===
結論:VBAコードを使用すると、宛先のブックを開かなくてもデータ抽出タスクを自動化でき、手動でコピーして貼り付ける必要がなくなります。
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください