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

时间:2019-07-01 13:30:57

标签: excel 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)

1 个答案:

答案 0 :(得分:0)

如果用户按下 Cancel 按钮,则GetOpenFilename函数将返回布尔值False而不是字符串"false",因此您需要测试{{1 }},并将其声明为If sFileName = False Then

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

Variant

然后,您可以使用变量Dim OpenedWb As Workbook Set OpenedWb = Workbooks.Open(sFileName) 来引用您打开的工作簿

Wb

请注意,使用OpenedWb.Worksheets("X").Activate .Select是一种不好的做法,应避免使用(How to avoid using Select in Excel VBA)。而是使用其他引用来引用您的工作簿。

.Activate

并访问诸如Dim ws As Worksheet Set ws = OpenedWb.Worksheets("X") 之类的范围。


ws.Range("A1").Value