簡(jiǎn)明Excel VBA(九)操作Excel工作簿和工作表(Worksheet)

簡(jiǎn)明Excel VBA

本文集同步于GitHub倉(cāng)庫(kù):# bluetata/concise-excel-vba

5.2 打開(kāi)Excel兩種方式

  • 利用 GetObject 方法打開(kāi)Excel文檔
    Sub GetWorkbook()
        Dim wbWorkFile As Workbook
        Set wbWorkFile = GetObject("D:\test.xlsx")
        ' wbWorkFile.Windows(1).Visible = True ' 這種方法打開(kāi)的文件是隱藏的,如果需要顯示,則設(shè)置Visible值為ture
        wbWorkFile.Close False
        Set wbWorkFile = Nothing
    End Sub
  • 利用 Open 方法打開(kāi)Excel文檔
Sub OpenWorkbook()
    Dim wbWorkFile As Workbook
    Set wbWorkFile = Workbooks.Open("D:\test.xlsx")
    wbWorkFile.Windows(1).Visible = False
    wbWorkFile.Close False
    Set wbWorkFile = Nothing
End Sub

延伸其擴(kuò)展方法:

  • GetObject封裝方法,可以作為共通Function
Sub GetWorkbook()
    Dim objExcel                As Object       ' 用于存放Microsoft Excel 引用的變量。
    Dim blnExcelWasNotRunning   As Boolean      ' 用于最后釋放的標(biāo)記。

    ' 測(cè)試 Microsoft Excel 的副本是否在運(yùn)行。
    On Error Resume Next                        ' 延遲錯(cuò)誤捕獲。
    ' 不帶第一個(gè)參數(shù)調(diào)用 Getobject 函數(shù)將返回對(duì)該應(yīng)用程序的實(shí)例的引用。如果該應(yīng)用程序不在運(yùn)行,則會(huì)產(chǎn)生錯(cuò)誤。
    Set objExcel = Getobject(, "Excel.Application")
    If Err.Number <> 0 Then blnExcelWasNotRunning = True
    Err.Clear                                   ' 如果發(fā)生錯(cuò)誤則要清除 Err 對(duì)象。

    Set objExcel = Getobject("C:\excel.xlsx")   ' 將對(duì)象變量設(shè)為對(duì)要看的文件的引用。

    ' 設(shè)置其 Application 屬性,顯示 Microsoft Excel。然后使用 objExcel 對(duì)象引用的 Windows 集合顯示包含該文件的實(shí)際窗口。
    objExcel.Application.Visible = True
    objExcel.Parent.Windows(1).Visible = True
    ' 在此處對(duì)文件進(jìn)行操作。
    ' ...
    ' 如果在啟動(dòng)時(shí),Microsoft Excel 的這份副本不在運(yùn)行中,則使用 Application 屬性的 Quit 方法來(lái)關(guān)閉它。
    ' 注意,當(dāng)試圖退出 Microsoft Excel 時(shí),標(biāo)題欄會(huì)閃爍,并顯示一條消息詢(xún)問(wèn)是否保存所加載的文件。
    If blnExcelWasNotRunning = True Then
        objExcel.Application.Quit
    End IF

    Set objExcel = Nothing   ' 釋放對(duì)該應(yīng)用程序

End Sub
  • OpenWorkbook封裝方法,可以作為共通Function
Function OpenWorkbook(ByVal strWorkbookFilePath As String)
    Dim wb As Workbook
    Dim fileName As String
    fileName = Dir(strWorkbookFilePath)

    On Error Resume Next
    Set wb = Workbooks(fileName)
    On Error GoTo 0
    If wb Is Nothing Then
        Set wb = Workbooks.Open(strWorkbookFilePath)
    End If

    Set OpenWorkbook = wb

End Function

<a name="5.2"></a>

5.3 操作Excel工作表(Worksheet)

5.3.1 移動(dòng)工作表

移動(dòng)工作表是指將工作表移到工作簿中的其他位置。
在VBA中,可以使用WorkSheet.Move方法來(lái)移動(dòng)工作表。

語(yǔ)法:表達(dá)式.Move(Before, After)
其中,在Move方法中,主要包含兩個(gè)參數(shù),其功能如下:

Before 在其之前放置移動(dòng)工作表的工作表。如果指定了After,則不能指定Before。
After 在其之后放置移動(dòng)工作表的工作表。如果指定了Before,則不能指定After。
例如:移動(dòng) "工資表" 至Sheet3工作表之后,可以輸入以下代碼:

Sub 移動(dòng)工作表()
    Sheets("工資表").Select
    Sheets("工資表").Move After:=Sheets(3)
End Sub

另外,如果既不指定Before也不指定After,Microsoft Excel將新建一個(gè)工作簿,
其中包含所移動(dòng)的工作表。例如,輸入以下代碼,即可新建一個(gè)工作簿,
且該工作表中包含有 "工資表" 工作表。

Sub A()
    Sheets("工資表").Move
End Sub

5.3.2 復(fù)制工作表

復(fù)制工作表是指將工作表進(jìn)行備份,以便于用戶(hù)對(duì)備份文件進(jìn)行操作時(shí),不會(huì)損壞原有文件。
在VBA中,使用Sheets.Copy方法可以將工作表復(fù)制到工作簿的另一位置。
語(yǔ)法:

表達(dá)式.Copy(Before, After)

其中,在Copy方法中,包含的兩個(gè)參數(shù)與在Move方法中的參數(shù)相似,其參數(shù)功能如下:
Before 將要在其之前放置所復(fù)制工作表的工作表。如果指定了After,則不能指定Before。
After 將要在其之后放置所復(fù)制工作表的工作表。如果指定了Before,則不能指定After。
例如:復(fù)制 "工資表" 表格至Sheet3工作表之后,可以輸入以下代碼:

Sub 復(fù)制工作表()
    Sheets("工資表").Select
    Sheets("工資表").Copy After:=Sheets(3)
End Sub

另外,用戶(hù)還可以在不同的工作簿之間進(jìn)行復(fù)制。
例如:將當(dāng)前工作簿中的“工資表”工作表復(fù)制到打開(kāi)的Book1工作表中,可以輸入以下代碼:

Sub 復(fù)制工作表至Book1中()
    Sheets("工資表").Copy After:=Workbooks("Book1").Sheets(1)
End Sub
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動(dòng)化還是充滿(mǎn)挑戰(zhàn)性的領(lǐng)域.對(duì)每個(gè)需要自動(dòng)化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 22,151評(píng)論 6 49
  • 本例為設(shè)置密碼窗口 (1) If Application.InputBox(“請(qǐng)輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 14,773評(píng)論 1 20
  • VBA訂制工具欄 http://club.excelhome.net/thread-1047254-1-1.htm...
    大海一滴寫(xiě)字的地方閱讀 2,356評(píng)論 0 0
  • 自從2014年開(kāi)通[完美Excel]微信公眾號(hào)以來(lái),堅(jiān)持分享已經(jīng)學(xué)習(xí)到的Excel和VBA知識(shí)和心得,目前已分享文...
    完美Excel閱讀 8,458評(píng)論 6 69
  • 不知不覺(jué)中,哈夫與一幫愛(ài)學(xué)習(xí)、愿意自我成長(zhǎng)的父母?jìng)児餐蛟斓摹?1天父母成長(zhǎng)工作坊”已經(jīng)進(jìn)行到了第16期。 從第一...
    泉鐘心理閱讀 227評(píng)論 0 1

友情鏈接更多精彩內(nèi)容