批量導入工作表到同一個文件

2020-12-15 VBA語言專家

今日的內容是「VBA之EXCEL應用」的第三章「工作簿(Workbook)和工作表(Worksheet)對象(Object)」中第六節「批量導入工作表到同一個文件」。「VBA之EXCEL應用」這套教程從簡單的錄製宏的講解,一直到窗體的搭建,內容豐富,案例眾多。大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。

第六節 批量導入工作表到同一個文件

大家好,我們在上節講解了如何提取一個文件夾下面的文件名及每個文件的工作表的名稱到工作表中,這講我們將講解如何把一個文件夾下的所有文件的工作表導入到同一個文件中,這講將講解的知識點有:工作表的整體導入方法,以及如何關閉例外提示的信息。

1 實現批量導入工作表的場景分析

我們在實際工作中,經常會用到把多個文件的工作表批量複製到同一個文件中,如下,在當前路徑的文件夾「導入文件」中有若干個文件:

我們的目的是將每個文件中的工作表逐一複製到同一個文件中,形成一個文件。這講我們將講解這個問題的代碼實現過程。

2 實現批量導入工作表的思路分析

為了實現批量導入工作表,我們仍是利用文件夾中文件的遍歷及每一個文件中工作表的遍歷,在實現遍歷的時候要進行的是工作表的複製,然後粘貼到同一個文件中。對於複製和粘貼工作表我們要利用的是工作表複製語句。

對於工作表的複製和粘貼,有時會有異常信息的提示,這是我們所不期望的,這就要屏蔽這些信息。也是利用VBA代碼來完成這項工作。

3 工作表的複製和粘貼(Worksheet.Copy方法)

將工作表複製到當前工作簿或新工作簿中的其他位置,我們可以用Worksheet.Copy 方法

1)語法:expression.Copy (Before, After)

2)參數:

① Before 可選 Variant類型 將要在其之前放置所複製工作表的工作表。如果指定After, 則不能指定Before。

② After 可選 Variant類型 將要在其之後放置所複製工作表的工作表。 如果指定了 Before,則不能指定 After。

3)使用說明:如果不指定Before或After, Microsoft Excel 將新建一個工作簿, 其中包含複製的工作表對象。新創建的工作簿包含ActiveWorkbook屬性, 並且包含一個工作表。 單個工作表保留源工作表的Name 和CodeName 屬性。如果複製的工作表在VBA 項目中包含一個工作表代碼工作表, 則該工作表也會進入新工作簿中。

4 屏幕刷新(ScreenUpdating)及例外信息提示(DisplayAlerts)

1) Application.ScreenUpdating 屬性 如果屏幕更新已啟用,此屬性的值為 True。

語法:expression.ScreenUpdating

參數:expression 表示 Application 對象的變量。

禁用屏幕更新可以加快宏代碼的速度。雖然無法實時了解宏的最新動態,但它的運行速度會變快。當宏結束運行後,請記住將 ScreenUpdating 屬性設置回 True。

2)Application.DisplayAlerts 屬性 如果宏運行時 Microsoft Excel 顯示特定的警告和消息,則為 True。

語法: expression.DisplayAlerts

參數:expression表示 Application 對象的變量。

expression.DisplayAlerts默認值為 True。 將此屬性設置為 False 可在宏運行時禁止顯示提示和警告消息;當出現需要用戶應答的消息時,Microsoft Excel 將選擇默認應答。如果將此屬性設置為False,要將代碼完成時將此屬性設為True。5 實現批量導入工作表的代碼及代碼的運行效果

為了實現工作表的批量導入,我先給出下面的代碼,然後再進行講解:

Sub mynzK() '導入工作表

Dim directory As String, myfileName As String, mysheet As Worksheet

Application.ScreenUpdating = False

Application.DisplayAlerts = False

directory = ThisWorkbook.Path & "\導入文件\"

myfileName = Dir(directory & "*.xl??") '使用Dir函數來查找存儲在此目錄中的第一個*.xl??文件

Do While myfileName <> ""

