Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Home : Access 2010)
環境によるRUNTIMEの動作の違いについて
投稿日時: 20/11/19 23:57:15
投稿者: KO-YUTA

初めまして、宜しくお願い致します。
 
現在、Access2010で作成したaccdbを、3代のPCで、AccessRuntime2010で動かそうとしています。
それぞれ環境が異なっているせいなのか、実行結果が全く異なっていて、どう対応すべきかわかりません。
 
<環境>
 
<開発環境>   win10  Access2010
※実行環境PCとは別のPCです。
※リンク先も、このPCで作成したaccdbです。
 
<実行環境>
PC1     win10  AccessRuntime2010sp2(32bit)(インストールしているoffice=2010、Accessはなし)
PC2    win10  AccessRuntime2010sp2(32bit)(インストールしているoffice=365、Accessはなし)
PC3    win7SP1 AccessRuntime2010sp2(64bit)(インストールしているoffice=2010、Accessはなし)
 
参照設定
VisualBasicForApplication
MicrosoftAccess 14.0 ObjectLibrary
MicrosoftOffice 14.0 Access database engine ObjectLibrary
MicrosoftExcel 14.0 Object Library
MicrosoftOutlook 14.0 Object Library
Microsoft Office 14.0 Object Library
 
<モジュールの内容>
ファイルダイアログを表示し、選択したファイル(.accdb)内のテーブルにリンクする。
既にリンクテーブルは存在し、そのリンク先を変更する仕組み。
 
<実行結果>
PC1:エラーなしで、リンク成功。
PC2:ダイアログで選択したファイルをリンクするところでエラー
  (パスは正確に取得できている)
        TableDef.Connect = ";DATABASE=" & strPath & ";TABLE=" & TableDef.Name
        TableDef.RefreshLink ' リンク情報の更新
PC3:マクロ「autoexec」を指定しているとエラー
  (「autoexec」内で呼び出している、上記テーブルリンクのモジュールを、起動したフォームのボタンから呼び出して実行することは可能)
 
PC1は私の環境なのですが、私の環境では動いてしまっているうえ、PC2とPC3でも異なるエラーが出るので、対応しきれなくなっています。
 
何か根本的なことを間違えているのでしょうか。
RUNTIME版を使用するにあたって、
・RUNTIME版のバージョンとOfficeのバージョンまたはwindowsの組み合わせはあっているのか?
・32ビットと64ビット、両方で動くaccdbを作成することは可能なのか?そのためには何が必要なのか?
等、何かご存知のことがあれば教えてください。
 
宜しくお願い致します。

回答
投稿日時: 20/11/20 09:35:53
投稿者: Suzu

引用:
PC1は私の環境なのですが、私の環境では動いてしまっているうえ、PC2とPC3でも異なるエラーが出るので、対応しきれなくなっています。

 
そうならないよう、動作確認・テストを行います。
ソフトウェアは動作環境を明記されていますよね?
 
 
引用:
・RUNTIME版のバージョンとOfficeのバージョンまたはwindowsの組み合わせはあっているのか?

【合う】とは、どういう状況をおっしゃっていますか?
Runtime版が、そのWindowsにて使用(インストール)できるかという意味でしょうか?
 
 
基本は、開発環境は、使用環境に合わせる事です。
(Windows・Office・Runtime において、バージョン・ビット Accessのインストール有・無)
 
使用環境にてエラーが出るのであれば、そのバージョン・ビットに合わせた開発環境を用意します。
【AccessをRuntime版に移行する際の5つの注意点】
https://www.ait-labo.com/excel_access/1246/
 
 
引用:
・32ビットと64ビット、両方で動くaccdbを作成することは可能なのか?そのためには何が必要なのか?

 
32ビット/64ビット 環境違いにて問題となるのは、使用する DLL が違う事です。
DLLが違うという事で良く起こるのは、
・ODBCドライバ
・API宣言
になります。
 
 
今回は、
引用:
<モジュールの内容>
ファイルダイアログを表示し、選択したファイル(.accdb)内のテーブルにリンクする。
既にリンクテーブルは存在し、そのリンク先を変更する仕組み。

との事ですので、ODBCドライバの問題ではないのか と推測します。
 
【64ビットWindowsには、なぜ32ビットと64ビットのODBCが存在するのか?】
https://www.idearu.info/article/data/ds1034
辺りが参考になるでしょう。
 
 
ただ、ODBCやAPI のみに気をつければエラーが発生しないとは限りません。
なのでテストを行います。机上の推測で事足りる話ではありませんので
引用:
そのためには何が必要なのか?
をこれだけやれば大丈夫と断言はできません。
 
少なくとも
【Office の 32 ビット バージョンと 64 ビット バージョン間の互換性】
https://docs.microsoft.com/ja-jp/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office
 
【Access アプリケーションを展開する】
https://support.microsoft.com/ja-jp/office/access-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%B1%95%E9%96%8B%E3%81%99%E3%82%8B-7bb4f2ba-30ee-458c-a673-102dc34bf14f
 
【Access2019ランタイムの動作確認方法おすすめ4つ】
https://access-support.jp/column/access-2019-runtime-4-way/
は読んでおいたほうが良いでしょう。

投稿日時: 20/11/20 13:07:28
投稿者: KO-YUTA

ご回答、ありがとうございます。
 
実行環境と同じ環境で開発する、ということが難しく(環境を同じくすることが可能なPCが見当たりません)、
実行してエラーがでて、開発環境で「ここかな?」というところをチェックするしかありませんでした。
 
ただ、教えて頂いたサイトでかなりのヒントを得ることができたので、
よく読み込んで、各実行環境で動くように修正を加えていきます。
 
まずは、

引用:
32ビット/64ビット 環境違いにて問題となるのは、使用する DLL が違う事です。
DLLが違うという事で良く起こるのは、
・ODBCドライバ
・API宣言
になります。
  
  
今回は、
 
<モジュールの内容>
ファイルダイアログを表示し、選択したファイル(.accdb)内のテーブルにリンクする。
既にリンクテーブルは存在し、そのリンク先を変更する仕組み。
 
との事ですので、ODBCドライバの問題ではないのか と推測します。
  
【64ビットWindowsには、なぜ32ビットと64ビットのODBCが存在するのか?】
https://www.idearu.info/article/data/ds1034
辺りが参考になるでしょう。

ここから取り組んでみます。
 
まだ不安がぬぐえませんので、もう少し、「解決済み」は保留にさせてください。
 
他にも何かあれば、ご指摘いただけると助かります。
宜しくお願い致します。

回答
投稿日時: 20/11/20 17:27:57
投稿者: Suzu

少なくとも、同じバージョンの Accessがあれば、
ランタイムモードで起動をする事はできますので、助けにはなるかと思います。
 
エラーが出ない様にするのは、一個一個確認し、改善するしかないと思います。
がんばってください。

投稿日時: 20/11/22 00:26:08
投稿者: KO-YUTA

引用:
少なくとも、同じバージョンの Accessがあれば、
ランタイムモードで起動をする事はできますので、助けにはなるかと思います。

  
そうなんですね、私のPCにだけACCESSを入れるのであればそこまでコストもかかりませんし、相談してみます。
 
引用:
エラーが出ない様にするのは、一個一個確認し、改善するしかないと思います。
がんばってください。

 
ありがとうございます、頑張ります!
分かったことなどあれば、また、ご報告させて頂きます。

トピックに返信