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