2017-04-17 9 views
0

私は、アプリケーションが複数のスプレッドシートに使用され、名前の形式が常に異なるというプロジェクトがあります。メニューからファイル→開くを使用して、デスクトップからスプレッドシートを選択するウィンドウを開きます。私はそのためのVBScriptのコードを持っているが、データを収集または入力するためにブックをアクティブ化することはできません。VBScript URLなしで開いたExcelスプレッドシートを有効にする

WShell.SendKeys "%FO" 

objExcel.Wait (Now + TimeSerial(0, 0, 3)) 

For i = 1 to 3 
    WShell.SendKeys "+{TAB}" 
Next 

WShell.SendKeys "{HOME}" 
WShell.SendKeys "D" 
WShell.SendKeys "{ENTER}" 

MsgBox "Please select the file you want to open, then click OK to continue.", _ 
    vbOKOnly+vbSystemModal, "Open File" 

WShell.SendKeys "{ENTER}" 

Set objWorkbook = ThisWorkbook 

objWorkbook.Sheets(1).Activate 
objWorkbook.Sheets(1).Cells(1, 1).Value = "Hello" 

Set objWorkbook = ThisWorkbook名前またはURLを使用せずに現在のワークブックを有効にします。誰かがこれで私を助けることができますか?

+2

参照:https://msdn.microsoft.com/en-us/library/office/ff836226.aspx –

+0

Scottさんのコメントあなたのソリューションに 'SendKeys'が含まれているときはいつでもどこかに間違った方向に回り、あなたのソリューションを再構築する必要があります。 –

+0

両方ともありがとうございますが、スコットのコメントにリンクを使用すると、 'Next ... NextLngCount'に到達すると、' For ... Next'ループでエラーが発生します。私は、それ以上のことが必要だと思っています。それは、Macro Express ProのVBScriptを外部スクリプトとして使用しているときに、VBAソリューションだからです。 – Lou

答えて

0

私はそれを動作させる方法を考え出しました。私が開いたExcelスプレッドシートを開いて、今開いたものが利用可能かどうかを調べる必要がありました。 注:これは、1つのスプレッドシートを開くときにのみ有効です。これは、[開く]ダイアログボックスで開かれたものです。

WShell.SendKeys "%FO" 

objExcel.Wait (Now + TimeSerial(0, 0, 3)) 

For i = 1 to 3 
    WShell.SendKeys "+{TAB}" 
Next 

WShell.SendKeys "{HOME}" 
WShell.SendKeys "D" 
WShell.SendKeys "{ENTER}" 

MsgBox "Please select the file you want to open, then click OK to continue.", _ 
vbOKOnly+vbSystemModal, "Open File" 

WShell.SendKeys "{ENTER}" 

On Error Resume Next 
    Set objExcel = GetObject(,"Excel.Application") 
    If Err.Number <> 0 Then ShowError ("Macro failed to get Excel object.") 
On Error GoTo 0 

objExcel.Wait (Now + TimeSerial(0, 0, 1)) 

For Each WB In objExcel.Workbooks 
    Set objWorkbook = WB 
Next 

objWorkbook.Sheets(1).Activate 
objWorkbook.Sheets(1).Cells(1, 1).Value = "Hello" 

これは、セルA1に「こんにちは」オープンスプレッドシートを取ると、入力します。

関連する問題