• 締切済み

VBのランタイムエラーについて

MDBファイルのバックアップの処理を毎日タスクで流すためにVBでEXEを作ったのですがエラーが発生しました。 ランタイムエラーのようですがMDBファイルの最適化の処理を追加する前は正常に動作していました。。。 エラー内容は run-time error'13' type mismatch です。 なにかランタイムをインストール必要があるのでしょうか? DBEngine.CompactDatabaseを使っているので参照設定で microsoft dao3.6 object libraryを追加してからおかしいようです。 お知恵をお貸しください>< '_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ '_/ MDBファイル最適化 _/ '_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ defrg = INIfile_read("PATH", "defrag") filename = "abc.mdb" TempFile = Left(filename, Len(filename) - 3) & "bak" 'バックアップ名を作成 DBEngine.CompactDatabase defrg & "\" & filename, defrg & "\" & TempFile '最適化 Kill defrg & "\" & filename filename = Left(TempFile, Len(TempFile) - 3) & "mdb" Name defrg & "\" & TempFile As defrg & "\" & filename

みんなの回答

  • ese_ee
  • ベストアンサー率48% (68/139)
回答No.2

ディストリビューションウィザードでセットアップファイルを作って、 実行環境にインストールしてないとか? であれば、まず、それを実施してください。 実行時エラー 13 型が一致してません みたいなやつで  エラーメッセージが英語で出るということは VB6ランタイムの一部が入ってないってことかも。 あと、 EXEが実行時エラーを出すということは、 エラートラップを確実に行っていないことの裏返しなので、 その辺もよく確認してみてください。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

Dim defrg As String Dim filename As String Dim TempFile As String の3行が無いのが気にかかります。 exe化しない場合は宣言のない文字列型変数があっても暗黙的に宣言された事になって動くのですが、exe化する場合は明示的に宣言しないとダメだった気がします。 Dim文を足して試してみて下さい。

