2016-10-04 6 views
0

У меня есть макрос, чтобы увидеть, содержит ли ячейка эту строку, если она выполняет команду «Сохранить как» с этим стандартом имени набора. Когда я пытаюсь запустить макрос, инструкции if кажутся неработоспособными. Когда я перехожу шаг за шагом, он попадает в операторы if, но сохраняет файл personal.xlsb вместо файла, над которым я работаю. Вот код, который я знаю, что есть что-то неправильно с нимExcel Personal.xlsb save document Макро

Dim FName   As String 
Dim FPath   As String 
Dim answer   As Integer 
If ActiveWorkbook.Sheets("Sheet1").Range("A1") = "String1" Then 
    FPath = "C:\String1" 
    FName = Sheets("Sheet1").Range("A1").Text 
    If Len(FPath & "\" & FName) = 0 Then 
     answer = MsgBox("Do you want to Save File As: " & FName & "?", vbYesNo + vbQuestion, "Microsoft Excel") 
     If answer = vbYes Then 
      ThisWorkbook.SaveAs Filename:=FPath & "\" & FName 
     End If 
    Else 
     ThisWorkbook.Save 
    End If 
End If 

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

+0

'' ThisWorkbook.SaveAs' >> ActiveWorkbook.SaveAs' В Excel VBA 'ThisWorkbook' это учебное пособие, в котором код работает –

+0

Спасибо, не думаю, что было другое, но я вижу это сейчас –

+2

Также имейте в виду, что ваша логика может быть немного выключена - если в каталоге C: \ String1 нет файла с именем, указанным в ячейке A1 (т.е. «String1»), пользователь будет спросите, хотите ли они сохранить файл там, создав таким образом файл C: \ String1 \ String1.xlsx. Но если файл с именем C: \ String1 \ String1 уже существует (что, по общему признанию, маловероятно, так как обычно файлы будут иметь расширение), книга будет сохранена обратно в том месте, где она была открыта, что может быть D: \ NonString2 \ Variable3.xlsx. – YowE3K

ответ

1

ThisWorkbook относится к книге, в которой находится код. Предположительно, код находится в Personal.xlsb, поэтому он сохраняет файл XLSB, а не справочную книгу.

Попробуйте вместо этого:

Dim FName   As String 
Dim FPath   As String 
Dim fullName As String 
Dim rng As Range 
Dim s as String 
s = "String1" 
With ActiveWorkbook 
    Set rng = .Sheets("Sheet1").Range("A1") 
    If rng.Value = s Then 
     FPath = "C:\" & s 
     FName = rng.Text 
     fullName = FPath & "\" & FName 
     If Len(fullName) = 0 Then 
      If MsgBox("Do you want to Save File As: " & FName & "?", vbYesNo + vbQuestion, "Microsoft Excel") = vbYes Then 
       .SaveAs Filename:=fullName 
      End If 
     Else 
      .Save 
     End If 
    End If 
End With 
Смежные вопросы