Workbooks.Open (directory & myfileName)

For Each mysheet In Workbooks(myfileName).Worksheets

total = ThisWorkbook.Worksheets.Count

Workbooks(myfileName).Worksheets(mysheet.Name).Copy _

after:=ThisWorkbook.Worksheets(total)

Next

Workbooks(myfileName).Close '關閉Excel文件

myfileName = Dir() '獲取其他Excel文件,再次使用Dir函數而不帶參數

Loop

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub

代碼截圖:

代碼講解:

1) Application.ScreenUpdating = False

Application.DisplayAlerts = False

以上代碼將關閉屏幕更新及例外信息提示,在程序結束後,要打開這個設置,值為true。

2) total = ThisWorkbook.Worksheets.Count

變量total跟蹤導入的工作表的工作表數,我們最後將使用Worksheet對象的Copy方法複製每個工作表並將其粘貼到ThisWorkbook最後一個工作表之後。

3)Workbooks(myfileName).Worksheets(mysheet.Name).Copy _

after:=ThisWorkbook.Worksheets(total)

以上代碼將複製myfileName工作簿中的每個工作表,然後粘貼到當前工作簿的最後位置。

代碼運行效果:

從上圖中可以看出,文件夾中所有文件的工作表都拷貝到了當前的工作簿中了。

今日內容回向:

1 如何關閉屏幕刷新及例外信息提示?

2 如何導入整個工作表到當前工作簿?

3) 遍歷循環應用在這講有什麼作用?

本講內容參考程序文件:工作簿03.xlsm

分享成果,隨喜正能量

VBA的應用範圍及學習方法:

VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!

我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了七部VBA專門教程。

第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。

第二套:VBA資料庫解決方案 資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。

第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。

第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,視頻更易接受。

第五套:VBA中類的解讀和利用是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。

第六套教程:VBA信息獲取與處理,是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統測試。

第七套教程:VBA之EXCEL應用 這是一部初級教程這部教程共三冊,從從創建宏、對話框、工作簿和工作表對象、單元格對象等基礎內容講起,到循環結構、錯誤處理、字符串操作、日期和時間、事件、數組應用,函數過程等方面,一直講解到控制項和窗體對象的應用都是我們提高自己EXCEL水平的必須。

以上各教程學習順序:7 1 3 2 6 5或者7 4 3 2 6 5。其中第四套是對第一套的視頻講解,所以第一和第四隻選其一即可。

