Excel设置活动工作簿

我search了论坛,并找不到适合我的问题的答案。 我对Excel VBA相当新颖,并且遇到了激活刚才打开的工作簿的麻烦。 正下方是引起我麻烦的部分。

所以我按下一个button,它把我带到文件path,我select一个文件打开。 每周这个文件都有一个不同的名字,我不确定它是什么,直到我打开文件path并查看它。

一旦我打开它,我想我的macros来处理文件中的数据,并复制并粘贴到运行代码的工作簿。 但是,当我运行这个macros并打开文件时,它不会激活新打开的工作簿,并运行试图操纵原始文件中的数据的macros的其余部分。

我想我需要打开不同的文件,以便我打开的工作簿是活动的,或者找出如何在不知道文件名的情况下激活新打开的工作簿。 感谢您的帮助。

Dim filepath As String filepath = Environ("USERPROFILE") & "\Dropbox\On the go ordering" Call Shell("explorer.exe" & " " & filepath, vbNormalFocus) Range("A6:E500").Select 

 Sub on_the_go_button() Dim RANKER As Workbook Set RANKER = ThisWorkbook Dim filepath As String filepath = Environ("USERPROFILE") & "\Dropbox\On the go ordering" Call Shell("explorer.exe" & " " & filepath, vbNormalFocus) Range("A6:E500").Select Selection.Copy Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter ActiveSheet.Range("$A$1:$E$495").AutoFilter Field:=1, Criteria1:=RGB(213, _ 223, 248), Operator:=xlFilterCellColor Range("G1").Select ActiveCell.FormulaR1C1 = _ "=IF(RIGHT(RC[-6],8)=""Subtotal"",VALUE(LEFT(RC[-6],6)),"""")" Range("H1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-4])" Range("I1").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",RC[-4])" Range("G1:I1").Select Selection.Copy Range("G1:I500").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.Copy RANKER.Activate Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("P1:Q74").Select Selection.Copy Sheets("Contest").Select Range("A3").Select ActiveCell.End(xlToRight).Select ActiveCell.Offset(0, 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 

因为OP指定了默认path; 我build议使用Application.FileDialog(msoFileDialogFilePicker)

在这里输入图像说明

用法:

 Dim WeeklyWorkbook Set WeeklyWorkbook = getWeeklyWorkbook If WeeklyWorkbook Is Nothing Then MsgBox "No file selected", vbInformation, "Action Cancelled" Exit Sub End If 

 Function getWeeklyWorkbook() As Workbook Dim fDialog As FileDialog, result As Integer Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 'Optional: FileDialog properties fDialog.AllowMultiSelect = False fDialog.Title = "Select a file" fDialog.InitialFileName = Environ("USERPROFILE") & "\Dropbox\On the go ordering" 'Optional: Add filters fDialog.Filters.Clear fDialog.Filters.Add "Excel files", "*.xls, *.xlsx, *.xlsm" fDialog.Filters.Add "All files", "*.*" 'Show the dialog. -1 means success! If fDialog.Show = -1 Then Set getWeeklyWorkbook = Workbooks.Open(fDialog.SelectedItems(1)) End If End Function 

参考: VBA FILEDIALOG – 打开,select和保存文件和文件夹

尝试以下…

  filepath = application.getopenfilename() Dim Wb as workbook Set Wb = workbooks.open(filepath) 

使用WB作为工作簿对象