繁体   English   中英

使用VBA打开Excel文件并复制表格

[英]Opening an excel file & copying sheets using VBA

我需要将几个Excel工作表(“ Y”,“ X”)从一个文件复制到另一个Excel文件(称为Z-与我使用VBA的文件相同)中的同一工作表。 我的局限性是第一个excel文件(带有X,Y)的名称和路径正在更改,因此我试图使用“ as String”和Application.GetOpenFilename()命令编写更通用的名称,但是我m收到错误。

尝试分成2个不同的子

Sub BrowseForFile()
    Dim sFileName As String
    sFileName = Application.GetOpenFilename(, , "open the file: " )

    If sFileName = "false" Then Exit Sub
    MsgBox sFileName
    Workbooks.Open (sFileName)
    Workbooks(sFileName).Sheets("X").Activate
    Stop
  1. 运行时错误9
  2. 找不到文件(我认为是1004)

如果用户按下“ 取消”按钮,则GetOpenFilename函数将返回布尔False而不是字符串"false"因此您需要测试If sFileName = False Then其声明为Variant

如果打开工作簿,请始终将其引用到变量,以便您可以轻松地使用该变量访问工作簿

Dim OpenedWb As Workbook
Set OpenedWb = Workbooks.Open(sFileName)

然后,您可以使用变量Wb来引用您打开的工作簿

OpenedWb.Worksheets("X").Activate

请注意,使用.Select.Activate是一种不好的做法,应避免使用如何避免在Excel VBA中使用Select )。 而是使用另一个引用来引用您的工作簿。

Dim ws As Worksheet
Set ws = OpenedWb.Worksheets("X")

并访问诸如ws.Range("A1").Value类的范围。


Sub BrowseForFile()
    Dim sFileName As Variant 'needs to be variant because cancel returns a boolean False
    sFileName = Application.GetOpenFilename(, , "open the file: " )

    If sFileName = False Then Exit Sub

    MsgBox sFileName

    Dim OpenedWb As Workbook
    Set OpenedWb = Workbooks.Open(sFileName)

    Dim ws As Worksheet
    Set ws = OpenedWb.Worksheets("X")

    MsgBox ws.Range("A1").Value 'output the value of `A1` in worksheet `X` of workbook `sFileName`
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM