有没有办法让用户在打开文件后选择要复制的工作表?
我想这样做,因为可能有多张具有相同格式的图纸,但名称不同。
实施例: 原始工作簿名为 VSC (包含工作表比较, Plot )
名为 SF 的辅助工作簿(包含工作表 Results1 , Results2 , Results3 )
用户点击 VSC 上的按钮,文件对话框打开,用户在某个目录中选择 SF ,然后要求用户选择要选择的工作表 - 用户选择 Results2 表格,复制数据(范围" B2:B5"),然后将其粘贴回比较表。
这可能吗?我不知道如何开始。
要求用户选择SF工作簿的当前代码:
Sub GetFilePath()
Dim objFSO as New FileSystemObject
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
答案 0 :(得分:1)
这是一种方法。您键入工作表名称。调整复制和粘贴范围以适应。
{{1}}
答案 1 :(得分:1)
打开工作簿后,可以按名称枚举工作表,并在VSC工作簿的工作表中填充选择列表...
答案 2 :(得分:1)
这是针对您的问题的不同方法。打开新工作簿后,它会使用计时器,如果您在要复制的工作表上,则每10秒询问一次。如果你回答&#34;是&#34;它会复制。如果你回答&#34;否&#34;它将重新启动10秒计时器。
Sub GetFilePath()
Set MyFile = Application.FileDialog(msoFileDialogOpen)
With MyFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
Set newWk = Workbooks.Open(FileSelected, , True)
'Open Selected Workbook and check in 10 seconds for Selected Sheet Name
Application.OnTime Now + TimeValue("00:00:10"), "CheckForSheet"
End Sub
Private Sub CheckForSheet()
Dim SheetName As String
SheetName = ActiveSheet.Name
answer = MsgBox("Is This the Sheet to copy from: " & SheetName & "?", vbYesNo + vbQuestion, "Copy Data?")
If answer = vbYes Then
'ThisWorkbook is the workbook with the Macro/VBA code
'ActiveWorkbook is the workbook where you are selecting the Sheet to copy from
ActiveWorkbook.Sheets(SheetName).Range("B2:B5").Copy
ThisWorkbook.Sheets("Compare").Range("C1:C4").PasteSpecial
Else
'Check Again in 10 Seconds
Application.OnTime Now + TimeValue("00:00:10"), "CheckForSheet"
End If
End Sub