2016-05-10 13 views
2

私はいくつかの助けが必要です。私はブック(A)を持っていて、別のブック(B)を開いてB内のマクロを実行したい。 ワークブック(B)は、別のブック(C)にSQL接続を行い、ワークブック(A)からブックを開き、マクロを実行すると、「ファイルが開いています」(WorkBooK(C))というメッセージが表示されます。 このメッセージをスキップするにはどうすればいいですか?vba Excelデータ接続

enter image description here

接続データを開いたとき、私はエラーを取得します。

ブック(B)を開くためのコードは次のとおり

Sub OpenWorkBookandRun() 
    tarPath = "..............\" 
    strfilename = "..........xlsm" 

    Application.Workbooks.Open tarPath & strfilename 
    'Run Macro 
    Workbooks(strfilename).Activate 
    Application.Run "'................'!Module1.Macro" 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 
End Sub 

およびデータ起源を開くためのワークブック(B)内のコードは次のとおり

' Establezco los parametros de la conexion ADO, el RecordSet y la Cadena de conexion 
Set oCONN = New ADODB.Connection 
Set oRS = New ADODB.Recordset 
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & OrigDatos & ";Extended Properties=""Excel 12.0;HDR=Yes;"";" 
' Abro la conexion y ejecuto la sentencia SQL 
If Not (oCONN Is Nothing) Then 
    If (oCONN.State And adStateOpen) = adStateOpen Then oCONN.Close 
End If 
oCONN.Open strConn <--- Line where i get the error 
oRS.Open strSQL, oCONN, 1, 3 

注意。ときどきfisrtブックでは、同じメッセージが表示されますが、ときどき、誰かがデータの起源を持っているため、理由がわかりません。

答えて

0

ブック(A)からマクロを実行すると、 )? その他の質問は、Workbook(C)に何かを書く必要がありますか?あなたが接続文字列内のパラメータを使用してreadonlyで接続することができます。

strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Data Source=" & OrigDatos & ";Extended Properties=""Excel 12.0;HDR=Yes;"" 
+0

こんにちは、ありがとう。 Worbook(C)はこれまでどおりオープンしていますが、データ付きの表を読むだけでいいです。私がブックBを実行し、メッセージまたはエラーを受け取らないようにするには、接続はブックCを読み取りモードで開きます。私は読み取り専用のパラメータを試してみます。 –

0

Notify = falseに設定してみてください。 MSDNによると、通知プロンプトは、以下の機能、 「ファイルは読み取り/書き込みモードで開くことができない場合は、この引数は、ファイル通知リストにファイルを追加するために真であるがあり

Application.Workbooks.Open tarPath & strfilename, , , , , , , , , ,false 

。Microsoft Excelのでしょうファイルを読み取り専用で開き、ファイル通知リストをポーリングし、ファイルが使用可能になったときにユーザーに通知します。この引数がFalseまたは省略された場合、通知は要求されず、使用できないファイルを開く試みは失敗します。

+0

ありがとう、私はあなたのソリューションを試し、あなたがうまくいけばコメントします。 –