• 締切済み

Excel の結果を Access へ移行したい

Access および Excel 共に2003を使っています。 Access側からExcelを呼び出して、Excel にAccess のデータ(数字)を書き込みます。 Excel側で計算処理をして、「戻る」のボタン(別途作成)を押せば その計算結果を元のAccess のテキストボックスに書き込みたいと思います。 Access側からExcelへは問題なくデータ表示ができ、計算処理もできるのですが、 Access側に計算結果の移行ができません。 どうしたらよいか教えていただけませんか。 ちなみにAccess から Excel の移動は次のようにやっています。 strfile = CurrentProject.Path & "\○○.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True

みんなの回答

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

>「戻る」のボタン が、Excel上にあるなら、例えば以下のような感じで Excel側からAccessのテキストボックスを参照できます。 「Excel連携.mdb」というmdbファイルをCドライブの ルートにおきます。 その中に「f1」というフォームを作り、「テキスト0」という テキストボックスを作ります。 「f1」というフォームをExcel側から開き「テキスト0」という テキストボックスをイミディエイトで参照するコードです。 Dim strDBPath As String strDBPath = "c:\Excel連携.mdb" Set acApp = New Access.Application acApp.Visible = True acApp.OpenCurrentDatabase strDBPath acApp.DoCmd.OpenForm "f1" Debug.Print acApp.Name Debug.Print acApp.Forms("f1")("テキスト0") ※ acApp.Forms("f1")("テキスト0")=”何らかの値” とやれば、Excel側からAccess側に値を書きこめます。 ただ、Nothingを忘れないようにどこかで行なう必要があります。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>Excel の結果を Access へ移行したい Excelはデータの自由度が多く、使いやすいですが、その編集・計算結果をどのテーブルにもどすか?どのカラムを戻すか?追加や削除の行があるときどうする?など、使う側の処理内容はイロイロあって、コマンド1発で手軽に指定できるものではありません。 なので、Excel側の結果を適切なテーブルに取り込んで、それをトランザクションデータとして、AccessVBAのプログラムで目的のテーブルのデータを更新するってことになるのではないでしょうか? ちなみに、わたしも将来的には、Excelに渡したデータをAccessに戻すプログラムを作成する予定ですが、現在は、とりあえずAccessのデータをテキスト出力し、それをPerlで処理して、罫線や計算式の入ったExcelファイルを作成するプログラムを作っている途中です。

