別のブックの閉じたファイルからデータを抽出することは、ほとんどの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」ワークブックのスナップショットです。

img1

「Closed.xls」ファイルから「Open.xls」ファイルにデータを自動的に保存するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。コードグループから、[VisualBasic]を選択します

img2

  • 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

img3

  • 「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

img4

  • ThisWorkbook(Open.xls)の次のコードをコピーします

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

これで、VBAコードがすべて設定されました。ファイル名「Open.xls」を開くだけです。以下は、「Open.xls」ファイルのスナップショットです。

img6

コードはA1.usedrangeからのセルコピーに限定されません。コードは開始範囲を選択し、完全に正常に機能します。ファイルはダウンロード可能です。ぜひお試しください。

===

結論:VBAコードを使用すると、宛先のブックを開かなくてもデータ抽出タスクを自動化でき、手動でコピーして貼り付ける必要がなくなります。

rar icon

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください