• 締切済み

officeでのOLEについて

TAGOSAKU7の回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

( ・・)?ン なぜだろう。。。 WIN2000SERVER_SP2 ACCESS2000_SP2 環境で、NoMatch はうまく反応してくれました。 で思ったのですが、SEEKを使わないのでよければ、SQL文で拾う方法があります。 これでだめなら、DBへの接続方式をADOにしてあげれば、きちんとできるような気がします。 Private Const DBName = "c:\DATA97.mdb" Private DB   As Database Private BGrc  As Recordset Private Sub Code_AfterUpdate()   Me!systemname = getGyomu(Me!Code) End Sub 'あえて受けの「inVal」のタイプを宣言してません。 Private Function getGyomu(inVal) As Variant   Dim tdfWork   As TableDef   Dim strField  As String   Dim strSQL   As String      getGyomu = Null      Set DB = DBEngine.Workspaces(0).OpenDatabase(DBName)    'この処理は、インデックス名「BGprmkey」の割当たってるフィールド名を取得しているだけです。 '直接フィールド名を指定してあげたら、ここの部分の処理は省けます。 'strField = 《キーフィールド名》って感じ   '「Gprmkey」に該当するフィールド名を得る   Set tdfWork = DB.TableDefs("Gyomu")   strField = tdfWork.Indexes("BGprmkey").Fields(0).Name          'Indexとなるフィールドの型がわからなかったので、二通り書いておきます。 '型にあわせて、どちらかを使用してください。   'SQL文の作成(キーとなるフィールドが数値型の場合)   strSQL = "select Gyomu from Gyomu where " & strField & "=" & inVal   'SQL文の作成(キーとなるフィールドが文字列型の場合)   strSQL = "select Gyomu from Gyomu where " & strField & "='" & inVal & "'"         'レコードセット   Set BGrc = DB.OpenRecordset(strSQL)   'データが存在していたら取得   If Not BGrc.EOF Then     getGyomu = BGrc.Fields(0).Value   End If      BGrc.Close   DB.Close   Set BGrc = Nothing   Set DB = Nothing End Function

