Почему мой файл SaveAs сохраняет файл с правильным именем, но не имеет содержимого? - PullRequest
0 голосов
/ 27 февраля 2019

Мне удалось жестко закодировать мой файл и затем сохранить его в той же папке.Однако новый файл, созданный с правильным именем, вообще не имеет содержимого.Я узнал, как сохранить в текущем каталоге со всей помощью на SO, но не смог решить эту проблему.Все помогает, так как я новичок в VBA!

     Sheets.Select
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False

    Dim thisWb As Workbook, d As Integer

    Set thisWb = ActiveWorkbook
    Workbooks.Add
    d = InStrRev(thisWb.FullName, ".")
    'ActiveWorkbook.SaveAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)
    ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

    ActiveWorkbook.Close savechanges:=False

End Sub

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Давайте посмотрим на последний бит вашего кода:

Workbooks.Add 'Creates a new Blank Workbook, and makes it the ActiveWorkbook
d = InStrRev(thisWb.FullName, ".")
ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)
'Saves your new Blank ActiveWorkbook

Вам нужно либо добавить что-то в вашу новую книгу, либо сделать SaveAs на другой книге (например, thisWb.SaveCopyAs?)

0 голосов
/ 27 февраля 2019

Ваша строка Workbooks.Add создает новую книгу, которая является пустым файлом.Затем он становится ActiveWorkbook, и поэтому ваша следующая строка сохраняет новый Workbook, который пуст.

Просматривая ваш код, я предполагаю, что вы пытаетесь сохранить копию исходного файла.,Если это так, вам не нужна строка Workbooks.Add - удалите ее, и она должна решить вашу проблему.Если вы пытаетесь добавить книгу, хотя и сохраняете копию: - Используйте правильные ссылки вместо Active, то есть

ActiveWorkbook.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

Становится

thisWb.SaveCopyAs Filename:=Left(thisWb.FullName, d - 1) & "-Prelims" & Mid(thisWb.FullName, d)

Вы должны попробоватьизбегать максимально возможного использования операторов Select или Active (это полностью исключило бы вашу проблему).Подробнее читайте здесь: Как не использовать Select в Excel VBA

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