[英]Excel VBA - Making a macro valid for all worksheets in workbook
我有一个包含多张工作表的工作簿(file1、file2、file3 等),我正在处理一个宏,它将解析外部文件并将内容粘贴到活动工作表中。 问题是我想让我的 PasteStart 下面不是特定的,所以它可以在任何活动工作表上工作,而不仅仅是 file1,而不指定它的名称。 我尝试使用 sthg 之类的 Variable = ACtiveSheet.Name 但我收到运行时错误 242。
Sub Import1()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim PasteStart As Range
Application.ScreenUpdating = False
Set wb1 = ActiveWorkbook
Set PasteStart = [file1.C5]
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose an XLIFF to Parse", _
FileFilter:="Report Files *.xlf (*.xlf),")
If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
With Sheet.UsedRange
.Copy PasteStart
Set PasteStart = PasteStart.Offset(.Rows.Count)
End With
Next Sheet
End If
wb2.Close
Range("C5:L3146").Select
Selection.Delete Shift:=xlToLeft
Range("D6:D2337").Select
Selection.Delete Shift:=xlToLeft
Range("E6:G2307").Select
Selection.Delete Shift:=xlToLeft
End Sub
Set PasteStart = Activesheet.Range("A1")
应该管用。
还:
Range("C5:L3146").Select
Selection.Delete Shift:=xlToLeft
Range("D6:D2337").Select
Selection.Delete Shift:=xlToLeft
Range("E6:G2307").Select
Selection.Delete Shift:=xlToLeft
应该是这样的:
With PasteStart.Parent
.Range("C5:L3146").Delete Shift:=xlToLeft
.Range("D6:D2337").Delete Shift:=xlToLeft
.Range("E6:G2307").Delete Shift:=xlToLeft
End With
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.