Создание макроса для имени файла Excel с информацией, предопределенной в некоторых ячейках - PullRequest
0 голосов
/ 22 ноября 2018

Я видел подобные проблемы здесь, я исследовал в нескольких блогах, но я все еще не могу найти решение.Я пытаюсь автоматически создать имя для файла, основанного на некоторых ячейках.

Итак, я создал макрос, цель которого сделать:

  1. Копировать / Вставить какоценивает всю информацию, которую я хочу сохранить (это потому, что некоторые ячейки основаны на динамических формулах, например, NOW ());

  2. «Сохранить как» файл, пытаясь использовать информацию, определенную в одной определенной ячейке файла.

Мой макрос выглядит так:

Sub SaveMyWorkbook()
  Cells.Select
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Sheets("Parameters").Select
  Cells.Select
  Application.CutCopyMode = False
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Sheets("Demande d'Achat").Select
  Range("S3:U3").Select
  Application.CutCopyMode = False

  Dim strPath As String
  Dim strFolderPath As String

    strFolderPath = "\\camo106\remote\Achat_Purchasing\Demande d'achat_Purchase request\2019\"
    strPath = strFolderPath & _
      Parameters.Range("D1").Value & ".xlsm"

   ActiveWorkbook.SaveAs Filename:=strPath, 
   FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Однако при отладке всегда возникает проблема в строке, в которой я пытаюсь создать имя:

strPath = strFolderPath & _ Parameters.Range("D1").Value & ".xlsm"

Кто-нибудь может мне помочь?Я вовсе не продвинутый пользователь макросов, и я думаю, что он далеко от моих знаний.

Я использую Excel 2010.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

после небольшого исследования, и благодаря комментариям всех вас, я наконец-то смог сделать макрос работающим.Некоторые рекомендации:

  1. Ссылочные ячейки, используемые для «построения» имени файла, должны быть на активном листе;Я обнаружил, что проще создать формулу в файле и после создания ссылки только на одну ячейку в макросе, чем делать формулу в самом макросе, однако оба способа должны работать, в то время как ссылка находится на активном листе.
  2. Если в вашем файле есть динамически вычисляемые ячейки, скопируйте и вставьте значения перед сохранением файла (я создал независимый макрос, но я также скопировал его как значения, если это кому-нибудь нужно);
  3. Будьте осторожныс атрибутом FileFormat в команде SaveAs;Прочитав несколько блогов, я предпочел использовать числовой код, чем описание, но опять-таки оба способа должны работать.

См. здесь очень простой окончательный код моего макроса (Excel 2010):

Sub Save()
  CopyValues
    'Sub CopyValues()
      'ActiveSheet.Unprotect
      'Columns("A:U").Select
      'Selection.Copy
      'Application.CutCopyMode = False
      'Selection.Locked = True
      'Selection.FormulaHidden = True
      'Columns("A:U").Select
      'Selection.Copy
      'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      ':=False, Transpose:=False
      'Application.CutCopyMode = False
      'Range("G7").Select
      'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    'End Sub

  Dim strPath As String
  Dim strFolderPath As String

    strFolderPath = "\\camo106\remote\Achat_Purchasing\Demande d'achat_Purchase request\2019\"
    strPath = strFolderPath & _
      Range("A1").Value & ".xlsm"

    ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=52, ReadOnlyRecommended:=True, CreateBackup:=False
    GoToMainSheet
     'Sub GoToMainSheet()
       'Sheets("Demande d'Achat").Select
       'Range("S2").Select
     'End Sub

End Sub

Надеюсь, будет полезно кому-то еще.

0 голосов
/ 22 ноября 2018

Как выглядит ваше имя файла перед сохранением?Если вы используете формулы вроде NOW () в имени файла, это может быть случай, когда он содержит запрещенные символы.Вы можете проверить это в ближайшем окне, когда просматриваете код прямо перед попыткой сохранить файл.

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