繁体   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