Visual Studio 2013でプログラムを作成する必要がありますが、動作しないため、Microsoft Excelとその開発プレイグラウンドですべての可能性をテストしました。私は(私が使用する必要があるプログラムを供給会社が提供する)は、次のバージョンで開始:これは、基本的にアプリケーションX2000.exeを開始しVBA CreateObjectは64Bit WindowsでActiveXコンポーネントを作成できません
Sub Main()
Dim XServer As X2000.Server
Dim XApp As X2000.Application
Dim XSR As X2000.ScriptRoutines
Set XServer = New X2000.Server
Set XApp = XServer.AppConnection() '<- This actually fires the application
XApp.Visible = True
Set XSR = XApp.ScriptCommands
XSR.DATA_FILENAME = "C:\X2000\myFile.x" ' <- Code blocks here
End Sub
、そこに私のコードを接続し、その後DATA_FILENAME
逢引ルーチンを実行し、プログラムにmyFile.x
をロードしてください。その時点でそのライセンスがチェックされているので、私はアプリケーションを起動する必要があります。私は他の選択肢がありません。
今、このバージョンでは、コードは他の情報なしで "A dll is missing"と言って最後の行でブロックしていました。
Dim XServer As X2000.Server
Dim XApp As X2000.Application
Dim XSR As Object
Set XServer = New X2000.Server
Set XApp = XServer.AppConnection()
XApp.Visible = True
XSR = CreateObject("XApp.ScriptCommands")
これは同様に動作しませんが、私はより多くの情報の一片与えなかった:「ActiveXコントロールは、オブジェクトを読み込むことができませんでしたが、」私は、次の手順を実行して、ScriptRoutines
オブジェクトを遅延バインディングみました。私はちょっとした研究をしたが、X2000.exe
はフォルダーに見つからなかったMSVBVM60.DLL
に依存していることを「Dependancy Walker」を通して知っていた。私のシステムは64ビットなので、Excelもまた、32ビット互換性を使用してVS2013でコードを試しても、コードは機能しませんでした。
私はので、私はX2000.exe
のみ32ビットシステムで動作するように書かれたことを疑われ、 sysWoW64
ではなく、すでにMSVBVM60.DLL
を持っていた...だけsystem32
がそのまま残っていたことを、見つけるために、このファイルが含まれていたthe service pack from Microsoftを、インストール:私が間違っていました。このコードは、私は、この互換性の問題を処理するために信じるactxserver
function、おかげで動作します
function [Data,eng_or_met] = Read_X2000_File_BB_2(sFileName)
XServer = actxserver('X2000.server');
XApp = XServer.AppConnection;
XApp.Visible = 1;
objX2000 = XApp.ScriptCommands;
objX2000.data_filename = "C:\X2000\myFile.x";
delete(XServer);
:
私の同僚は、MATLABコードで書かれた同じプログラムを実行する可能性があります。
Excel/VS2013でどうすればいいですか?
EDIT:
Iはomegastripesによって示唆コードを試みた:
Dim XSR As Object
Set XSR = CreateObjectx86("XApp.ScriptCommands") ' create ActiveX via x86 mshta host
はCreateObjectx86
機能linked hereあります。私は両方If/Else
条件を試してみましたが、最後にオブジェクトが両方で、とにかく作成されません。最後の行は、私は、コードを変更しない場合に実行する内容である
Set CreateObjectx86 = oWnd.CreateObjectx86(sProgID)
と
Set CreateObjectx86 = CreateObject(sProgID)
(したがって、#If Win64
ではありません)。
EDIT:この質問に対する最初の答えを1として
、私も試してみました:
Dim XServer As Object
Dim XApp As X2000.Application
Dim XSR As X2000.Script
Set XServer = CreateObject("X2000.Server")
Set XApp = XServer.AppConnection()
XApp.Visible = True
Set XSR = X2000.ScriptCommands
だけ私は同じエラーを取得見つけるために。
actxserverはまったく同じことを行っている可能性がありますが、コンテキストは異なります。あなたのアプリがVB6を使って書かれていたなら、あなたはMSVBVM60.dllをどこかに持っていなければなりません。これを実行します:https://www.microsoft.com/en-us/download/details.aspx?id=24417これもチェックしてくださいhttps://blogs.msdn.microsoft.com/deva/2009/12/30/development -is-visual-basic-6-0-runtime-still-supported /あなたのアプリケーションがVB6のローカライズ版を使用してビルドされている場合は、ローカライズされたVB6サポートバイナリをインストールしてください。 –
* Microsoftからサービスパックをインストールしました。ファイルが含まれていた* < - 私はすでにあなたが私にリンクしているファイルを実行しました。私は 'X2000'がローカライズされたVB6で作られたことを確信することはできませんが、それはVB2000で提供される標準的なバージョンであると思います。VB2000の提供元は米国 – Noldor130884
アメリカからは、あなたが本当にローカライズされたものは必要ないと思います。私がやることは、sysinternalのprocmonツールとモニタファイル(プログラムのexe名によるフィルタ)を使うことです。これは、欠落しているものを特定するのに役立ちます。それはサテライトファイルでも、あなたが考えていないファイルでもかまいません。 –