AccessのVBAからExcelのブック(通常既に開いています)のセルの値を参照するものを作成
しているのですが、うまくいきません。ご教授頂けないでしょうか。
Set Set myXlsSheet = myXls.Worksheets("sheet1") の行がインデックスが有効範囲にあり
ません。とエラーがでます。
ここで既に開いているExcelブック自体をWorkbooks.open を使用せずにオブジェクト自体をset
して、各シート値を参照することができないでしょうか。
現状できているコード
Dim myXls As Object
Dim myXlsSheet As Object
Set myXls = CreateObject("Excel.Application")
Set myXlsSheet = CreateObject("Excel.Sheet")
myXls.Visible = False
' Set myXlsSheet = myXls.Workbooks.Open("C:\test.xls", 1) 'これだとまた同じファイルを開いて処理するため処理が遅くなる。
Set myXls = myXls.Workbooks("test.xls") 'インデックスが有効範囲にありません。のエラーがここで出ます。
Set myXlsSheet = myXls.Worksheets("sheet1")
Debug.Print myXls.WorksSheets("sheet1").Cells(1, 1).Value
myXls.Close
Set myXls = Nothing
myXls.Quit
Set myXlsSheet = Nothing
MsgBox "完了"
No.1
- 回答日時:
dim myxls as object
dim mybook as object
dim mysheet as object 'ダミー
set myxls = createobject("Excel.Application") 'これはエクセルアプリケーションオブジェクト
set mybook = myxls.workbooks.open("c:\test\test.xls") 'どこかではブックを開かないと始まらない
debug.print mybook.worksheets("Sheet1").cells(1, 1).value
mybook.close false
set mybook = nothing
myxls.quit
set myxls = nothing
msgbox "quit"
No.2ベストアンサー
- 回答日時:
> ここで既に開いているExcelブック自体をWorkbooks.open を使用せずにオブジェクト自体をset
> して、各シート値を参照することができないでしょうか。
そういうときは、GetObject 関数の出番です。
対象のブックが開かれていないとエラーが発生します。
必要なエラー処理を追加すること。
多分、ネットにサンプルは山ほどあるでしょう。
以下は、開かれているブックを参照するだけのコードですが
ブックを閉じて、エクセルも終了させるなら
コメントをはずしてください。
Sub test()
' Dim myXls As Object
Dim myBook As Object
Dim mySheet As Object
Set myBook = GetObject("C:\Test\Sample.xls")
' Set myXls = myBook.Application
Set mySheet = myBook.Worksheets("Sheet1")
Debug.Print mySheet.Cells(1, 1).Value
' myBook.Close False
' Set myBook = Nothing
' myXls.Quit
' Set myXls = Nothing
MsgBox "完了"
End Sub
No.3
- 回答日時:
普通はオブジェクトを設定して外部ファイルを
開くので、同じAccessファイルでも同様です。
しかし、他のファイルとしてのAccessファイル
と同様に、早い、遅い、の問題ならば、Excelのsheetを
テーブルとしてリンクするならば早いです。
テーブルとしてリンクする方法は、
http://office.microsoft.com/ja-jp/access-help/HP …
リンク設定後、たとえば
Sub cc()
Debug.Print DLookup("F1", "sheet1")
End Sub
あるいは、DAOを使用して
Sheet1のF1のデータをすべて
表示するならば、
Sub kk()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("sheet1")
Do Until rs.EOF
Debug.Print rs!F1
rs.MoveNext
Loop
End Sub
のようにできます。
リンクした場合はシートの名前がAccess側で
テーブル名として登録されます。
なお、Accessのバージョンによってはリンクした
シートは参照専用になります。この場合は
参照でいいのでそのまま使用できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
-
4
エクセルからアクセスのプロシージャーを実行させるには?
Excel(エクセル)
-
5
AccessからExcelマクロを実行したい
Excel(エクセル)
-
6
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
7
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
8
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
9
Access エクセルシート名変更
その他(プログラミング・Web制作)
-
10
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
11
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
-
12
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
13
ACCESSVBA からExcelの他ブックへコピーの方法
Visual Basic(VBA)
-
14
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
15
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
16
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
17
アクセスVBAのMe!と[ ]
Access(アクセス)
-
18
Access VBAでクエリーのレコード件数を取得したいのですが
その他(データベース)
-
19
Accessのハイパーリンクをクリックしてもファイルが開かない
Access(アクセス)
-
20
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルVBAが途中で止まります
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
【VBA】全シートの計算式を全て...
-
VBS Bookを閉じるコード
-
ExcelのVBAです。フォルダ内の...
-
【マクロ】違うフォルダにある...
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロを使ってメー...
-
エクセルのマクロについて教え...
-
複数のエクセルブックをひとつ...
-
【ExcelVBA】zip圧縮されたCSV...
-
Dir関数で複数ブックへ行いたい...
-
Excelのマクロコードについて教...
-
VBAで複数のブックを開かずに処...
-
マクロで最終行を取得したい
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBS Bookを閉じるコード
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
ExcelのVBAです。フォルダ内の...
-
vbaで他のブックに転記したい。...
-
フォルダ内の全てのファイルに...
-
VBAで複数のブックを開かずに処...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
VBA シート名が一致した場合の...
おすすめ情報