みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS VBAでEXCELのセルの値操作

ACCESS2007のVBAでEXCEL2007のファイルを開き、
シート数を数え、3シート以降のA1セルの値をB1セルに移動するには
どのようなきじゅつをすればいいでしょうか。

ご教授お願い致します。

投稿日時 - 2009-12-11 10:38:55

QNo.5514057

すぐに回答ほしいです

質問者が選んだベストアンサー

まずは調べることからスタートしてください。

丸投げは だめです。

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で調べてください。
あえて書きません。

投稿日時 - 2009-12-11 19:38:22

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

エクセル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

投稿日時 - 2009-12-12 20:01:16

あなたにオススメの質問