Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/runtime error 1004 Новая - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
runtime error 1004 Новая
fayct Дата: Четверг, 08.12.2016, 11:54 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добрый день, уважаемые специалисты.

Хочу просить о помощи, как у опытных пользователей VBA.
Сделал макрос, который создает новый файл, добавляя в имя дату.
Пару раз все сработало как положено, решил убрать уведомления об
удалении листов в новом файле, начал выдавать ошибку 1004 при открытии новой книги, хотя сама книга создана.
. Не могу понять, как исправить, перелопатил
кучу форумов, все не то. Помогите разобраться.
[vba]
Код
Макрос1 Макрос
'

Sheets("Лист2").Select
ActiveWorkbook.RefreshAll
Sheets("Лист3").Select
Range("A1").Select
ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order"). _
ClearAllFilters
With ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order")
.PivotItems("").Visible = False
.PivotItems("(пусто)").Visible = False
End With
Sheets("Лист1").Select
ActiveWorkbook.RefreshAll
Dim Wb As Workbook
Dim WbName As String
Dim iPath As String
Dim iFileName As String
Set Wb = ActiveWorkbook
WbName = Wb.Name
iPath = ThisWorkbook.Path & "\"
iFileName = Left(WbName, Len(WbName) - 5) + " " + Format(Date, "dd/mm/yyyy") + ".xls"
If Dir(iPath + iFileName) <> "" Then
MsgBox "Копия файла c датой " & Format(Date, "yyyy/mm/dd") & " в директории " & Chr(13) & iPath$ & " уже существует!", vbExclamation
Exit Sub
End If
Wb.SaveCopyAs (iPath + iFileName)
'Ошибка здесь
Workbooks.Open iFileName
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Лист2").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Лист3").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Лист4").Select
ActiveWindow.SelectedSheets.Delete
End Sub
[/vba]


Сообщение отредактировал Manyasha - Четверг, 08.12.2016, 17:44
 
Ответить
СообщениеДобрый день, уважаемые специалисты.

Хочу просить о помощи, как у опытных пользователей VBA.
Сделал макрос, который создает новый файл, добавляя в имя дату.
Пару раз все сработало как положено, решил убрать уведомления об
удалении листов в новом файле, начал выдавать ошибку 1004 при открытии новой книги, хотя сама книга создана.
. Не могу понять, как исправить, перелопатил
кучу форумов, все не то. Помогите разобраться.
[vba]
Код
Макрос1 Макрос
'

Sheets("Лист2").Select
ActiveWorkbook.RefreshAll
Sheets("Лист3").Select
Range("A1").Select
ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order"). _
ClearAllFilters
With ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order")
.PivotItems("").Visible = False
.PivotItems("(пусто)").Visible = False
End With
Sheets("Лист1").Select
ActiveWorkbook.RefreshAll
Dim Wb As Workbook
Dim WbName As String
Dim iPath As String
Dim iFileName As String
Set Wb = ActiveWorkbook
WbName = Wb.Name
iPath = ThisWorkbook.Path & "\"
iFileName = Left(WbName, Len(WbName) - 5) + " " + Format(Date, "dd/mm/yyyy") + ".xls"
If Dir(iPath + iFileName) <> "" Then
MsgBox "Копия файла c датой " & Format(Date, "yyyy/mm/dd") & " в директории " & Chr(13) & iPath$ & " уже существует!", vbExclamation
Exit Sub
End If
Wb.SaveCopyAs (iPath + iFileName)
'Ошибка здесь
Workbooks.Open iFileName
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Лист2").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Лист3").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Лист4").Select
ActiveWindow.SelectedSheets.Delete
End Sub
[/vba]

Автор - fayct
Дата добавления - 08.12.2016 в 11:54
krosav4ig Дата: Четверг, 08.12.2016, 17:31 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
наверно не успевает файл сохраниться, пробуйте так
[vba]
Код
Private Declare Function CreateFile _
    Lib "kernel32" _
    Alias "CreateFileA" ( _
        ByVal lpFileName As String, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByRef lpSecurityAttributes As Any, _
        ByVal dwCreationDistribution As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long _
    ) As Long