相關焦點

  • Excel表格如何批量合併工作表呢?
    Excel表格如何批量合併工作表呢?工作表很多的時候,一個一個打開瀏覽很麻煩,那麼有什麼方法可以合併多個工作表,這樣就可以一次性瀏覽多個工作表了,提高工作效率呢?那麼下面小編就簡單介紹一下Excel表格如何批量合併工作表,希望能幫到您。首先,準備一下需要合併的工作表。
  • Excel拆分工作表,工作表拆分到工作簿,想怎麼拆就怎麼拆!
    工作中,我們經常遇到這樣的問題,比如:如何將一個工作表按類別快速拆分成多個工作表?如何將一個工作簿的多個工作表快速拆分另存為多個工作簿?下面就用案例來說明如何解決這兩個問題。第1個問題:有關工作表快速拆分的問題。案例:將員工花名冊按部門拆分成多個工作表。
  • Excel表格快速匯總多個工作表的數據到同一個工作表
    要求:在一個工作簿種有很多個工作表在相同的單元格中儲存著需要匯總的數據,根據需求要把這些數據匯總到同一張工作表裡,合併後的效果如下圖所示。操作步驟:一.使用宏表函數批量獲取工作表名稱 切換到公式選項卡---點擊自定義名稱---在名稱框裡輸入gzbm、範圍選擇工作簿、引用位置裡輸入公式=get.workbook(1)----點擊確定。
  • 技巧不求人-139期 批量生成N多文件夾、工作表
    嗨,大家好,歡迎來到新一期的技巧不求人,上期我們介紹了Excel分列功能的技巧及如何給文件夾加密的方法,今天繼續帶來更多實用小技巧。對於平常使用Excel統計的夥伴來說,可能經常會創建N多個文件夾或N多個工作表,那如何來創建的呢?當然,表少的時候,可以手動去增加,然後重命名。
  • 如何批量刪除Excel工作表
    文/江覓如果一個工作薄中的工作表比較多,想要批量刪除工作表就顯得十分不方便,Excel vba是個特別好的工具,在此做了一個小工具,可以批量也可以選擇刪除工作表。示例通常刪除功能是一個比較具有破壞性,如果不小心刪除了重要文件,那就災難了,所以在使用Delete的時候要特別謹慎。按鈕說明此工作薄:批量刪除工作表工具工作薄,聽上去十分拗口,就是本工具的Excel工作表。打開工作薄:可以選擇想要刪除表的工作薄,這一點做得很自由,可以以窗口形式來選擇刪除工作薄。關閉工作薄:很顯然,就是把打開的工作薄關閉。
  • 3秒鐘快速批量創建100個Excel工作表
    前面幾節,我們分享了Excel批量操作中,最經常用到的工作表合併與拆分的應用技巧,這一節,我們來分享工作表的批量創建技巧。一、應用場景有時候,我們因為工作需要,需要在同一個Excel工作簿中創建幾十甚至上百個工作表,如果手工一個一個點新建工作表的按鈕,那麼滑鼠不廢,手指頭也就廢了。別再手動創建Sheet了,這就教你快速自定義批量生成N多個工作表的方法.
  • 如何將文件導入到EXCEL工作表中?如何將數據分兩列顯示?
    以本題中的第2小題為例進行講解題目第2小題:將以制表符分隔的文本文件「學生檔案. txt」自A1單元格開始導入到工作表「初三學生檔案」中,注意不得改變原始數據的排列順序。將第1列數據從左到右依次分成「學號」和「姓名」兩列顯示。
  • Excel的分身術:在多個窗口中查看同一個工作表
    Excel的分身術:在多個窗口中查看同一個工作表大家好,我是@愛玩電腦。今天給大家講講如何將辦公軟體Excel的同一個工作表內容在兩個及以上的窗口中顯示,方便我們查看工作表的不同部分,進行數據核對、處理。
  • 如何實現批量導入數據
    SQL Server 提供一個稱為 bcp 的流行的命令提示符實用工具,用於將數據從一個表移動到另一個表(表既可以在同一個伺服器上,也可以在不同伺服器上)。SqlBulkCopy 類允許編寫提供類似功能的託管代碼解決方案。
  • 可以把圖片合併到同一個pdf文件嗎?
    如何圖片合併到同一個pdf文件?諸位小夥伴們,我作為一名廣告公司的文案策劃,平時需要大量累積一些有創意的、接地氣、能出圈的文案,於是每天都會從網上搜索資料,這麼一天天下來,電腦裡竟然保存了密密麻麻的海報圖片,於是便想著把它們合併為一個pdf文檔進行保存。
  • excel中如何批量創建工作表?
    在工作中,有時候我們需要一次性新建很多工作表或者工作簿,如果一個一個創建然後再重命名那就太費時間了,下面就看看如何方便快捷地創建多個工作表或者工作簿吧。一、批量新建工作表。最終要實現下圖創建多個工作表的效果,該如何操作呢?
  • Excel使用Power Query導入文本文件數據
    文本文件是最常用、最簡單的一種計算機文件格式,因其製作簡單、操作容易經常被用來記錄內容、交換數據等。Excel支持對文本文件的導入,文本文件中的行對應工作表中的行;每行數據使用Excel支持的分割符(逗號,制表符等)分成若干個段,每段對應工作表中的列。
  • Shell應用:批量導入SQL文件,你還在複製粘貼文件名?
    Shell應用:批量導入SQL文件,你還在複製粘貼文件名? 從一個資料庫中導出了 N 個表的 SQL 語句,匯總到一個文件夾下。然後,再導入到目標資料庫中。這個過程中,如果逐個敲 source 命令太繁瑣了,不如寫個腳本來搞定、順便練練手。本文將介紹一個遍歷文件夾下文件的 Shell 應用。
  • 怎樣利用excel表格及CMD命令對文件進行批量重命名
    cmd控制臺然後進入到需要批量重命名的文件夾下,將文件所在路徑C:\Users\(使用者電腦名) \Desktop\txt複製下來,這裡我的使用者電腦名為扶貧站,你的你進入cmd控制臺就可以看到了。複製路徑切換到cmd控制臺,在控制臺中輸入cd C:\Users\(使用者電腦名)\Desktop\txt,這裡輸入cd後,可以右鍵進行粘貼,按下鍵盤上Enter鍵,這樣就切換到需要批量重命名的文件路徑下。
  • Excel批量顯示和隱藏工作表,高手不止是會VBA!
    我們來看看怎麼做:操作方法:隱藏工作表之前我們在視圖菜單中自定義視圖為「All」隱藏了部分工作表之後,我們自定義視圖為「封面」這樣就可以在自定義視圖中來回切換,達到批量隱藏和顯示工作表啦!批量隱藏和顯示工作表除了這種方法之外,我們還有另外一種方式隱藏工作表的方式,可以通過設置達到隱藏工作表標籤的目的。來看看怎麼操作吧!
  • Excel如何批量重命名工作表,這個技巧你一定不要錯過
    --[唐]上官儀《奉和山夜臨秋》疫情還沒到放鬆的時候哦,建議大家儘量要保持少出門,勤洗手,不聚會,既保證了自己安全,也保證了他人安全。今天給大家分享個我們在平時工作中可能會用到的小技巧,批量重命名工作表,具體指什麼呢?
  • 批量添加EXCEL指定名稱的多個工作表並設置超連結!你學會了嗎?
    案例:給公司幾百名員工分別建檔:以每個員工的名字建一個工作表,內含各自的年終獎情況,而且還要方便、快速地找到每個員工的工作表。雷哥手裡有一份EXCEL文件,如上圖所示。但是這個EXCEL文件只有一個匯總工作表,含員工姓名及年終獎匯總情況,難道要一個個新建工作表(sheet)並按照各員工姓名重命名嗎?sheet! sheet! sheet!......是不是想想就要累暈在起跑上?別急,遇事先別慌,方法很重要!雷哥有辦法!一)藉助透視表,批量新建指定名稱的上千個工作表不是難題!
  • 批量新建excel工作表以及工作薄,再也不用一個一個的新建了
    Hello,大家好,今天跟大家分享下我們如何批量新建excel工作表以及工作薄,對於工作表與工作薄很多人可能都分不清。工作薄就是我們常說的excel文件,而工作表就是工作薄中的sheet,所以說工作表是包含在工作薄中的。
  • Excel技巧:又快又省心,批量創建多個工作表
    答案是肯定的,今天小編就和大家分享一個快速批量創建工作表的方法,可瞬間完成一年的財務報表喲,不想加班的親們,趕緊加入Excel與財務的學習大軍吧!操作步驟:一、如下圖所示,將創建工作表名稱的內容準備好,選中所有內容單元格區域,點擊【插入】選項卡中的【數據透視表】按鈕;二、在彈出的【創建數據透視表】對話框中,「選擇放置數據透視圖的位置」中選擇【現有工作表】,位置中輸入C1單元格,點擊【確定】創建數據透視表;三、在工作區右側彈出的【數據透視表欄位】面板中,將「工作表名稱」拖至下方【篩選】框中
  • 「Excel使用技巧」鮮為人知的Excel技巧-批量刪除隱藏的工作表
    手裡有一份Exce文件,裡面隱藏了幾十個已經不需要的工作表,對於強迫症患者來說,留著它們著實有點不舒服。想著一定要把它們刪除,工作文件才顯得比較乾淨。但問題來了,這麼多隱藏的工作表一個個刪除還是很費力氣,首先我得一個工作表一個工作表的取消隱藏,然後才能刪除。