运行宏时找不到要复制的文件

时间:2018-11-05 11:53:46

标签: excel vba

这个简短的问题不是一个大问题,只是一件令人讨厌的小事。

当我运行某个宏时,有时(但不是每次)在不同的excel文件中运行vlookups时,系统会提示我选择要复制的文件,如屏幕截图所示。

所需文件是列表中的第一个文件,永远不会重命名或移动它:
screenshot 1

我还附上了宏代码的屏幕快照,如果有人可以帮助我完成宏代码,那很好,这样我就不必多次选择文件即可运行它。

我知道我没有该文件的完整路径,我试过了,但是后来它停止工作了,所以我不确定吗?

Range("A1").Select

Sheets.Add After:=ActiveSheet

Sheets("Sheet2").Select
ActiveCell.FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A100")

Range("B1").Select
ActiveCell.FormulaR1C1 = _
    "=IF(VLOOKUP(MID(RC[-1],3,6),[StockQuantity.xlsm]Sheet7!C2:C10,9,FALSE)=0,"""",CONCATENATE(""89"",RIGHT(RC[-1],8)))"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B100")

Columns("B:B").Select
Selection.Copy
Range("C1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft

picture of the code

我不知道为什么有时候有时候我不必选择文件。

2 个答案:

答案 0 :(得分:1)

首先停止选择一个单元格,然后再对它做一些事情。而不是说“抢那个单元!”然后“现在对已抓取的内容执行以下操作”,则只需说“对该单元格执行以下操作”即可。更快更好:)

看到的时候:

Sheets("Sheet2").Select
ActiveCell.FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"

然后通常可以删除SELECT <carriage return> ActiveCell.部分并将其余部分缝合在一起。我希望我有道理!

有时(但并非总是)重新输入代码来请求文件。 在您的代码中,您指定了要包含在单元格公式中的文件,但未指定文件的路径,因此Excel将“希望”它已打开,如果没有,它将打开一个提示,供您/用户选择一个可以在其中找到该工作表和单元格引用的文件。

因此,要解决此问题,您需要在公式中包括正确文件的完整路径。只需先手动执行,然后将生成的公式复制到您的VBA代码即可。

答案 1 :(得分:0)

这是您的代码已清理:

Sub stuff()
Sheets.Add After:=ActiveSheet
Range("A1:A100").FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"
Range("B1:B100").FormulaR1C1 = "=IF(VLOOKUP(MID(RC[-1],3,6),[StockQuantity.xlsm]Sheet7!C2:C10,9,FALSE)=0,"""",CONCATENATE(""89"",RIGHT(RC[-1],8)))"
Columns("B:B").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Columns(1).Delete Shift:=xlToLeft
End Sub

将完整路径放在StockQuantity.xlsm之前,以停止其提示文件。