Private Declare Function CloseHandle _
    Lib "kernel32" ( _
        ByVal hObject As Long _
    ) As Long
Sub Макрос1()
'
' Макрос1 Макрос
'

'
    Sheets("Лист2").Select
    ActiveWorkbook.RefreshAll
    Sheets("Лист3").Select
    Range("A1").Select
    ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order"). _
    ClearAllFilters
    With ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order")
    .PivotItems("").Visible = False
    .PivotItems("(пусто)").Visible = False
    End With
    Sheets("Лист1").Select
    ActiveWorkbook.RefreshAll
    Dim Wb As Workbook
    Dim WbName As String
    Dim iPath As String
    Dim iFilePath As String
    Set Wb = ActiveWorkbook
    WbName = Wb.FullName
    iPath = ThisWorkbook.Path & "\"
    iFilePath = Left(WbName, InStrRev(WbName, ".") - 1) + " " + Format(Date, "dd/mm/yyyy") + ".xls"
    If Dir(iFilePath) <> "" Then
    MsgBox "Копия файла c датой " & Format(Date, "yyyy/mm/dd") & " в директории " & Chr(13) & iPath$ & " уже существует!", vbExclamation
    Exit Sub
    End If
    Wb.SaveCopyAs iFilePath
    Dim IsSaved As Boolean
    Do Until IsSaved
        hfile = CreateFile(FilePath, &H80000000, &H1, 0, 3, 0, 0)
        IsSaved = hfile <> -1
        CloseHandle hfile
        DoEvents
    Loop
    Workbooks.Open iFilePath
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Лист2").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Лист3").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Лист4").Select
    ActiveWindow.SelectedSheets.Delete
End Sub
[/vba]
и вот тут почитайте


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениенаверно не успевает файл сохраниться, пробуйте так
[vba]
Код
Private Declare Function CreateFile _
    Lib "kernel32" _
    Alias "CreateFileA" ( _
        ByVal lpFileName As String, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByRef lpSecurityAttributes As Any, _
        ByVal dwCreationDistribution As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long _
    ) As Long
Private Declare Function CloseHandle _
    Lib "kernel32" ( _
        ByVal hObject As Long _
    ) As Long
Sub Макрос1()
'
' Макрос1 Макрос
'

'
    Sheets("Лист2").Select
    ActiveWorkbook.RefreshAll
    Sheets("Лист3").Select
    Range("A1").Select
    ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order"). _
    ClearAllFilters
    With ActiveSheet.PivotTables("СводнаяТаблица3").PivotFields("Shipping Order")
    .PivotItems("").Visible = False
    .PivotItems("(пусто)").Visible = False
    End With
    Sheets("Лист1").Select
    ActiveWorkbook.RefreshAll
    Dim Wb As Workbook
    Dim WbName As String
    Dim iPath As String
    Dim iFilePath As String
    Set Wb = ActiveWorkbook
    WbName = Wb.FullName
    iPath = ThisWorkbook.Path & "\"
    iFilePath = Left(WbName, InStrRev(WbName, ".") - 1) + " " + Format(Date, "dd/mm/yyyy") + ".xls"
    If Dir(iFilePath) <> "" Then
    MsgBox "Копия файла c датой " & Format(Date, "yyyy/mm/dd") & " в директории " & Chr(13) & iPath$ & " уже существует!", vbExclamation
    Exit Sub
    End If
    Wb.SaveCopyAs iFilePath
    Dim IsSaved As Boolean
    Do Until IsSaved
        hfile = CreateFile(FilePath, &H80000000, &H1, 0, 3, 0, 0)
        IsSaved = hfile <> -1
        CloseHandle hfile
        DoEvents
    Loop
    Workbooks.Open iFilePath
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Лист2").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Лист3").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Лист4").Select
    ActiveWindow.SelectedSheets.Delete
End Sub
[/vba]
и вот тут почитайте

Автор - krosav4ig
Дата добавления - 08.12.2016 в 17:31
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!