2013-08-01 162 views
0

經過多次嘗試和磨難後,我終於可以最小化我的應用程序從一個winform按鈕。該代碼完美的作品:應用程序最小化後無法最大化應用程序

Private Sub btnMinWindow_Click(sender As Object, e As EventArgs) Handles btnMinWindow.Click 

    'This procedure runs when the btnMinWindow is clicked. 
    'The procedure minizmizes the form and Excel. 


    Dim WB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook) 

    Me.WindowState = FormWindowState.Minimized 
    WB.Application.WindowState = XlWindowState.xlMinimized 

End Sub 

所以當然,什麼是最小化最終需要最大化。所以我認爲我所要做的只是使用xlMaximized的相同代碼。當然,我的假設是錯誤的。這裏是我的代碼:

Private Sub btnMinEmployeeDashboard_Click(sender As Object, e As EventArgs) Handles btnMinEmployeeDashboard.Click 

    'This procedure runs when the btnEmployeeDashboard button is clicked. 

    Dim WB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook) 
    WB.Application.WindowState = XlWindowState.xlMaximized 
    WB.Sheets("employeeBoard").Select() 

    Me.Close() 


End Sub 

代碼關閉表單,選擇表,但它並沒有將窗口最大化。我認爲我必須做的是讓變量使它已經「已經最小化」(範圍內)到按鈕_Click處理程序,並用它來代替聲明一個新變量。不幸的是,如果是這樣的話,我不知道該怎麼做。

+0

這是VB.net和你正在使用你的應用程序做辦公室互操作(使用MS Excel交互)?或者這是** VBA **並且是Excel中的一個宏?他們是不同的東西。知道這一點會很有幫助,並且可能會提供一些背景信息,說明您的應用的功能/工作原理。如果沒有這些,你現在顯示的內容有點混亂。 –

+0

@jonathon我正在使用VB網絡和即將在辦公室互操作。基本上我有一個表單作爲工作簿的起始頁面。工作開始時被最小化了,但是當我點擊按鈕時,我的表單選擇了一個工作表,但假設它不是 –

+0

除非我完全錯誤,否則您要麼使用「VB.net(Visual Studio)中的Office Interop」或者您在Excel本身內使用「VBA(Visual Basic for Applications)」。這是什麼? –

回答

0

經過一番研究,我找到了能夠使其工作的代碼。那就是:

Public Class Form1 

    'Declare functions and constants 
    Private Declare Function ShowWindow Lib "user32" (ByVal handle As IntPtr, ByVal nCmdShow As Integer) As Integer 
    Private Const SW_SHOWMAXIMIZED As Integer = 3 


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     'Specify part of the window title you want. Get its window handle: 
     Dim hwnd As String = findPartialTitle("Notepad") 

     'Send hwnd to showwindow function 
     ShowWindow(hwnd, SW_SHOWMAXIMIZED) 

    End Sub 

    'FUNCTION: Find handle by partial window title 
    Private Function findPartialTitle(ByVal partialTitle As String) As IntPtr 
     For Each p As Process In Process.GetProcesses() 
      If p.MainWindowTitle.IndexOf(partialTitle, 0, StringComparison.CurrentCultureIgnoreCase) > -1 Then 
       Return p.MainWindowHandle 
      End If 
     Next 
     Return IntPtr.Zero 
    End Function 

End Class 

http://www.techusers.net/60/how-maximize-external-application-window-title-vbnet

0

嘗試將Excel對象實例化爲類/模塊/全局變量,然後使用此變量在Excel文件保持打開狀態時對其執行操作。

相關問題