【问题标题】:open file through open dialog and keep the file as active workbook通过打开对话框打开文件并将文件保持为活动工作簿
【发布时间】:2013-10-26 09:23:47
【问题描述】:

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

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

提前致谢

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    【讨论】:

    • 亲爱的 Kazjaw,它运行良好。我还有一个问题。如何从输入框移位时间(“5:00:00)”中检测“00:30:00”。再次感谢。
    • 如果您对答案感到满意,您可以随时使用THIS。对于其他问题,请提出新的单独问题,不要在 cmets 中提问?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多