Открытая книга предлагает несколько раз - PullRequest
0 голосов
/ 27 апреля 2018

Несколько раз в день я получаю файл. Я пытаюсь максимально автоматизировать его, и одна часть будет включать в себя макрос, который позволяет вам выбрать файл для 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

Спасибо! * * 1004

1 Ответ

0 голосов
/ 28 апреля 2018
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").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

... может быть заменено следующим:

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

Большой выбор / активация не нужны и их лучше избегать: Как избежать использования Select в Excel VBA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...