Excel2007でプレビュー表示するには
投稿者 みかちゃん  (社会人)
投稿日時
2008/10/7 03:08:20
ちなみに
コードはこんな感じです。
■■■ VB2005側 ■■■
Public Sub TEST
Dim xlApp As Object = CreateObject("Excel.Application")
Dim xlBooks As Object = xlApp.Workbooks
Try
Dim xlFilePath As String = "C:\Test.xls"
Dim xlBook As Object = xlBooks.Open(xlFilePath)
Try
xlApp.Visible = True 'Excelを表示
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
Finally
xlBook.Close(False) 'xlBook を閉じる
MRComObject(xlBook) 'xlBook の解放dd
End Try
Finally
MRComObject(xlBooks) 'xlBooks の解放
xlApp.Quit() 'Excelを閉じる
MRComObject(xlApp) 'xlApp を解放
End Try
End Sub
Private Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
If objCom Is Nothing Then
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
If force Then
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
End If
End If
Finally
objCom = Nothing
End Try
End Sub
■■■ Excel側 ■■■
Public Sub プレビュー()
Workbooks("Test.xls").Sheets("Test").Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub
コードはこんな感じです。
■■■ VB2005側 ■■■
Public Sub TEST
Dim xlApp As Object = CreateObject("Excel.Application")
Dim xlBooks As Object = xlApp.Workbooks
Try
Dim xlFilePath As String = "C:\Test.xls"
Dim xlBook As Object = xlBooks.Open(xlFilePath)
Try
xlApp.Visible = True 'Excelを表示
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
Finally
xlBook.Close(False) 'xlBook を閉じる
MRComObject(xlBook) 'xlBook の解放dd
End Try
Finally
MRComObject(xlBooks) 'xlBooks の解放
xlApp.Quit() 'Excelを閉じる
MRComObject(xlApp) 'xlApp を解放
End Try
End Sub
Private Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
If objCom Is Nothing Then
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
If force Then
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
End If
End If
Finally
objCom = Nothing
End Try
End Sub
■■■ Excel側 ■■■
Public Sub プレビュー()
Workbooks("Test.xls").Sheets("Test").Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub
投稿者 カムリン  (社会人)
投稿日時
2008/10/7 03:27:52
デバック時は出来るってことなので、
これはどうかな?
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
System.Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(1000)
これはどうかな?
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
System.Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(1000)
投稿者 るしぇ  (社会人)
投稿日時
2008/10/7 03:40:14
>デバック時は出来るってことなので、
>これはどうかな?
PrintPreview しちゃうとそこでコードが待ち状態になるみたいなので
後ろのコードは実行されないかも?
(Book 閉じてるし、ボクも最初なんでできるの?って思ったところですが)
となるとマクロ実行前かマクロ側で?。。。2007固有っていうところも
厄介だねぇ。
ちなみにExcel2007でマクロの記録したらプレビューのコードは変わって
いませんでしたか?
>これはどうかな?
PrintPreview しちゃうとそこでコードが待ち状態になるみたいなので
後ろのコードは実行されないかも?
(Book 閉じてるし、ボクも最初なんでできるの?って思ったところですが)
となるとマクロ実行前かマクロ側で?。。。2007固有っていうところも
厄介だねぇ。
ちなみにExcel2007でマクロの記録したらプレビューのコードは変わって
いませんでしたか?
投稿者 みか  (社会人)
投稿日時
2008/10/7 03:42:17
カムリンさん、レスありがとうございます。
結果は同じでした。
結果は同じでした。
投稿者 みかちゃん  (社会人)
投稿日時
2008/10/7 03:48:23
るしぇさん、レスありがとうございます。
Excel2000とExcel2007マクロの記録をとってみると、
両方とも同じコードでした。
ActiveWindow.SelectedSheets.PrintPreview
Excel2000とExcel2007マクロの記録をとってみると、
両方とも同じコードでした。
ActiveWindow.SelectedSheets.PrintPreview
投稿者 みかちゃん  (社会人)
投稿日時
2008/10/7 04:28:50
フォームの非表示と表示を
間に挟めば目的のことが
できそうです。
'非表示
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
'表示
ありがとうございました。
間に挟めば目的のことが
できそうです。
'非表示
xlApp.Run("Test.xls!プレビュー") 'マクロ実行
'表示
ありがとうございました。
ということをしたいのですが、
Excel2000では、うまくできているのですが、
Excel2007になると、デバック時には、できたものが
ビルド後、Exeから起動させると
Excelが最小化になったままで、
エクセルがアクティブになりません。
エクセルマクロからプレビュー処理をしています。
VB2005側でエクセルプレビューをしたり
VB2005側のフォームを最小化したり、
Processを取得して、
AppActivate(p.Id)
など、してもエクセルが最小化になったままでした。
どうしたらよいでしょうか?
宜しくお願い致します。