2016-07-24 8 views
1

私は教会のオフィスコンピュータでコンパイルされたVB6プログラムを数年間実行してきました。私は自分の家のコンピュータ(Win 7)にvb6プログラムをインストールしました。このプログラムは問題なく走りました。プログラムはExcelスプレッドシートを開き、ユーザーがスプレッドシート上のデータを操作できるようにしました。vb6がWin 8.1にインストールされました

Windows 7コンピュータがクラッシュしました。私はWindows 8.1のコンピュータを持ち、このコンピュータにvb6をロードしています。インストールは以下のようになり、私は実行時エラー「-2147319779 Automation Error Library not registered.」私のコードのサンプルを取得し、同じVisual Basicのプロジェクトを実行する場合を除いて成功することが表示されます。

Dim oExcel As Excel.Application 
    Set oExcel = Excel.Application 

    oExcel.Workbooks.Open ("C:\FPCE Financial\FY-2014\2014-01 Financials.xls") 
    Application.Visible = True 

エラーが「Set oExcel = Excel.Application」の行で発生します。

ご協力いただければ幸いです。

+2

するために、この

Dim oExcel As Excel.Application Set oExcel = Excel.Application 

を変更してみてください、あなたは、Microsoft Officeがインストールされています。 VBの参照ダイアログにExcelを追加しましたか? –

+0

インストールした32ビット版のOfficeですか? – GSerg

答えて

1

Excelへの参照を設定していない場合は、「レイトバインディング」を使用してExcelオブジェクトを作成する必要があります。 @Noodlesが言うように、もしあなたがOfficeをインストールしていなければ、それは動作しません。

この

Dim oExcel As Object 
Set oExcel = CreateObject("Excel.Application") 
+2

Officeへの参照が設定されていない場合、プロジェクトはコンパイルされません。インテリセンスのないより難しいコーディングモードを望んでいる場合を除き、この場合遅延バインディングに切り替えるとメリットはありません。 – GSerg

+1

@GSerg - それは意味がありません。レイトバインディングは参照を必要とせず、ちょうど良いコンパイルを行います。切り替えのメリットは、コンパイルされたプロジェクトがOfficeの特定のバージョンに関連付けられなくなることです。 – Comintern

+1

@Comintern私はOPのプロジェクトが早期バインディングを使用してコンパイルされているので、プロジェクト設定で参照が明らかに設定されているため、参照が設定されていないときに何をすべきかを示唆していないと言っていました。 Officeバージョンに依存しないのは、コンパイル時に参照しているバージョンを制御するので、それも[問題ではありません]です(http://stackoverflow.com/a/32790396/11683)。サポートしている最も低いOfficeバージョンに対してコンパイルします。 – GSerg

関連する問題