2017-03-08 6 views
0

2つのスプレッドシートがあります。スプレッドシート1とスプレッドシート2と呼ぶことにします。スプレッドシート1には、その月の曜日を生成する関数があり、月末になると、スプレッドシート2のモジュール/サブを呼び出そうとしています。これは、 「毎日」のレポートと「毎月の」レポートの両方が表示されます。2つの問題 - インスタンス化されたブックの変更の保存と他のブックのアクティブ化

この時点で、2つのエラーがあります。最初は、作成したスプレッドシート2の新しいインスタンスを保存しようとしています。エラーは、ブックをマクロフリー形式で保存するかどうかを確認することです。私は単にそれを保存したい!書式設定を変更しないでください。インスタンス化されたブックオブジェクトへの変更を保存しようとしていることさえ確信していません。

2番目がスプレッドシート2になっていますが、アクティブシートに設定しても、アクティブシートはスプレッドシート1のワークシートとして最初に表示されます。

何か助けていただければ幸いです。

対象のワークシートでは、モジュールWriteReport、サブルーチンCheckSpreadsheetに次のコードがあります。

Option Explicit 

Public Sub CheckSpreadsheet(wbook As Excel.Workbook) 


    Set wosheet = wbook.Sheets("Monthly") 

wosheet.Cells(5, 5) = "Hello world!" 

End Sub 
+1

実行しているコードがExcelのVBAにある場合は、「Excel.Application」の2番目のインスタンスを開く特別な理由はありますか? – Jordan

+0

希望は、ワークブック2を開き、それが見えるようにすることができないことでした。私はstackoverflow上の他の投稿によってアドバイスされました。これは、ワークブックオブジェクトに.visibleプロパティがないため、新しいアプリケーションを開くことです。 – bdpolinsky

+1

十分に十分です。この問題は、 'Application.Run'を使って最初のExcelインスタンスから起動する' CheckSpreadsheet'サブルーチンを呼び出し、2番目に開いている 'Excel.Workbook'変数を渡しているという事実が原因ですExcelのインスタンス。 'Application.Run'を' app.Run'に置き換えて、Excel – Jordan

答えて

1

は、ブックを非表示にするプロパティは、ブックで使用されるExcelのウィンドウを隠すために、Windowsで、エクセルの別のインスタンスを持っている必要はありません。また、ワークブックに複数のウィンドウを含めることもできます。

あなたが隠したいワークブックはこの行だけ一つのウィンドウの使用を持っていることが確実な場合:私はこれを信じる

Sub Wbk_Hide() 
Dim wbk As Workbook, wdw As Window 
    Set wbk = Workbooks("WbkName") 'Update as required 
    For Each wdw In wbk.Windows 
     wdw.Visible = False 
    Next 
End Sub 

:ワークブックは複数のウィンドウは、この手順を使用している場合

Workbooks("WbkName").Windows(1).Visible = False 

をプロシージャの範囲を変更します。

+0

これまでのご意見、ご協力をいただきありがとうございます。あなたのやり方はうまくいきます。私が開いているすべてのワークブックとアプリケーションを閉じてもらうことができないので、私は今のところそれについていけません。残りの問題は、スプレッドシート2のマクロが何もしていないように見えることです。 wosheet.Cells(5、5)= "こんにちは!" - 更新されたコードを見る – bdpolinsky

関連する問題