簡體   English   中英

我如何制作一個宏,使我能夠將數據從一個工作簿導入到另一個工作簿?

[英]How do I make a macro that enables me to import data from one workbook to another ?B

基本上,我想通過單擊分配給宏的按鈕來導入數據,這將打開文件瀏覽器,提示用戶打開他們要導入的excel文件。 我嘗試調試代碼,但是我的For Each循環不斷出現錯誤,我們將為您提供任何幫助!

Sub BrowseForFile()  
    Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

    fileName = Application.GetOpenFilename(, , "Browse for Workbook")
    Workbooks.Open (fileName)

    For Each sheet In Workbooks(fileName).Worksheets
        total = Workbooks("FIEP.xlsm").Worksheets.count
        Workbooks(fileName).Worksheets(sheet.Name).Copy _
          after:=Workbooks("FIEP.xlsm").Worksheets(total)
    Next sheet

    Workbooks(fileName).Close
End Sub

為工作簿對象使用一個變量:

Sub BrowseForFile()

 Dim directory As String, fileName As String, sheet As Worksheet, total As Long
 Dim wb As Workbook

 fileName = Application.GetOpenFilename(, , "Browse for Workbook")


 Set wb = Workbooks.Open(fileName)

 For Each sheet In wb.Worksheets
    total = Workbooks("FIEP.xlsm").Worksheets.count
    sheet.Copy after:=Workbooks("FIEP.xlsm").Worksheets(total)
 Next sheet

 wb.Close

End Sub

刪除文件路徑部分。 有多種可用的方法。 我從這里用的那個。

Workbooks對象是Microsoft Excel應用程序中當前打開的所有Workbook對象的集合。

它不需要文件路徑,僅需要名稱。 您可能還說過ActiveWorkbook ,盡管它可能不夠健壯。

編輯:或者像在@TimWilliam的答案中一樣,您可以將現在打開的工作簿存儲在變量中,並將其用作引用。

Option Explicit

Sub BrowseForFile()

    Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

    fileName = Application.GetOpenFilename(, , "Browse for Workbook")

    Workbooks.Open (fileName)

    Dim fso As New FileSystemObject 'Requires references to MS Scripting Runtime

    fileName = fso.GetFileName(fileName)

    For Each sheet In Workbooks(fileName).Worksheets '
        Workbooks(fileName).Worksheets(sheet.Name).Copy _
        after:=Workbooks("FIEP.xlsm").Worksheets(total)
    Next sheet

    Workbooks(fileName).Close

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM