当您有两个打开的工作簿时,如何选择一个具有随机名称的工作簿

时间:2018-12-16 21:58:46

标签: excel vba excel-vba loops excel-2010

因此,从本质上来说,我从网站导出数据集,并且该数据集位于excel文件中。该文件始终以这样的名称命名:“ Task_State_(Pivot)_xxxxxx” X是数字的随机字符串。我所做的工作涉及打开2个excel文件,包括下载的文件并获取下载的文件(task_State_(Pivot)),然后将该数据复制并复制到我的其他excel文件中,该文件用作我的各种masterfile。我的问题是,如果由于末尾的数字字符串不知道工作簿的全名,该如何选择该工作簿?我不能真正激活工作簿,因为我没有全名,因为它总是在变化。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

Dim wb As Workbook

For Each wb In Application.Workbooks
  If wb.Name <> "your_file_name" Then

        'do whatever you want ot do with your other wb

  End If
Next wb

答案 1 :(得分:0)

上面的答案是一个好的开始,但是我会添加一些内容,以允许用户在开始时一次确认正确的工作表名称:

注意:您可能打开了其他电子表格,或者如果您正在使用宏,则可能还打开了一个个人宏工作簿(在后台)-您不想写该宏。

  1. 创建一个全局变量来保存您今天正在工作的工作簿的名称,并且第一次代码尝试打开它时,请用户确认名称:
    例如:Dim strGlobalNewWorkbook As String

  2. 在Michal Rosa建议的循环(以及if)中,放入执行此操作的代码:

        If MsgBox("please confirm that you want to process workbook: " & wb.Name, vbOKCancel) = vbOK Then
        strGlobalNewWorkbook = wb.Name
        Exit Sub
    End If
    
  3. 然后您可以使用以下格式从代码访问正确的工作簿:  Application.Workbooks(strGlobalNewWorkbook).Name'例如:找回名字