通过打开的对话框打开文件并将文件保留为活动工作簿

时间:2013-10-26 09:23:47

标签: excel excel-vba vba

我有一个带有宏的活动工作簿,它必须打开另外两个工作簿并将其作为活动工作簿。 但宏包含的工作簿仍然是活动工作簿。 请帮忙。

With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
SF = .SelectedItems(1)
SF = Application.GetOpenFilename(SF)
MsgBox SF

Workbooks.Open Filename:=(SF)



wb1 = ActiveWorkbook.FullName
MsgBox "SF" & SF
MsgBox "WB1" & wb1

WB1显示宏包含的工作簿的路径。不是SF(从openfile对话框中选择源文件)

此外,以下代码是否正确?

For Rw = 4 To DF.Sheet1.UsedRange.Rows.Count
For Rw1 = 3 To SF.Sheet1.UsedRange.Rows.Count
If df.Sheet1.Cells(Rw, 1).Value = sf.Sheet1.Cells(Rw, 53).Value Then

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要将打开的工作簿与object variable相关联,这样可以更轻松地引用代码中的每个工作簿。所以,而不是这一行:

Workbooks.Open Filename:=(SF)

尝试使用此解决方案:

Dim openWB as Workbook
Set openWB = Workbooks.Open(SF)
'and to activate it somewhere in your code you will need the following line:
openWB.Activate

请记住,当时只有一个工作簿可以处于活动状态。

如果您需要使用其他工作簿,可以再次添加类似的代码,但为此使用新变量(如Dim openWBNext as workbook等等...)

问题的第二部分...... 您的代码不正确。但是,如上所述,在您应用object variables之后,您可以使用以下结构:

For Rw1 = 3 To openWB.Sheet1.UsedRange.Rows.Count
If openWBNext.Sheet1.Cells(Rw, 1).Value = openWB.Sheet1.Cells(Rw, 53).Value Then