• ベストアンサー

ACCESS VBAでEXCELのセルの値操作

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

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

  • ベストアンサー
  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

まずは調べることからスタートしてください。 丸投げは だめです。 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/17068)
回答No.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

関連するQ&A

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。

  • excel 串刺しセルの値を列に並べる

    excel2000を利用しています。 シートが10枚以上あるexcelブックがあるのですが、これらのシートのフォーマットは全て同じで、値がそ れぞれ独自に入っています。 一番左側のsheet1は無地です。 そして、左から2sheet目以降の全てのシートで、それぞれ 指定セル を sheet1のA列に縦にデータを保管したいです。 そして、同様にまた違う指定セルをB列、また違うセルをC列・・・・ といった具合で全シートの複数の項目をsheet1にリスト形式でまとめたいです。 どうかご教授をお願いいたします。

  • AccessからExcelを操作

    WindowsXP、Access2002、Excel2002を使用しています。 AccessのVBAを記述して、Excelのブック「A」のシート「B」を、ブック「C」にコピーできますか? ブック「A」も「C」もすでに作成されたファイルです。よろしくお願いします。

  • excelのセルの色を変える

    excel2000でsheet1にある列のうち たとえば sheet1のセルA1の値が「Z-1」だったら sheet2のセルB1を赤に塗りつぶす ってことはマクロでできますか? できなければVBAでどのようなコードになるのか教えていただけませんでしょうか?

  • Excelで他Excelファイルのセルの値をVBAで参照したい時

    こんにちは。 Excelで他Excelファイルにあるセルの値をVBAで参照したい時って、 場所をどう指定したらいいのでしょうか。 やろうとしている事ですが、 c:\1.xlsに記述するVBAで c:\2.xlsのsheet1のA1の値を参照して、 それとc1.xlsのsheet1のA1の値が一致した時に、 c:\2.xlsのsheet1のB1の値を、 C:\1.xlsのsheet1のB1に書き出そうとしています。 派遣就業先でAccessで作ればいいものを なぜか社員の方たちでExcelで作ってしまったため、 そのメンテに四苦八苦しています。(笑) ご存知の方ぜひ教えてください。 よろしくお願いします!

  • エクセルVBAで

    エクセルのVBAでやりたいことがあるのですが、 一枚のシートのセルA1に1が入っているとします。そこで自動でA2に2、B1に3、B2に4といったようにセルの値を一つずつ増やていったものを連番で10枚印刷しようと考えているのですがうまくいきません。ご教授願います。

  • VBAにてセルの値を移動させる方法を教えてください。

    VBAを使用しEXCELのセルの値を移動させたいのですが、たとえば下記のように●と▲で構成された同じワークシート内のセルの集合に対し(1)の集合を(2)の集合を維持したまま(2)に移動させたいのです。      (1)            (2) ABCDEFGHI    JKLMNOPQR 1▲●           ● 2●            ▲● 3▲ ●          ▲▲● 4●●●●         ●● 5▲▲▲●●        ●▲ 6▲●           ●●▲ 移動後     (2)((1)+(2)) JKLMNOPQR 1●▲● 2▲●● 3▲▲●▲● 4●●●●●● 5●▲▲▲▲●● 6●●▲▲● (1)の異動元のB3の空白は移動後には左に詰めるようにし、移動後の内容でセル列Rを越える値は切り捨てるようにもしたいのです。こんな形でのマクロをご教授いただきたいのですが、よろしくお願いいたします。

  • EXCEL VBAで違うファイルを参照したいです

    EXCEL VBAで困ってます アクティブなシートのセル番地"B1"に"外部"と値が入力されていて 同じアクティブなシートのセル番地"B2"に"仕様"と値が入力されています これをネットワーク先にあるエクセルファイルの中に該当する値が入力されているか を調べたいのですが、ロジックをどう書けば良いのかわかりませんので教えてください 例えばネットワーク先のファイルは仮に以下とします \\EXCEL\VBA\MACRO\Reference.xls このファイル内に上記の値が格納されています ただ、外部については"内部/外部"と入力されており、"仕様"は同じです ですので完全一致と部分一致(?)で比較をし、それぞれ"C1""C2"に合致すれば"○"、 無いもしく違えば"×"と値を返したいのです 尚且つ、ファイル内を指定するだけで、セル番地やシート名まで指定せずに比較したいのです どうかご教授頂きますようお願い致します

  • Excel VBAでの値の比較

    お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。    A列 B列    G列 H列 1行  1  1     1   2 2行  2  2     3   2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。

  • エクセルのデータをアクセスのテーブルに移動入力する

    エクセルのデータをアクセスのテーブルに移動入力するVBA フォルダAにおいて、a1.xlsxというファイルがあり、 そのsheet1のセル(a,1)=1 A1が1 とします その値をアクセスのデータベース(これもフォルダAにあります)  b.accdbのテーブル1の フィールド1に入力したいときの エクセルマクロのVBAを御教示いただけると助かります さらに続けて フォルダAにおいて、a2.xlsxというファイルがあり、 そのsheet1のセル(a,1)=2 A1が2 とします その値をアクセスのデータベース上記と同じ  b.accdbのテーブル1の フィールド1に追加で入力したいときの エクセルマクロのVBA 以上わかると助かります よろしくお願いします win10 office365

専門家に質問してみよう