简体   繁体   English

Excel VBA - 使宏对工作簿中的所有工作表有效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM