Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 打开工作簿提示多次_Vba_Excel - Fatal编程技术网

Vba 打开工作簿提示多次

Vba 打开工作簿提示多次,vba,excel,Vba,Excel,每天有几次我收到一份文件。我正在尝试尽可能地自动化它,其中一部分将包括使用宏,该宏允许您选择要vlookup的文件(每次文件名都不同)。“我的宏”会运行,但由于某些原因,它会提示您选择文件3次。我在代码上尝试了一些变体,但没有任何效果。有人知道为什么吗?它在第一次打开文件时提示一次,在用公式填充第一个单元格时提示一次,在宏用vlookup公式填充列时提示一次。我已将相关部分粘贴到下面: Dim MyFile As String MyFile = Application.GetOpenFilena

每天有几次我收到一份文件。我正在尝试尽可能地自动化它,其中一部分将包括使用宏,该宏允许您选择要vlookup的文件(每次文件名都不同)。“我的宏”会运行,但由于某些原因,它会提示您选择文件3次。我在代码上尝试了一些变体,但没有任何效果。有人知道为什么吗?它在第一次打开文件时提示一次,在用公式填充第一个单元格时提示一次,在宏用vlookup公式填充列时提示一次。我已将相关部分粘贴到下面:

Dim MyFile As String
MyFile = Application.GetOpenFilename

Set firstWB = ActiveWorkbook
Set mySheet = ActiveSheet


Set wbLookup = Workbooks.Open(MyFile)

    firstWB.Activate
    mySheet.Range("T2").Select
    ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-18],'[wbLookup]tempemail'!R2C2:R123C20,19,0)"

    Range("S1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(0, 1).Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.FillDown

    Columns("t:t").EntireColumn.AutoFit

    Columns("T:T").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False


    wbLookup.Close False


    Range("U1").Select
    ActiveCell.FormulaR1C1 = "=NOW()"
    Range("U1").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Columns("u:u").EntireColumn.AutoFit

End Sub
谢谢

ActiveCell.FormulaR1C1 = _
   "=VLOOKUP(RC[-18],'[wbLookup]tempemail'!R2C2:R123C20,19,0)"
除非
wbLookup
是您的文件名,否则这将不起作用。Excel会看到这一点,并提示您输入实际名称

ActiveCell.FormulaR1C1 = _
   "=VLOOKUP(RC[-18],'[" & wbLookup.Name & "]tempemail'!R2C2:R123C20,19,0)"
可能会更好

这:

…可以由以下内容取代:

Columns("T:T").Value = Columns("T:T").Value

大量的选择/激活是不必要的,最好避免:

您的子系统名称是什么?
Columns("T:T").Value = Columns("T:T").Value