関連するQ&A

  • VBAで OLEオブジェクト型のフィールド操作

    Access VBA初心者です。 mdbで作成しています。 テーブルを新規作成してフィールドの1つにOLEオブジェクト型を設定してそのフィールドには他のmdbファイルをセットしています。 セットしたmdbにはいくつかのテーブルが作成されているのですが、 そのテーブルをローカルのmdb(今作成しているmdb)に取り込んでテーブル更新処理を行いたいのですが、 ローカルのmdbにOLEオブジェクト型フィールドでセットしたmdb内にあるテーブルを取り出す方法がわかりません。 よろしくお願いします。

  • EXCELのマクロ記録でMSアクセス操作は可能?

    EXCEL2003のDATA(SHEET1全体)をアクセス2003の指定されたテーブルに取り込む操作を マクロの記録で行いたいのですが可能でしょうか?。 VBA等難しく思えるので、マクロの記録だけでできるといいのですが....。 下記のような操作はVBAで簡単に組めますでしょうか?。 (1)アクセスのBBB.MDBのTTTというテーブル内のDATAを全削除してテーブル閉じる (2)AAA.XLSのsheet1全体をTTTのテーブルにインポート。 (3)データーベースの最適化を行い保存して閉じる。 以上初歩的かもしれませんが、どなたかお願いします。

  • office2007のリボン、officeボタンの制御について

    お世話になります。 現在、word、excelでvbaをやっています。 word、excel2003ではvbaでツールバーの制御をしていました。 例えば、元からあるツールバーをマクロで全て削除制御し、自分で一からカスタマイズしたツールバーを追加して使っていました。 今回、office2007を新たに購入して、そのままのマクロを使ってみたのです。 そしたら、2003で作ったツールバーが、2007のアドインに格納されました。 そこで質問なのですが、2007でアドイン以外のボタン(リボンやofficeボタンなど)を無効、もしくは削除する方法などあるのでしょうか? もしあるようでしたら、方法なども教えて頂けるとありがたいです。 長くなりましたが、ご指導のほど、宜しくお願いします。

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • EXCELのV4マクロをVBAに書き直せるか?

    EXCEL2000にてV4マクロにて書かれたEXCELアドインがあります。 これをEXCEL2000のVBAに書き直して欲しいという依頼がありますが、 V4マクロよりVBAにて無理な事や注意点があれば教えてください。 よろしくお願いします

  • Accessのファイルサイズ縮小について

    Access 2000で作成したmdbファイルを Access 2013環境で使用しています。 ・テーブルのみのmdbファイル(1)があります。  mdbファイル(1)の中には、テーブルオブジェクトが1つあり、フィールドが1つ、  フィールドサイズは255です。レコード件数は、36万5000件程度あります。 ・フォームやクエリ、マクロ、mdbファイル(1)と  リンクテーブルでつないでいるmdbファイル(2)があります。 mdbファイル(1)のファイルサイズが、90MBに達しており mdbファイル(2)を開いたり、何か処理させるのを遅くしているのではないか と思っています。 他の方の質問をチェックしましたが、結果は 最適化について  オプション→現在のデータベース→閉じるときに最適化する→チェックON済み  手動で最適化する→変化なし。 MDBをMDEに変換する  Access 2013では、バージョンが違うので変換できないようです。  accdb形式に変換→accde形式に変換しましたが、変化なし  (そもそも、ファイル(1)はテーブルのみで、マクロやプロシージャは無いので、  意味が無かったかも) となっており、対処法が見つからなくて困っています。 何か良い案はないでしょうか。

  • Office developerって?

    Office developerって? Excel VBAを登録したExcelブックを配布する方法を検討しています。 マイクロソフト サポート オンラインで VBA と Office Developer を使用して Office COM アドインを作成する方法 という記述を見つけました。 Office Developer は配布に使えるのでしょうか? また価格はおいくらぐらいなのでしょうか? WindowsXP、Excel2003を使用しています。

  • Office2000(Excel)メモリ不足です。

    「Excel97」で作成したマクロを「Excel2000」で実行することはできるのですが、 マクロ(VBA)を編集しようとすると、「メモリ不足」と警告され、編集ができません。そこで、メモリを64MBから128MBに増設したのですが結果は同じでした。 ちなみに、Access2000でもVBA編集画面を開こうとすると同様の警告が表示されます。128MBでも足りないのでしょうか?

  • CSVファイルをアクセスのテーブルに出力する

    こんにちは Access VBA初心者です。 やりたい処理なのですが CSVファイルをmdb内であらかじめ作成されているテーブルに出力したいのですが、 最初にTransferTextwでワークのテーブルにインポートして そのワークテーブルを1レコードずつ読み込みmdbのあらかじめ作成されているテーブルにINSERTしていくという方法しか今思いつきません。 インポートするとワークテーブルはすべてテキスト型になっていますが、 それを違う型の項目にINSERTするということなど可能なのでしょうか? それとももっとスマートな方法があるのでしょうか? ざっくりと書いてしまいましたが、よろしくお願いいたします。

  • Accessの運用について

    マクロソフトAccess2003でデータベースをネットワーク上で運用しています。データ用のmdbファイルをネットワーク上に置き、クライアントはリンクテーブルを張ったmdbファイルをデスクトップ上において使用しています。 一般的にはスタンドアロンで使用すべきソフトであり、パフォーマンスの低下等の問題が出てきたらアップサイジングが推奨されていると思います。 そこで素朴な疑問が生まれました。 たとえば、Accessデータベースを運用していて3万件のレコードでは問題なく稼動しており5万件を過ぎたあたりでパフォーマンスが低下して使い物にならなくなったとします。 パフォーマンスが低下しないで運用できる確実なレコード数は4万件とします。 そこで、レコードが4万件に達した時点でテーブルを分割します。今までのテーブルを【テーブルA】とし、分割後のテーブルを【テーブルB】とします。 繰り返しになりますが、【テーブルA】が4万件になったらこれを分割して【テーブルB】を設置して各2万件のテーブルとします。 2万件に分ける基準はあるフィールドを基準とし、運用上は検索の第一条件として、この条件決定後にレコードソースを【テーブルA】にするか【テーブルB】にするか決めるようにVBAで指示します。 【テーブルA】か【テーブルB】のどちらかが4万件に達した時点で同様のテーブル分割を行い【テーブルC】、【テーブルD】・・・・・と繰り返していけばレコード数増加によるパフォーマンス低下問題はずっと回避できると思うのですがいかがでしょうか? もちろんAccessは2Gのファイルサイズ制限がありますから、ファイルサイズが影響するパフォーマンス低下と判断すればバックエンドのmdbファイルも分割します。 なにぶんAccessの運用経験1年程度ですので、もしかしたら頓珍漢な発想かなと思い心配です。 ベテランの方々からのアドバイス・ご意見を頂きたいです。 よろしくお願いします。