- ベストアンサー
ACCESS VBAでEXCELのセルの値操作
ACCESS2007のVBAでEXCEL2007のファイルを開き、 シート数を数え、3シート以降のA1セルの値をB1セルに移動するには どのようなきじゅつをすればいいでしょうか。 ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずは調べることからスタートしてください。 丸投げは だめです。 Google などで キーワード「Excel OLE」 でたくさん出てきます。 EXcelの外部からの操作方法については下記のURLがどうでしょうか? http://home.att.ne.jp/zeta/gen/excel/c04p44.htm シート数などはVBAのヘルプはごらんになりましたか? ワークシートの数はWorkSheets オブジェクト を調べればわかります。 グラフなどのシートも含む全体を調べるには sheets オブジェクトを調べます。 WorkSheets オブジェクトはsheets オブジェクトのコレクションに含まれます。 数を調べるには Count メソッドを使います。 ですから VBA では DIM Cnt as intger Cnt= sheets.count もしくは Cnt= WorKsheets.Count さらに 質問の「3シート以降のA1セルの値をB1セルに移動するには」 は 以下のとおりになります。 Const St = 3 'シートを3番目にする。 Dim f As Integer f = Worksheets.Count MsgBox "シート:" & Str(f) Worksheets(St).Activate Worksheets(St).Range("A1").Select With Worksheets(St).Range("B1") .Value = Worksheets(St).Range("A1").Value Worksheets(St).Range("A1").ClearContents End With 以上が答えです なお、「ACCESS2007のVBAでEXCEL2007のファイルを開き、」 OLEの操作については 先のURLで調べてください。 あえて書きません。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルVBAも良く解らないらしい人が、なぜアクセスという世界からエクセルを操作する必要があるのか。 下記を順を追って勉強のこと。 (1)エクセルVBAではどうなるか。 マクロの記録でも採って参考にならないか考え、その世界でのコードを完成すること。 (2)アクセスのVBAの世界から、エクセルを立ち上げる方法を WEBや書籍で勉強すること。 (3)オブジェクトの捉え方について、喩えていえば、エクセルの中だと千代田区の・・で済ませるところが、国外に出てしゃべっているようなものなので、日本の+東京の+千代田区の・・が全て指定されて居るか考えること(国際電話を架けるときと似ている)。 Application(=エクセルのこと)+WorkBook+Worksheet+Rangeで指定しているかチェックすること。 http://www.happy2-island.com/vbs/cafe02/capter00401.shtml Set objExcel = CreateObject("Excel.Application.5") のobjExcelはApplicationに当たる。 http://www.accessclub.jp/bbs2/0047/beginter15408.html Set apEXL = CreateObject("Excel.Application") apEXL.Workbooks.Open FileName:=SetPass & "\" & OutName のように Applicationーー>Workbook その次にSheetという風におろして行くのがよかろう。 Sub test05() 'アクセスの世界からエクセルの世界に入る Set appexl = CreateObject("Excel.Application") appexl.Visible = True Set wb = appexl.Workbooks.Open(Filename:=CurDir & "\" & "Book1.xls") Set ws = wb.Sheets(1) MsgBox ws.Range("A3") '実際はエクセルでの処理を書く wb.Close '立つ鳥あとを濁さず。お邪魔しました。 appexl.Quit Set wb = Nothing Set appexl = Nothing 'アクセスの世界に戻る End Sub