関連するQ&A

  • ACCESSランタイムでエラー

    ACCESS2002で作成したプログラムを、 ACCESS2003ランタイムをインストールした別PCで mdbを起動しボタンをクリックして実行すると、 「実行時エラーが発生したため、このアプリケーションの実行は中断しました。  アプリケーションを続行できません。システムはシャットダウンされます。」 というエラーメッセージが出ます。 作成したPCでは、アクセスでもランタイムでも問題なく動作するので、原因がわかりません。 アクセスファイルが壊れているのではと思い、別ファイルでテストしましたが違いました。 ヒントや参考になるサイトなど、なんでもいいので解決に向けてご教示をお願いいたします。 ※どちらもwin7HPです。

  • mdbの最適化

    mdbの最適化をVB6、またはExcelVBAで行っています。 DBEngine.CompactDatabase "最適化対象mdbのフルパス", "最適化後mdb一時ファイルのフルパス" Kill "最適化対象mdbのフルパス" Name "最適化後mdb一時ファイルのフルパス" As "最適化対象mdbのフルパス" 処理できていたのですが、パスワードつきのmdbの場合DBEngine.CompactDatabaseでエラーになります。 エラーは「パスワードが違います」です。 パスワードはどのように指定するのでしょうか? Database Password=abcの場合、 DBEngine.CompactDatabase "最適化対象mdbのフルパス", "最適化後mdb一時ファイルのフルパス","Database Password=abc"などいくつか試してみましたがダメでした。 どなたかお教えいただけませんか。

  • VB6.0 Dir関数について

    VB6.0について質問です。 指定のフォルダ内にあるMDBファイル名をうまく取得できないのでお知恵をお貸しください。 最初のファイル名は取得できるのですがitem = Dirで次のファイル名を取得できないでいます。 INIfile_readでiniファイルから設定値を取得しています。 エラーメッセージは「プロシージャの呼び出し、または引数が不正です」 最初にファイル名を取得できているときにDirをウォッチ式の追加でみてみたらちゃんと次のファイル名は表示されます。 この場合どのような処理ミスが考えられますか?? path = INIfile_read("PATH", "HD") item = Dir(path & "\" & "*.mdb", vbNormal) Do While item <> "" ' ループを開始します。 date1 = Mid(item, 1, 4) & "/" & Mid(item, 5, 2) & "/" & Mid(item, 7, 2) count = DateDiff("d", date1, Date) '今日とファイル作成日との差を取得 bkup = INIfile_read("DateDiff", "DATE") 'iniファイルから削除す日数を取得 If count > bkup Then Kill (path & "\" & item) End If item = Dir Loop

  • vb6でmdbのOpenDatabase時にエラー

    お世話になります。 PC98の環境でVB6でオフィスの入っていない環境です。 Set db1 = DBEngine.Workspaces(0).OpenDatabase(App.Path & "aaa.mdb",dbDriverComplete) を実行すると ”このプログラムは不正な処理を行ったので強制終了します。” となってしまいます。 昨日までは、エラーなく動いていたのですが原因がわかりません。 ご教授宜しくお願いします。

  • Acces2010のランタイム版だけ、エラー発生

    こんにちは。いつもお世話になっております。 Access2010のVBAでプログラムを組んだのですが。 Access2010がインストールされたPCでは問題ないのですが。 Access2010ランタイム版ではエラーが発生します。 PDFを出力する部分で、↓ DoCmd.OutputTo acOutputReport, "Rpt_Pdf返品明細", acFormatPDF, "C:\11.PDF" ここで、 「コマンドまたはアクション '出力' は無効です。」というエラーメッセージがでます。 これを何とか出さずにPDFファイルを出力できるようにしたいのですが。 アドバイスをもらえたら幸いです。m(__)m Accessファイルの拡張子は,MDBファイル。 開発環境:Windows 7 Pro Access2010本体 実行環境: Windows XP Pro Access 2010ランタイム Windows 7 Pro Access 2010ランタイム

  • ACCESS 2003ランタイムによるEXCELの参照

     ACCESS 2003により他のEXCELファイルを開くプログラムをつくっていたのですがACCESS 2003ランタイムではエラーになってしまいます。EXCELのライブラリがランタイム上にないのではないかと思うのですが、EXCELのライブラリを追加する方法はありますでしょうか?

  • Access 2000で作成したファイルをランタイムで開くとエラーがでる

    Microsoft Access 2000で作成したファイルをAccess ランタイムで開くと date関数やLeft関数が使えなくなりエラーがでました。何が原因でしょうか? ■開発環境 ・WindowsNT4.0+Access2000 ■使用環境 ・Windows98SE+AccessRuntime 検索用 アクセス・Runtime・Visual Basic Editor・ライブラリ・参照設定

  • Windows7 VB6ランタイムのインストール

    フォルダ内のファイル比較ツール 6.27 (FdateCompare) というフリーのソフトウェアをダウンロードして起動すると Fig1のようなメッセージが表示されたので VB6ランタイム(VisualBasic6.0 SP6 ランタイムライブラリ第4版) をダウンロードしてsetup.exeを管理者権限で実行 または、VB6SP6RT4.msiをダブルクックして実行すると 今度はFig2のようなメッセージが表示されました。 「エラー2709オフライン参加完了情報が見つかりませんでした」 で検索してみると、いろいろ見つかりましたが、 ウインドーズアップデートの「KB2918614 」が問題だとか レジストリーエディターでHKEY_LOCAL_MACHINE・・・ を修正するとかかなり難しいことが書かれてして 私にはまったく理解できませんでした。 また、この作業には危険が伴うようなことも書かれていました。 単にソフトウェアを普通にインストールして使いたいだけなのに なぜこのような危険で複雑な処理が必要なのか理解できません。 もっと簡単にVB6ランタイムをインストールすることは できないのでしょうか。OSはWindows7です。 よろしくお願いします。

  • VBからAccessのデータベースをよみたい。けどエラー

    こんにちわ 先日 http://oshiete1.goo.ne.jp/kotaeru.php3?q=681876 でVBからアクセスのデータベースを読み込むことで 質問したものです。 (VB6.0 Access2000 Win2000でやってます) VB6.0にバージョンアップし(DAO3.6を選択するため)、変数も定義できたのですが、 Private Sub Form_Load()の部分で(以下) Set wspace = DBEngine.Workspaces(0) Set dbname = wspace.OpenDatabase(mypath & "\db1.mdb") dbname.QueryTimeout = 0 .QueryTimeoutに対してコンパイルエラーがでてしまいます。「メソッドまたはデータ メンバが見つかりません」というものです。そういえばOpendatabaseなどは「.」を打った時点でメソッド?の一覧が出るのですが、QueryTimeoutはでてきません。 DAO3.6以外にもなにか追加しないといけないのでしょうか? ヘルプで見たのですがメンバとは「コレクション、オブジェクト、またはユーザー定義型を構成する要素。」・・・ということでチンプンカンプンです(ノД`) ちなみにdbname.QueryTimeout = 0の部分をコメントアウトすると、その1つ前の行に対して「型が一致しません」とでてしまいます(ノ∀;) Accessを読み込んだ後は特に複雑なことはしないので(足したり参照する程度)、ここさえのりきれば・・・なのですがエラーばかりでて困ってます(ノД`) それともdb1.mdbファイルじたいがなにか読み込めない形式になってることが原因なのでしょうか? VB超初心者にもわかるようにコメントいただけると嬉しいですM(__)M

  • ACCESS 「COMDLG32.OCXのエラー」

    ACCESSランタイムをインストールしているパソコンで、あるMDBを開こうとしたところ、次のようなエラーがでました。 別のパソコンでは問題なく動作します。 このMDBはマクロにAutoexecというマクロを作っていて、起動して画面を最大化し・・・という処理を入れています。 何か原因となるようなことはあるでしょうか。 <エラー内容> COMDLG32.OCX Version1,2を参照する切断された参照が含まれています よろしくお願いします。

専門家に質問してみよう