2014-02-05 3 views
0

Я импортирую файл .txt и переформатировал данные для удаления запятых. Когда я пытаюсь сохранить его, он дает мне ошибку времени выполнения. Как я могу это исправить? Любая помощь будет очень признательна!Ошибка выполнения = '5': неправильный вызов или аргумент процедуры

Sub SaveNewFile() 

ActiveCell.SpecialCells(xlLastCell).Select 
endrow = Selection.Row 
Cells(1, 1).Select 

If TopSide = 1 Then 
    BoardName = BoardName & "_TOP" 
Else 
    BoardName = BoardName & "_BOT" 
End If 
filesavename = Application.GetSaveAsFilename(_ 
    InitialFilename:=BoardName, FileFilter:="YTV CAD Files (*.ycd), *.ycd") 
    If filesavename = "False" Then End 

    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set a = fs.CreateTextFile(filesavename, True) 
    For i = 1 To 17 
     For j = 1 To 2 
      a.write (Cells(i, j) & "  ") 
     Next j 
     a.writeline 
    Next i 
    For i = 18 To endrow 
     For j = 1 To 7 
      a.write (Cells(i, j) & "  ") 
     Next j 
     a.writeline 
    Next i 
    a.Close 

    Application.DisplayAlerts = False 
    'ActiveWorkbook.SaveAs Filename:= _ 
    ' filesavename, _ 
    ' FileFormat:=xlTextPrinter, CreateBackup:=False 
    jmessage = MsgBox(filesavename & " has been generated successfully!", vbOKOnly, "YCD Export") 
    Call YCDFileLocationIni 
    'Application.DisplayAlerts = True 
    Workbooks.Open (CADFileName) 
    Workbooks(ShortCADFileName).Activate 
    ActiveWorkbook.Close 
End Sub 

ответ

1

Первые вещи первые

Изменить

filesavename = Application.GetSaveAsFilename(_ 
              InitialFileName:=BoardName, _ 
              FileFilter:="YTV CAD Files (*.ycd), *.ycd") 
If filesavename = "False" Then End 

в

Dim filesavename As Variant 

filesavename = Application.GetSaveAsFilename(_ 
              InitialFileName:=BoardName, _ 
              FileFilter:="YTV CAD Files (*.ycd), *.ycd") 
If filesavename = False Then Exit Sub 

Вы никогда не должны использовать End. Причина довольно проста. Это похоже на «Выключение компьютера» с помощью кнопки POWER OFF. Оператор End прекращает выполнение кода, не вызывая события Unload, QueryUnload или Terminate или любой другой код Visual Basic. Также недействительны ссылки на объекты (если они есть) другими программами.

Далее, пожалуйста, избегать использования .Select/.ActivateINTERESTING READ

других вещей, которые не имеют смысла (но не будет генерировать ошибку, если у вас нет Option Explicit On) является BoardName. Где вы устанавливаете предыдущее значение? То же самое происходит с TopSide. Используйте Option Explicit, и основная часть вашей проблемы исчезнет.

Это, безусловно, не имеет никакого смысла для меня

Workbooks.Open (CADFileName) 
Workbooks(ShortCADFileName).Activate 

Какое значение CADFileName или ShortCADFileName

Также вы пошагово код YCDFileLocationIni?

В целом, после внесения вышеуказанных изменений в ваш код плюс несколько небольших изменений, таких как объявление CADFileName, ShortCADFileName, ваш код работал без ошибок.

Смежные вопросы