vba移动文件_VBA学习笔记8:工作表操作
學習資源:《Excel VBA從入門到進階》第10集 by藍色幻想
一、Excel工作表的分類
Excel工作表有兩大類,一類是我們平常用的工作表(worksheet),另一類是圖表、宏表等。這兩類的統稱是sheets。
在工作表的標簽頁上右擊—選擇插入,可以看到所有工作表類型。- Sheets("A"),名稱為A的excel工作表。
- workbooks(2),按從左到右的排列順序(包含隱藏工作表),第二個打開的工作簿。
- ActiveSheet ,正在操作的那個就是ActiveSheet。
二、Excel工作表的操作
- 利用for循環和if語句,查找工作表的名稱是否為"A"。
- 查到后彈出窗口顯示“A工作表存在”(MsgBox "......"),并退出整段程序停止操作(Exit Sub);
- 反之,繼續查找直至所有工作表名稱被比對完都沒找到,并彈出窗口顯示“A工作表不存在”。
2. 工作表的插入Sheets.Add
Sub 新建工作表() Dim sh As WorksheetSet sh = Sheets.Addsh.Name = "模板" sh.Range("a1") = 100End Sub上面的代碼是利用工作表變量給工作表賦值新名字,而下面的代碼則是利用ActiveSheet的這一概念來給新工作表重命名。
Sub 新建工作表()Sheets.Add ActiveSheet.Name = "模板"End Sub3. 工作表隱藏和取消隱藏
是否可視是工作表的一種屬性,隱藏就是更改這一屬性。
Sub s3()Sheets(2).Visible = False '隱藏第二個工作表,或可寫為Sheets(2).Visible = 0 Sheets(2).Visible = True '取消隱藏第二個工作表,或可寫為Sheets(2).Visible = -1End Sub4. 工作表的移動
Sub s4()Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移動到sheet1前面 Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移動到所有工作表的最后面End SubSheets.Count 獲取本工作簿工作表的數目
5. 工作表的復制
(1)在本工作簿中復制,原表和復制到的表都在同一個工作簿中。
先來一波不用VBA的正常操作:
在“模板”工作表標簽頁右擊,選擇“移動或復制”勾選“建立副本”,把副本放在“1日”工作表前重命名復制的“模板2”工作表為“測試”。Sub s5() '在本工作簿中Sheets("模板").Copy before:=Sheets(1) ActiveSheet.Name = "1日" ActiveSheet.Range("a1") = "測試"End Sub(2)把復制的工作表另存為新工作簿。
相當于在移動或復制工作表時,選擇”將選定工作表移至新工作簿“,然后把新工作簿另存為當前工作簿保存的路徑下,并命名為”1日“工作簿。
Sub s6() '另存為新工作簿Activesheet.copy '復制工作表 ActiveWorkbook.SaveAs ThisWorkbook.Path & "/1日.xls" '另存為新工作簿 ActiveWorkbook.Close True '關閉工作簿End Sub6. 保護工作表
完整:表達式.Protect(密碼, 形狀,內容,方案,保護用戶界面)
簡潔:表達式.Protect"密碼"
Sub s7()Sheets("sheet2").Protect "123"End Sub判斷工作表是否添加了保護密碼:
Sub s8() If Sheets("sheet2").ProtectContents = True ThenMsgBox "工作簿保護了"ElseMsgBox "工作簿沒有添加保護"End IfEnd Sub7. 刪除工作表
Sub s9()Application.DisplayAlerts = FalseSheets("模板").DeleteApplication.DisplayAlerts = TrueEnd Sub刪除工作表時,EXCEL會彈出警告,可設置關閉該警告。
Application.DisplayAlerts = False
刪除完成后記得打開警告,不然以后都不會彈出警告。
8. 工作表的選取
Sub s10()Sheets("sheet2").SelectEnd Sub三、練習
題目1:
復制“日報表模板”工作表(已隱藏)至本工作簿最后一個位置,復制后的工作表名稱為最后的日期天數+1&"報表"的格式。點擊“生成日報”按鈕就生成一個新的日報表。
如:當前情況下,沒有任何一天的日報表,則新復制的工作表名稱是“1日報表”,如果再點擊添加時就是1+1=2日報表。如果目前已存在5天的日報表,則復制后的工作表名稱應為“6日報表”
PS:“日報表模板”工作表要用代碼取消隱藏,復制后要隱藏起來。
Sub 日報表格式生成()Dim i As IntegerDim ws As WorksheetSet ws = Sheets("日報表模板")ws.Visible = True'顯示"日報表模板"工作表,它是第二個工作表。i = Sheets.Count'數當前工作表的數量。ws.Copy after:=Sheets(Sheets.Count)'復制"日報表模板"工作表,并放在所有工作表的最后。EXCEL會停留在當前工作簿。ActiveSheet.Name = i - 1 & "日報表"'重命名當前工作表ws.Visible = False'隱藏"日報表模板"工作表Sheets(1).Select'回到題目所在工作表 End Sub題目2:
把所有日報表另存為工作簿到本文夾下,工作簿名稱為工作表的名稱。
Sub 另存報表() Dim i As Integer Dim sh As WorksheetApplication.ScreenUpdating = False'取消屏幕更新,加快代碼運行速度For i = 1 To Sheets.CountIf Sheets(i).Name Like "*日報表" Then'如果工作簿名稱包含“日報表”,則復制該工作表,并另存為當前工作表到當前工作簿路徑下Sheets(i).CopySet sh = ActiveSheetActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls"ActiveWorkbook.Close TrueEnd IfNextApplication.ScreenUpdating = True'恢復屏幕刷新End Sub經評論蔡花花同學指出:原來寫的sh.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",修改為ActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",只有工作簿才能使用saveas.
題目3:
刪除所有日報表。
Sub 清除日報表() Dim i As Integer Dim sh As WorksheetFor Each sh In SheetsIf sh.Name Like "*日報表" ThenApplication.DisplayAlerts = Falsesh.DeleteApplication.DisplayAlerts = TrueEnd IfNextEnd Sub總結
以上是生活随笔為你收集整理的vba移动文件_VBA学习笔记8:工作表操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go mod拉取gitlab私有仓库代码
- 下一篇: “该微信号已经绑定了50个小程序,不可继