[英]Excel VBA - Making a macro valid for all worksheets in workbook
I have a workbook with several sheets, (file1, file2, file3, etc), and I'm working on a macro that will parse an external file and paste the contents in the active worksheet.我有一个包含多张工作表的工作簿(file1、file2、file3 等),我正在处理一个宏,它将解析外部文件并将内容粘贴到活动工作表中。 The issue is that I would like to make my PasteStart below not specific so it will work on any active worksheet , not only file1, without specifying its name.
问题是我想让我的 PasteStart 下面不是特定的,所以它可以在任何活动工作表上工作,而不仅仅是 file1,而不指定它的名称。 I tried using sthg like Variable = ACtiveSheet.Name but I get runtime error 242.
我尝试使用 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")
should work.应该管用。
Also:还:
Range("C5:L3146").Select
Selection.Delete Shift:=xlToLeft
Range("D6:D2337").Select
Selection.Delete Shift:=xlToLeft
Range("E6:G2307").Select
Selection.Delete Shift:=xlToLeft
should probably be something like:应该是这样的:
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.