関連するQ&A

  • AccessからExcelが開かない

    Access2000 の●●mdb から Excel2007 のAAA.xls を開こうとしますが オートメーションエラー(サーバーによって例外が返されました) が表示され開きません。 ●●mdb と AAA.xls は同じフォルダーに入れてます。 Accessの「参照設定」では、   Microsoft Excel 12.0 Object Library を選んでます。 ボタン(Cmd1)を押して表示させたいので Private Sub Cmd1_Click() Dim Appexcel As New Excel.Application Dim wb As Excel.Workbook Dim strfile As String strfile = CurrentProject.Path & "\AAA.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible = True End Sub のように書いてますが、どうもうまく開いてくれません。 どうすれば表示させることができますか。

  • Access、Excel ともに2003 を使用しています。

    Access、Excel ともに2003 を使用しています。 Access で Excel を動かすことでの質問です。 まず「やりたいこと」を箇条書きにします。 (1)Accessのボタンを押すと以下の作業をする。 (2)Excel の ●●.xls を印刷する。   (但し、この時 Excel の画面は表示しない) (3)その ●●.xls は保存せずに終了する この間、画面は常にAccessが開かれた状態 これを Access側で次のように書きました。 Private sub ボタン_Click() strfile = CurrentProject.Path & "\●●.xls" Set Appexcel = New Excel.Application Set wb = Appexcel.Workbooks.Open(strfile) Appexcel.Visible=false ActiveSheet.PrintOut ActiveWorkbook.Saved = True Application.Quit End Sub こうすると、最後の「Application.Quit」でExcel も Access も 共に終了してしまいます。 Excel だけを終了させて、Access は引き続き次の作業に入るには どうすればよいのでしょうか。

  • AccessからExcelのVBAを動かしたい

    2002です。 Excel_A.xlsからExcel_B.xlsのFromAccessプロシージャを実行する場合、 Application.Run "'" & ActiveWorkbook.Path & "\Excel_B.xls'!FromAccess" でいけたのですが、、、 Access_A.mdbから次のようにやると Application.Run "'" & CurrentProject.Path & "\Excel_B.xls'!FromAccess" エラーになります。 それで、次のようにやってみたら動いたのですが、FromAccessが一気に終了して しまい、デバッグできません。 Dim myExcel As Object Set myExcel = CreateObject("Excel.Application") Set myExcel = GetObject(CurrentProject.Path & "\Excel_B.xls", "Excel.Sheet") myExcel.Application.Visible = True myExcel.Application.UserControl = True myExcel.windows(1).Visible = True myExcel.Application.Run "FromAccess" デバッグしながら、AccessからExcelのプロシージャを実行するにはどうしたらいいのでしょうか?

  • アクセスからエクセルへの処理

    Private Sub エクスポート_Click() Dim myExcel As Object 'エクセルに出力 DoCmd.TransferSpreadsheet filename:=CurrentProject.Path & "\分析素材\test.xls", _ tablename:="HJEX016", _ transfertype:=acExport 'ファイルを開く Set myExcel = CreateObject("Excel.Application")   myExcel.Visible = True ★ myExcel.workbooks.Open filename:=CurrentProject.Path & "\分析素材\test.xls" アクセスのテーブルをエクセルシートに出力し、そのファイルを開くという プログラムを作成してみたのですが、★のところで固まってしまいます。 何がいけないのでしょうか?

  • AccessからExcelにコピペするコードの作成

    Accessのカレントレコードをコピーし、特定のExcelブック(仮称A)にペーストするVBAコードを書いてみたのですが、 ペーストが上手くできず困っています。 (下記コードの「'任意のExcelブックAの、シートB内のセルA2にペーストする」の部分です) ------------------------------- '任意のExcelブックAを開く Dim Objxls As Object Dim strFile As String Dim wb As Object strFile = "C:\Users\ExcelブックAのある場所" Set Objxls = CreateObject("Excel.Application") With Objxls .Visible = True .Workbooks.Open strFile End With 'Accessのカレントレコードを選択 DoCmd.RunCommand acCmdSelectRecord 'コピーを実行 DoCmd.RunCommand acCmdCopy '任意のExcelブックAの、シートB内のセルA2にペーストする With Objxls.Workbooks(Objxls.Workbooks.Count) .Sheets("B").Range("A2").Paste End With ------------------------------- VBA初心者のため、複数のサイトを参考にしながらコードを作成しています。 説明が不足している部分がありましたら申し訳ございません。 どなたか知恵をお貸し頂けますと助かります。

  • Accessから呼び出したExcelの入力状態を解除したい

    WinXP-pro Access 2003 (Excel 2003) お世話になります。 以下のコードで、AccessのフォームからExcelファイルを開きます。 ~~~~~~~~~~~~~~~ Dim obj As Object Set obj = CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open Application.CurrentProject.Path & "test.xls" ~~~~~~~~~~~~~~~ 新しく開かれたtest.xlsファイルの上で入力を行い、Accessに戻ってフォーム上にあるボタンをクリックし、Excelファイルを閉じる処理までを行います。 問題はExcel操作中にセル上で「F2キー」を押下すると、入力状態になると思います。 この状態の時にAccess側で「obj.Quit」や「obj.cells(1, 1).select」のようなExcelへの操作を行おうとすると、ExcelとAccessの間で「ビジー状態である」と警告が表示され、処理が固まってしまいます。 Excelが入力状態であることが問題のようですので、入力を解除してやれば良いと思うのですが、この方法がわからず詰まっております。 入力状態解除の方法、もしくはこのようなフリーズ状況が回避できる方法がないものでしょうか。 よろしくお願いいたします。

  • VBscriptでEXCELを起動

    今、非常に悩んでいる問題があります。 VBscriptでEXCELを起動したいのですがうまく行きません。 (Web画面であるボタンを押下すると、Webサーバ上のEXCELが開くというものです) プログラム的には (1) Dim excel Set excel = GetObject("", "Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing (2) Dim excel Set excel = CreateObject("Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing の二通り(他いろいろ)を試したのですが、何もおきずに終了します。 同じことをVB6.0でするとうまく行くのですが・・・ はっきり言うとVBscriptに関して知識がなく 質問内容も説明が分かりにくいかもしれませんが よろしくお願いいたします。

  • ACCESSからexcelを操作

    accessのVBからEXCELのデータ編集を行う際、 最後エクセルを開放しているつもりなのですが、できていないようです。 ※タスクマネージャーにエクセルのタスクが残っており、 該当のファイルを開くと白くなっている。閉じて再度開くと正常動作する。 いくつかの帳票がありますが、 現象が起こるものと起こらないものがあります。 試しに Xls_app.ScreenUpdating = Trueにしてみるとタスクには残っているが 問題なく開けます。 Xls_app.ScreenUpdating = Falseだとタスクにも残るし、ファイルを開くと白くなっているような感じです。 しかし発生原因がわからず、再発するような気もするので根本原因を 突き止めたいです。 Excel起動時 ---------------- Set Xls_app = CreateObject("Excel.Application") Set Xls_book = Xls_app.Workbooks.Open(STR_out_file) Set Xls_sheet = Xls_book.Worksheets(STR_sheet1) Set Xls_sheet2 = Xls_book.Worksheets(STR_sheet2) 'DEBUG Xls_app.Visible = False Xls_app.ScreenUpdating = False Xls_app.UserControl = True ' Xls_app.Visible = True ' Xls_app.ScreenUpdating = True Private Sub Excel終了()----------------------- Xls_book.Close (True) Xls_app.Quit Set Xls_sheet = Nothing Set Xls_sheet2 = Nothing Set Xls_book = Nothing Set Xls_app = Nothing End Sub

  • AccessからExcelの起動、Excel単独起動と違う動作になる。

    お世話になります。 Access2007からExcel2003を起動しようとしています。 実際には、AccessVBAより、以下のような呼び方をしています。 ----------------------------------- Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True xlApp.AutomationSecurity = 2 Set xlBook = xlApp.Workbooks.Open("C:\分析.xls") Set xlBook = Nothing Set xlApp = Nothing ----------------------------------- (手動で閉じる) 大体おおまかにこんな感じで作ってあります。 起動するExcelにはボタンが張り付けてあり 押すと処理が開始されます。 実際、起動そのものはされるのですが、同一ファイルにて 1.AccessからExcelを起動してボタンを押す 2.Excelを直接起動してボタンを押す の場合、Accessからの起動では、うまく処理が行われません。 直接起動でうまくいくので、ExcelのVBAの問題ではなく、 起動時の指定、または起動のやり方がまずいのでは、と とらえていますが、調べてもわからない状態が続いています。 (開き方や、マクロの呼び出し等方法を変えましたが  うまくいきません) Excelでは主に、ピポットテーブルを利用してPasteSpecialで値を 設定している作りになっています。 Access2007でもAccess2003でも同じだったと思います。 同様な経験をされ解決した方、方法をご存じの方、 ぜひ教えていただければと思います。

  • ACCESSのVBAについて

    ACCESSのVBAを使って、データの集計・分析などをしてEXCELに出力、さらにそのEXCELを少しいじる、←このVBAをVBSで実行 といった事をしていたのですが、 会社の端末が一部Office2003から2010に変わったため、参照設定に不具合が出てきました。 内容は、元々2003で作成されたデータベースを2010で開くとVBAの参照設定が「Microsoft Access 11.0 Object Library」だったものは「Microsoft Access 14.0 Object Library」に変わるのですが、 「Microsoft Excel 11.0 Object Library」は変更されずに参照不可になってしまいます。 以前、別のところで同様の質問をした際に、 →「参照設定」をして、コードを作成したあと、コードに使われている定数を全部調べ上げて、変数宣言のコードを作成し、 参照設定のチェックを外して、宣言のコードを追加する、ということで、参照設定の対策をします。 といった回答を頂いたのですが、いまいち理解できていません。 以下のコードをEXCELの参照設定を外しても動くようにするにはどのようにしたら良いのでしょうか?よろしくお願いします。 Sub TEST() Dim xls As Excel.Application Dim wb As Excel.Workbook DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "TEST", "C:\TEST.xls", True Set xls = CreateObject("Excel.Application") Set wb = xls.Workbooks.Open("C:\TEST.xls") With xls .Sheets("Sheet1").Select .Range("A1").Value = "成功" .Visible = True End With End Sub

専門家に質問してみよう