根据标签名称打开文件?

时间:2017-03-10 20:18:15

标签: excel vba filepath

对于以下代码我尝试做的是获取excel从一个工作簿中的范围中获取数据,并将其放入根据选项卡名称在给定文件夹中找到的另一个工作簿中。

在我桌面上的文件夹中,我有4个文件" Master,Processor Alex,Processor Sue,Processor Bill"。 Master.xlsm有4个标签:" Skip Me,Alex,Sue,Bill"。我需要将以下代码中的范围从Alex等人的相应选项卡转移到工作簿的最后一页。

不幸的是,由于某种原因我不能单步使用F8,因为在我的膝盖上打开某种项目侧栏。它给了我一个错误,我是VBA的新手,所以我不理解错误。但是这个项目对我来说非常重要。

我拿了一段代码循环使用并尝试使用循环重建它,并从下面收到的选项卡名称打开工作簿。我之前没有遇到任何错误。

Sub SheetLoop()

Dim ws As Worksheet
Dim SourceWB As Workbook
Set SourceWB = ThisWorkbook
Application.ScreenUpdating = False

For Each ws In Worksheets
  If ws.Name <> "Skip Me" Then                  
    ws.Activate
    ws.Select
    Range("A2:M10").Select
    Selection.Copy

    Workbooks.Open ("C:\Users\Scott\Desktop\VBA Proj\" & ws.Name & ".xlsx")'<----  -???

    Worksheets(Worksheets.Count).Select 'Selects last worksheet page

    'Selects destination looking for first blank cell in "B"
    Set ws = ActiveSheet
    For Each Cel In ws.Columns(2).Cells
        If IsEmpty(Cell) = True Then Cell.Select: Exit For
    Next Cel    ' corrected Cell > Cel

    ActiveSheet.Paste               'Pastes selection       
    Application.CutCopyMode = False 'Clears Clipboard for next copy action  
  End If
Next ws

End Sub

4 个答案:

答案 0 :(得分:1)

你需要提出一些自己的代码。如果它被破坏我们可以帮助您解决,但我们不会为您编写代码。

迭代书中工作表的简单代码是:

dim wkb as excel.workbook
dim wks as excel.worksheet
set wkb = thisworkbook ' or activework or whatever
for each wks in wkb.sheets ' iterate through the sheets
    msgbox "Now on sheet " & wks.name
next

从工作表名称生成工作簿路径的简单代码,假定已经定义了wkb和wks,新工作簿与包含您代码的书在同一文件夹中,而wks的工作表名称是该书的名称打开,是:

dim mypath as string, newname as string, extn as string
extn = ".xlsx" ' or ".xls" or whatever
mypath = wkb.path
if not right(mypath,1) = "\" then mypath = mypath & "\"
newname = mypath & wks.name & extn

打开工作簿的简单代码,假设您知道名称是:

dim wkbdata as excel.workbook
set wkbdata = workbooks.open(newname)

答案 1 :(得分:0)

我不清楚你想做什么。但是这里有一段代码可以为你打开文件。您可以使用它来创建文件名并根据需要使用它们。

For i = 1 to ActiveWorkbook.Worksheets.Count
    Workbooks.Open "C:\FilePath\" & Worksheets(i).Name & ".xlsx"

Next i

我希望这会有所帮助。如果您发布部分代码或更详细地解释事情,这里的人可以更好地帮助您。

答案 2 :(得分:0)

我上面的代码中包含了非常接近的内容。我从头开始使用我在工作簿中测试的基本循环,然后开始删除旧版本的元素。然后就坏了。

答案 3 :(得分:0)

通过“系统不会让我介入”我的意思是几乎没有像F8那样的VBA热键。它打开了其他一些Windows 10功能。

我发布以下内容作为对可能需要它的其他人的贡献。它的确有效,感谢MrTcelin论坛上的Tonyyy。我逐行禁用它来处理下一节,所以我可能在某处有错误的“'”。我想我得到了所有这些。

<div id="logo"></div>

End Sub