• ベストアンサー

アクセス のエクスポート

1. アクセスで、モジュールやデザインを変更したフォームをエクスポートしたいのですが、エクスポート先のテーブルのデータに全く影響はないでしょうか。 2. モジュールも一緒にエクスポートされると思いますが、エクスポート先のテーブルにないフィールドなどを記述していると、エラーが発生することになるでしょうか。 3. 複数(あるいは全て)のフォームを一括してエクスポートする方法はないでしょうか。 4. 特に注意すべき点があれば、合わせて教えてください。   

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

  • ベストアンサー
  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

1.フォームを一括してエクスポートする方法はないでしょうか  データには影響ありません。 2.エクスポート先のテーブルにないフィールドなどを記述していると、エラーが発生することになるでしょうか。  当然エラーになります。 3.複数(あるいは全て)のフォームを一括してエクスポートする方法はないでしょうか。  確認したのは2003ですが、エクスポートは1つずつしかできませんが、インポートなら「全て選択」できるます。 4.特に注意すべき点があれば、合わせて教えてください。  同じ名前のフォームやテーブルをインポートした場合、後からインポートしたオブジェクトの名前の後に「_1」が付くので、インポートしたのに変わっていないと勘違いすることがあります。

hakobulu
質問者

お礼

ご回答ありがとうございます。 1と2はわかりました。 3.  確認したのは2003ですが、エクスポートは1つずつしかできませんが、インポートなら「全て選択」できます。 : アクセス97です。 古すぎますかね・・・。 「全て選択」メニューが見当たらないようなのでひとつづつエクスポートするしかないのでしょうね。 4.  同じ名前のフォームやテーブルをインポートした場合、後からインポートしたオブジェクトの名前の後に「_1」が付くので、インポートしたのに変わっていないと勘違いすることがあります。 : フォームなどの【名前だけ】が変わって上書きされる、ということですよね。 たとえば「AAA」という名前のフォーム名が「AAA_1」に変わる、ということでしょうか。 それとも、上書きされずに併存する状態でインポートされるのでしょうか。   

その他の回答 (6)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.7

To No5 のレス(もはや死語?)につきまして。 あはは、やっぱり。(^^ゞ レスありがとうございます。 怪答ご勘弁を。 削除対象かな? 退散します。

hakobulu
質問者

お礼

ご回答ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

#3の2箇所の DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn のところが貼り付けたときに字数の関係で おかしくなっています。正確には、 Docmd以下の末尾にobjNameInがカンマで区切られて 二つ続きます。

hakobulu
質問者

お礼

ご回答ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

#3です。もし、既存のフォームがあれば それを破棄して新たにフォームをエクスポート したいというのであれば、コードを少し 変更しますが、そのあたりはいかがですか。 それから、#4さんへ CurrentProjecプロパティはAccess2000以降です。

hakobulu
質問者

お礼

ご回答ありがとうございました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

Access97で動くか全く分かりませんが (^^ゞ 参考にしてください(ならないかも?) 動くなら少し手直しすればいけますよね? Sub test1() '自MDBのフォーム一覧 Dim objFrm As AccessObject For Each objFrm In CurrentProject.AllForms Debug.Print objFrm.Name Next objFrm End Sub Sub test2() '他MDBのフォーム一覧・削除 ※バックアップを取るか不要のファイルでお試しを! Dim appAcc As Access.Application Dim objFrm As Object Dim strPath As String strPath = "c:\要らない.mdb" Set appAcc = New Access.Application appAcc.OpenCurrentDatabase strPath For Each objFrm In appAcc.CurrentProject.AllForms Debug.Print objFrm.Name If objFrm.Name = "あのフォーム名" Then appAcc.DoCmd.DeleteObject acForm, objFrm.Name End If Next objFrm appAcc.CloseCurrentDatabase: Set appAcc = Nothing End Sub

hakobulu
質問者

お礼

ご回答ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

Access97では同じ名前のフォームがあると エクスポートした場合、エラーが出る可能性が あるかもしれないので、同じ名前のフォームが ある場合はエクスポートしないようにしています。 同じ名前のフォームを置いてみたりして確認 してみてください。 このコードは他のバージョンのAccessでも使えます。 なお、他のバージョンで使用する場合はDAOにチェックを 入れてください。ADOより上位に設定するか、ADOの チェックをはずしてください。 Sub cmdTransferFormA() Dim dbIn As Database Dim rsIn As Recordset Dim dbOut As Database Dim rsOut As Recordset Dim strSQLIn As String Dim strSQLOut As String Dim strPath As String Dim objNameIn As String Dim objNameOut As String strSQLIn = "Select Name From MSysObjects Where Type = -32768" strSQLOut = "Select Name From MSysObjects Where Type = -32768" strPath = "D:\sample.mdb" Set dbIn = CurrentDb Set rsIn = dbIn.OpenRecordset(strSQLIn) Set dbOut = DBEngine.Workspaces(0).OpenDatabase(strPath) Set rsOut = dbOut.OpenRecordset(strSQLOut) If rsIn.RecordCount > 0 Then rsIn.MoveFirst Do Until rsIn.EOF objNameIn = rsIn!Name If rsOut.RecordCount > 0 Then rsOut.MoveFirst Do Until rsOut.EOF If rsIn!Name = rsOut!Name Then Exit Do Else DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn Exit Do End If rsOut.MoveNext Loop Else DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn End If rsIn.MoveNext Loop End If rsIn.Close: Set rsIn = Nothing rsOut.Close: Set rsOut = Nothing dbIn.Close: Set dbIn = Nothing dbOut.Close: Set dbOut = Nothing End Sub

hakobulu
質問者

お礼

ご回答ありがとうございました。

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.2

3.「全て選択」メニューが見当たらないようなのでひとつづつエクスポートするしかないのでしょうね。  →2003でもエクスポートは1つずつです。モジュールを相手に渡すのではなく、インポートで相手側から最新のモジュールを貰うんです。 4.「たとえば「AAA」という名前のフォーム名が「AAA_1」に変わる、ということでしょうか。 それとも、上書きされずに併存する状態でインポートされるのでしょうか。」  →「AAA_1」に変わるので、元の「AAA」と併存するので、それに気を付ける必要があるのです。

hakobulu
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • ACCESSのエクスポートについて

    ACCESSでフォーム上のあるフィールドで右クリックし、 フィルター選択をしてデータをメンテナンスする事が あると思いますが、その選択されたデータをエクセル にエクスポートした時のフィールドの並び順が、何を 基準としているのか、テーブルともフォームのタブ順 でも無く吐き出されます。 単にテーブル=フォームタブストップになっているの で、その順番で吐き出して欲しいのですが。。 どのようにすれば宜しいでしょうか? クエリーもかまさず、フォームは単にテーブルをソース にしています。宜しくお願いします。

  • accessのエクスポートエラーについて

    ご教授願います。 accessのテーブルをcsv形式でエクスポートすると以下のエラーが発生します。エラー回避する方法ありますでしょうか? ■エラーメッセージ テキストエクスポートウイザード !フィールドAAの開始位置'32896'が有効ではありません。開始位置は32767以内で指定してください。 データのテーブル列数は230列です。 よろしくお願いいたします

  • Access レコードのエクスポート

    Accessのmdbファイルをサーバー上に置いてあります。 クライアントPCからサーバーにアクセスし、フォームを使用して取引先データを入力します。 クライアントPCはネットワークから切り放して使用することもあるため、取引先データをクライアントPC本体にも保存したいのです。 形式としては、クライアントPCにもmdbファイルをつくり、その中のテーブルに保存したいのですが、 テーブルごとエクスポートするのではなく、フォームで入力しているそのレコードのみクライアントPCのテーブルにエクスポートさせ、その後は1件ずつ追加されていく形をとりたいのです。 (クライアントPCは複数台あるため、自分のPCで入力したもののみ、自分のPCに取り込みたいのです) テーブルまるままエクスポートまでは書けたのですが、レコードをエクスポートが分かりません。 ご教授ください。

  • アクセス エクスポートのときにデータを加える

    Excelへエクスポートするときに、元々のデータに他の任意の日付や備考などを加えて出力したいと思っています。 今考えているのは追加入力のテーブル、フォームを別に作り、メインフォームでコマンドボタンを押したら追加入力フォームを開き入力させ、そのテーブルと合わせてエクスポートするやり方です。 ただしこの方法だとテーブルは毎回作って削除するとしてもコマンドボタン分フォームを作らねばならず非効率的かなと思っています。 これ以外の方法はありますでしょうか?標準モジュールなどでデータを受け渡すことが出来るのでしょうか?

  • アクセスVBA テーブル名を変数とするクエリ実行・エクスポート

    テーブル X(フィールド1~30)を対象とするクエリ Yがあります。 クエリ Yは、フィールド1の値が BBBであるレコードの、フィールド3、5、7を抽出します。 クエリ Yの実行結果をエクセルファイル Zにエクスポートします。 Xと同一の構成である X1~X10という複数のテーブルから一つを選択して、クエリYを実行し て、エクセルファイル Zにエクスポートしたいのですが、VBAでは、どのように記述するのでしょうか? フォーム Fのテキストボックス Tに入力して、テーブルを指定(変数)したいのです。 上記が可能な場合、続けて Zにエクスポートすることはできるのでしょうか? エクスポート用のテーブルを一時的に作成しなければならないのでしょうか? 説明下手で申し訳ございません。お手数ですが、ご教示ください。よろしくお願いします。

  • アクセス データエクスポートの形式について(時刻の削除)

    アクセスのテーブルに型が「日付/時刻型」で、デザインの書式が「日付(S)」となっているフィールドがあります。従って見た目上では、2008/04/1のような形式をしていますが、csv形式にてエクスポートした際に「2008/4/1 0:00:00」となってしまい、時刻が追加されてしまいます。これの時刻を省いた形式で直接アクセスからエクスポートしたいのですが、アクセス上で何を修正すればよいのでしょうか。 すみませんが、どなたか教えてください。

  • アクセスへエクスポートできない

    outlook2010を使っています。 accessのヴァージョンは2003です。 メールデータをアクセスにエクスポートしたいのですが ファイル→開く→インポート→ファイルにエクスポートでアクセスを選んで 新規Microsoft Office Access アプリケーション.mdb と言うファイルでエクスポートするのですが 出来上がったファイルをダブルクリックで開くと http://support.microsoft.com/kb/884518/ja と同じように "データベースの形式を認識できません" エラーで Access で MDE ファイルを開けない となります。 リンク先の条件とは一致しませんが これはバージョンが相違してるから発生する事象なのでしょうか? しかし、outlook2010からExcel2003なら 同じようにして問題なくてエクスポートできました。

  • MSアクセス エクセルへのエクスポートについて

    アクセスの初心者です。いろいろ調べてみたのですがわかりません。どうか教えてください。よろしくお願いします。 アクセスのフォームにボタンを作り、そのボタンを押すとエクセルにエクスポートするように設定しました。しかしデータが全てエクスポートされてしまいます。目指しているのは”開いているフォームのデータのみをエクスポートしたい”のです。 フォーム名:申込書 エクスポートしたいフォームのデータ(クエリ)名:申込書 エクスポート先:エクセルc:¥申込書 です。 主キー:申込ID 仮にフォームで申込IDが「3」を開いていれば、その「3」のデータのみをエクスポートするVBAを教えてください。 現在はここまでの段階で止まっています。↓これにプラスする記述で目指すものができればと思います。 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "申込書", "c:\申込書.xls", True, "" お手数ですがよろしくお願いします。

  • アクセス2002のエクスポートエラー

    環境:WinXP バージョン:アクセス2002 CSVデータをアクセスにインポートし、編集してエクスポートしたいのですが、「フィールド'コメント'の開始位置'32769'が有効ではありません。開始位置は32,767以内で指定してください。」というエラーが出て、エクスポートすることができません。 データ型がintになっているという知人の指摘があったので データ型はインポートの際にすべて「メモ型」にしてあり、 エクスポートするときにも確認しています。 それに、そのフィールドにはデータが入っていません。 処理するデータ量は20レコードでフィールドは69列です。 なぜ、このようなエラーが出るのかまったくわからない状態なのです。 どなたか教えてください。

  • ACCESSからEXCELへのエクスポート

    ACCESSのフォームで、スクロールする位メモ型フィールドに入力をしていますが、EXCELにエクスポートすると、約10行目以降が正常に落ちません。試しに2,000文字程程入力してEXCELにエクスポートしたら、「折り返して表示する」機能で1,000文字までは正常に表示されますが、それ以降は横に行ってしまい表示できませんでした。ACCESSのメモ型フィールドは1,000文字や10行が限界なのでしょうか?またそれ以上を正常にエクスポートする方法はあるのでしょうか。 ご存知の方教えてください。

専門家に質問してみよう