こちらに来てからは事務所の中すべてが64bitOSになっている。, 64bitOSと32bitOSとの違いはいろいろあるけど、64bitではC:\Windowsのフォルダの中にsyswow64というフォルダがある。 Running VBA code that was written before the Office 2010 release (VBA version 6 and earlier) on a 64-bit platform can result in errors if the code is not modified to run in 64-bit versions of Office. Microsoft.Jet.OLEDB.4.0 プロバイダが見つからない . ここでは、32ビット版のエクセルでは動作していたマクロを64ビット版エクセルで動かしたところ発生したエラーを紹介しています。なお、Office2010 から64ビット版アプリが提供されているようです。, このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認および更新を行い、次にDeclareステートメントにPtrSafe属性を設定してください。, はい、意味がわかりませんが次のように、Declare ステートメントの後にPtrSafeを追加するだけでいいようです。もはや完全に思考が停止しています(笑)。, Accessに接続するマクロでは、Microsoft.Jet.OLEDB.4.0 を使用している場合が多いと思いますが、64ビット版では提供されていないようです。ないものはないので、使えないということです。, 実行時エラー ‘3706’: プロバイダーが見つかりません。正しくインストールされていない可能性があります。, そのため、64ビット版でも提供されている代替の Microsoft.ACE.OLEDB.12.0 (または、それより新しいもの)を使用する必要があります。, 64ビット版でマクロをコンパイルをしたところLong型の変数で「型が一致しません」と怒られていました。, LongLong型などに変更したりするとコンパイルエラーとならなくなったりもしたのですが、バリアント型変数(Variant)として宣言することで、32ビット版と64ビット版を意識せずに、マクロが勝手にいい感じに解釈してくれる可能性もあります。, Your email address will not be published. JavaScriptのJSONデータをSQLのように扱えるAlaSQL.jsについてご紹介します。うまく活用することでオブジェクト操作が簡単... エクセルで日付操作をする際の基本的な操作である、加算、減算、日付差計算、書式設定についてご紹介します。... ミニバンへの買い替え検討時に行った事をまとめました。試乗した感想を元に、フリード・セレナ・ボクシーの中から1つを選び、購入しました。... AQUOS sense3 の手帳型の本皮&天然木スマホケースを購入したので、レビューをしてみました。結構いいです!... 新元号に切り替わりましたが、明治・大正・昭和・平成、令和以外の元号を知っていますか?知っているようで知らない元号に関する基本的なクイズを3問... CDNでVue.jsとElement UIを使用した際に、デフォルトでは中国語表記となります。これを日本語化する方法をご紹介します。... Google Meetに参加できず、「あなたはこのビデオハングアウトに参加できません」というメッセージが表示された場合の確認ポイントをまとめました... キーボード入力ができない!文字が打てなくなった!という場合の原因の1つである「固定キー機能」について、無効化する方法をご紹介します。... 個人の実印・銀行印・認印や法人の代表印・角印・銀行員・資格丸印について、画像ファイルとして作成する方法をご紹介します。... 新型コロナウィルスの感染拡大に伴い、テレワーク用の机を購入してみましたので、どんな感じかレビューをしてみました。... Windows環境でSafariを利用したい場合、FirefoxのアドオンであるUser-Agent Switcher and Managerを使うとよいかもし... エクセルで作った表をワードに張り付ける際に、ワードの余白からはみ出して張り付けられてしまうケースがあります。ズレずにうまく張り付ける方法をご紹介します。... PDFファイルに注釈文字や図形を入れて編集する方法をご紹介します。Adobe Acrobat Raaderの注釈ツールを活用します。... Webページやエクセル、ワード、パワーポイント、テキストファイルなど、文字の大きさを変更して表示したいときがあるかと思いますが、この方法を覚えておけば汎用的にす... ブラウザに保存してあるサイトのログインID・パスワード情報の確認方法|Chrome&Edgeの場合. 動かなくなったという方は、まず動かないPCにインストールされているOfficeが32ビットなのか64ビットなのかを確認してみましょう。 DLLを64bit環境でも動くようにするための手順 ただ、強制的にインストールするとExcelなどのOfficeアプリケーションを開く度に、Windowsインストーラーが起動し構成の進行状況の画面が起動するようになってしまいます。(終わるまで待たなくても、途中で閉じてもExcelは使えます。) ブログを報告する, "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:\test.accdb;". Visual Studio 64 bit? .NETでWindows 64ビットプラットフォームを検出する方法.NETアセンブリがx86またはx64向けにビルドされたかどうかを判断する方法は? SQL Serverブラウザを起動できません. "Provider=Microsoft.Jet.OLEDB.4.0;" → "Provider=Microsoft.ACE.OLEDB.12.0;", 但し、これにはAccess2010以降がインストールされているか、Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントのインストールが必要。 What is going on with this article? 既存アプリケーションの改善作業で仕方なくmdbを使う必要がまだあったりするんですよね。, 静岡県島田市在住ののシニアSE(元Microsoft MVP 2010-2012)がコンピューター、機械学習、Unity、数学について考える。. ワイドベースと言うDBをWin10で使いたい, AnyCPUのままの場合、64bitではドライバーを切り替えないとエラーになります。IntPtr.Size == 8だと64bitであると判定できるため、ドライバーを切り替えます。 なんとか上手く撮れた。(それでも薄い)プロンプトには「VBScriptが見つかりません」と書いてあるではないか。 Q VBSが起動しない. のキーの値を Accessに接続するマクロでは、Microsoft.Jet.OLEDB.4.0 を使用している場合が多いと思いますが、64ビット版では提供されていないようです。ないものはないので、使えないということです。 プロバイダーが見つかりません. 新しいPCを購入すると64bit版Windowsになっていることが多くなってきました。.NET(AnyCPU)のアプリケーションなどで「Microsoft.Jet.OLEDB.4.0」を使用してMDBやExcelの操作をしようとした場合、下記エラーが発生します。 「'Microsoft.Jet.OLEDB.4.0' プロバイダはローカルのコンピュータに登録されていません。」 原因は、64bit版Windowsには「Microsoft.Jet.OLEDB.4.0」が提供されていないためです。 では、どうするかというと64bit版Windowsには32bitプログラムを動かす仕組み「WOW64」があり … じゃあ、どうするかというとこんなショートカットを作成し、VBSが明示的に32bit環境で実行されるようにする。 ブログ作成で使える無料キャプチャーツールならScreenpresso | 注釈や囲いの編集設定が簡単! 何かもっと良い方法があるのだと思うのだが 新しいPCを購入すると64bit版Windowsになっていることが多くなってきました。.NET(AnyCPU)のアプリケーションなどで「Microsoft.Jet.OLEDB.4.0」を使用してMDBやExcelの操作をしようとした場合、下記エラーが発生します。 実行時エ … (もしここでregeditを編集できませんとなったら、キーを右クリックしてアクセス許可), はぁ、プレインストールされているだけでもうざいのに、消えたあとにも悪さをする。立派なマルウエアと思うんですけど、どうなんでしょう。, Namarebaさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog Help us understand the problem. Microsoft Officeの旧バージョンで作成されたVBAマクロ(Excel、Access)を最新バージョンのOfficeや最新OSで動かそうと思っても、そのままでは動かないというケースはとても多いです。, VBAマクロ内で使用されているDLL(Win32API)が新PCで動かずにエラーが発生する, 例として4つほど上げましたが、今まで動いていたVBAマクロが動かなく場合、大抵はこれらのどれかに当てはまることが多いです。また、場合によっては複数に当てはまっているケースもあり得ます。, いっそのこと過去に作られたVBAマクロは使わないようにしたいところですが、中々そういうわけにもいかないことも多いです。VBAマクロが使えないことで場合によっては業務が止まってしまう可能性もあり、どうにか継続利用できるようにしたいというのは出てきて当然の声だと思います。, 動かなくなったVBAマクロを動かせるようにするには、次の状況がそろっている必要があります。, VBAマクロを作った人がいるならばその人にお願いすれば修正してくれると思いますが、いない場合は自力で解決するか誰かにお願いするかが必要です。自力で解決する場合はVBAの知識が無いとまず修正することはできません。, 今回の記事ではVBAの知識がある方に向けて、VBA内で使用しているDLL(Win32API)を64ビット環境で動くように修正対応する方法をご紹介します。, 色々なサイトで対応方法は載っていますが、個人的にわかりづらい部分が多かったので、わかりやすいように流れを整理してみました。, VBAを使っているような場合で特にWin7からWin10へのPCの入れ替えを行ったら動かなくなったという方は参考になるかと思います。, DLLが原因でVBAマクロが動かなくなる最大の理由は、PCにインストールされているOfficeのバージョンです。ここで指しているバージョンというのは、Access 2010/2013/2016/2019のようなバージョンではなく、32bit版なのか64bit版なのか、ということです。, この理由により、VBAマクロが動かないというのはほぼ間違いなく、次のような環境になっていると想定されます。, 元々Windowsは32bit版のみで、それに伴いOfficeも32bit版しかありませんでした。, それが、PCに搭載されるメモリが2GBを超え始めたころから性能を最大限利用するために64bit版が出始めて、Officeも32bit版と64bit版の2種類存在するようになりました。(たぶん・・), Officeの64bit版が出始めたころは、32bit版から64bit版に変えたら色々と問題が出たようで、Microsoftとしても32bit版が推奨していました(確か・・), で、なんやかんやあって、記事投稿時点(2020年6月時点)ではOfficeのバージョンは特に気にされなくなって、64bit版が多く使われるようになっていると思います(たぶん・・・)。, というのが、今まで動いていたマクロが動かなくなった状況として多いのではないかと思います。, 動かなくなったという方は、まず動かないPCにインストールされているOfficeが32ビットなのか64ビットなのかを確認してみましょう。, VBA内で使用されているDLLはWin32APIなので、32ビット用のAPIです。, そのため、これを64ビット環境でも動くように修正をする必要がありますので、次の手順で該当箇所を修正してみましょう。, Accessファイルの場合、起動時にマクロが動いてしまってエラーメッセージが表示され強制終了してしまうようなケースがあります。このような時は、Shiftキーを押しながらAccessファイルを開くとマクロが実行されずにAccessファイルを開くことができます。, 次に、Visual Basic Editorを開き、VBAのソースをどれでもいいので表示します。, この状態でctrl+fをクリックして検索ボックスを表示し、dllと入力、対象を「カレント プロジェクト(C)」にチェックして、次を検索ボタンをクリックします。, 該当する部分が表示されますので、この状態でツールバーの青い旗をクリックしてブックマークします。, カーソルがある行にブックマークが設定されます。ブックマーク後はこのように目印が表示されるようになります。, Visual Basic Editorにブックマーク用のツールバーが表示されていない場合、, ブックマークをすることで、ブックマーク移動ボタンから次のブックマークに遷移することができるようになります。, 64bit版で動作させるようにする場合、DLL呼び出し用の関数にPtrSafeを付ける必要があります。64bit版で動作させるためにこれは必須の設定となるため、必ず設定します。, マクロを利用するPC環境として32bit版と64bit版が混在するような場合、関数の定義をそれぞれで動かすために条件分岐を行います。, If VBA7 Then の中に64bit版用の宣言を書き、#Elseの中に32bit版用の宣言を書きます。, 厳密にはVBA7での判定だけではなくWin64での条件分岐も必要なようですが、VBA7だけでも動くのでここではWin64での判定は行っていません。, 注意点としては、参照型の部分のみLongstrに変えるということです。Long型の部分を全てLongstrに変えるということではありません。, また、パラメータの他に、関数の戻り値、関数のパラメータで使用している構造体もあわせて変更する必要があるので、忘れずに変換するようにしましょう。, とはいえ、使いたい関数がLong型を使っている場合に、どの部分がLongの参照型でLongstrに変える必要があるのかを見つけるのは中々めんどくさいです。, そんな方のために、以下のサイトにWin32API_PtrSafe.TXTがあるのを見つけました。, このテキスト内を関数名で検索し、その関数部分をコピペすれば基本的には64bit環境で使えるようになりますので、参考にしてみて下さい。(構造体の宣言も記載されているので、合わせてコピペしましょう), 基本的には関数の宣言部分のみ変更すれば64bit版環境でもVBAが動くようになりますが、中にはそれだけでは動かないケースがあります。, その最たる例がGetSaveFileNameを利用してダイアログ表示する場合です。, GetSaveFileNameの場合、この関数を利用して構造体のサイズをlStructSizeに設定しますが、64bit環境ではLenBを使用する必要があります。32bit環境ではLenで動きますが、64bit環境ではLenでは動かない(エラーが出ない代わりにダイアログも出ない)という状況になります。, VBA DLL(Win32API)を64ビット環境で動くように修正対応する方法についてご紹介しました。, ダイアログ・ツールチップ・トーストを簡単に実現できるJavaScriptライブラリ|jBox, エクセルで住所分割|都道府県・市区町村・町名番地に分ける方法(サンプルExcelダウンロード可能), Excel関数を用いてスペース(区切り文字)なしの氏名を名前と苗字(姓と名)に分ける方法. (Officeは32bitと64bitのサイドバイサイドインストールはできません。) (adsbygoogle = window.adsbygoogle || []).push({}); Follow @tsubaiso1 !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)? このようにすることで64bit環境でも、32bitOSのエミュレートによる恩恵を受けることが出来、Driverを使ったファイルへのアクセスも可能となる。 まあ、普通にOfficeを使っている分にはぜんぜん32bitでいいと思うのだけど、時代は64bit。 Accessがインストールされていない環境では「Microsoft.ACE.OLEDB.12.0」はMicrosoft Access データベース エンジン 2010 再頒布可能コンポーネントのインストールしないと使えないこともあって、この方法はお勧めしません。 主にOffice系やWeb系の仕事上のちょっとした「分からない」ことへのヒント、個人的に気になることを記事にしています。, Access×Windowsバージョンによって違う日付の令和表示可否 | 新元号対応, Windows環境でSafariを動かすFirefoxアドオン|User-Agent Switcher and Manager. VBSciript.dllの置いてあるパスにしてあげる。 また、Accessに関しては起動できない旨のエラーと再インストールしてくださいのメッセージが表示されてしまいます。, 【追記 2017/10/20】 VBScriptでCreateObjectをするスクリプトが動きません。 ActiveXを公開しているDLLがあり、それを利用する実行 ファイル(*.EXE)からは利用できるのですが、VBScriptから では「***というオブジェクトが作成できませんでした。 (コード800700C1)」と出ます。 Content dated before 2011-04-08 (UTC) is licensed under CC BY-SA 2.5. 参照:ADO.NETでExcelファイルに接続する, ソースリストがあればx86でコンパイルし直せばいいが、実行ファイルしか存在しない場合は下記ツールを使用する。

Vlan とは 初心者, Dell G3 15 メモリ増設, 子育て 中 ムートン ブーツ, 炊飯器キッシュ チーズ なし, Wqhd フルhd 動画, Ssdからssd 換装 Windows10, ノートパソコン Sdカード 認識しない, ライン 電話番号なし 子供, Zoom Googleでサインイン パスワード,