web-dev-qa-db-ja.com

VBAで別の(開いているまたは閉じている)ワークブックを参照し、値を引き戻すにはどうすればよいですか? -Excel 2007

基本的に、私は別のワークブックからかなりの数の図を収集する必要があります(これはユーザーフォームで見つかり、開くことができるため、場所と名前は可変です)。このデータをグラフに入力する必要があるため、これにはVBAを使用する必要があります。私はそれを行うために他のワークブックを開く必要がないことを望みますが、それがはるかに簡単であれば、それでも問題ありません。

ユーザーフォームが完了して正常に動作し、グラフにデータを入力するために必要なコードがありますが、VBAが他のブックからデータを取得して必要な変数に割り当てることができません。

VBAにこれを実行させる方法についてのアイデアはありますか?よろしくお願いします。

おかげで、

ロブ。

8
Rob A

ファイル内のデータにアクセスする場合は、何らかの方法でファイルを開く必要があります。明らかに、1つの方法は、Excelアプリケーションインスタンスでそれを開くことです。例:-

(テストされていないコード)

Dim wbk As Workbook
Set wbk = Workbooks.Open("C:\myworkbook.xls")

' now you can manipulate the data in the workbook anyway you want, e.g. '

Dim x As Variant
x = wbk.Worksheets("Sheet1").Range("A6").Value

Call wbk.Worksheets("Sheet2").Range("A1:G100").Copy
Call ThisWorbook.Worksheets("Target").Range("A1").PasteSpecial(xlPasteValues)
Application.CutCopyMode = False

' etc '

Call wbk.Close(False)

別の方法としては、Excel ADODBプロバイダーを使用してファイルへの接続を開き、SQLを使用して目的のシートからデータを選択する方法がありますが、とにかくExcel内から作業しているので、単にワークブックを開くのではなく、これを行う理由。 Workbooks.Open()メソッドには、ブックを読み取り専用で開くなどのオプションのパラメーターがあることに注意してください。

11
Adam Ralph