2016-02-23 4 views
0

Я пытаюсь написать код на VBA, который позволяет мне получить доступ ко всем файлам в предопределенной папке 1. Открыть каждый файл, примените интересующий макрос, затем скопируйте конечный результат в другую книгу в предопределенной папке 2 сохраните их там как .csv-файлыОткройте много файлов в папке, примените макрос и сохраните их в другой папке с разными именами, например 1, 2, 3

Проблема с моим кодом заключается в том, что это проблема, когда я сохраняю рабочая книга добавлена ​​в предопределенную папку 2. Я всегда сохраняю ее с тем же именем, которое создает перекрытие.

Другая проблема, когда я пытаюсь закрыть wb.close (см. Мой код ниже). Я получаю сообщение об изменениях y/n. enter image description here

Я уже написал код и пропустил ужасно. Мне нужна экспертная помощь. Еще раз спасибо за вашу поддержку.

Лучшие Рами

Sub LoopFile() 
    'Enable reference to Microsoft Scripting Runtime if you want to use early binding 
    Dim fso As Object 'Scritping.FileSystemObject 
    Dim fldr As Object 'Scripting.Folder 
    Dim file As Object 'Scripting.File 
    Dim wb As Workbook 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fldr = fso.GetFolder("D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\1\nOT DONE COUNTRIES\") 

    For Each file In fldr.Files 
     'Open the file 
     Set wb = Workbooks.Open(file.Path) 
     '## You will need to modify this line to refer to the correct 
     ' module name and macro name: 
     Application.Run "PERSONAL.XLSB!Ramroum" 
     Cells.Select 
     Range("F7").Activate 
     Application.CutCopyMode = False 
     Selection.Copy 
     Workbooks.Add 
     ActiveSheet.Paste 
     Application.CutCopyMode = False 
     ' The problem here it is only saving the folder as name 1 and not changing for example for 1 then in the other loop to 2, 3 and so on and so forth 
     ' I think I need your help here in my code 
     ChDir _ 
      "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay" 
     ActiveWorkbook.SaveAs Filename:= _ 
      "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay\1.xlsx" _ 
      , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
     ActiveWindow.Close 
     'Close the file (it was saved in Macro6 already) 
     wb.Close 
    Next 

    Set file = Nothing 
    Set fldr = Nothing 
    Set fso = Nothing 
End Sub 
+0

Замените 'wb.close' на' wb.Close SaveChanges: = True', чтобы сохранить изменения перед закрытием книги. – newguy

+0

Я не хочу сохранять изменения Я просто хочу выйти без сохранения, и я хочу не сохранять без всякого разговора excel Я не хочу сохранять – rsc05

ответ

0

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

В любом случае здесь мой код

Sub Ram2() 
'Enable reference to Microsoft Scripting Runtime if you want to use early binding 
    Dim fso As Object 'Scritping.FileSystemObject 
    Dim fldr As Object 'Scripting.Folder 
    Dim file As Object 'Scripting.File 
    Dim wb As Workbook 
    Dim i As Integer 
    i = 1 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fldr = fso.GetFolder("D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\1\nOT DONE COUNTRIES\") 

    For Each file In fldr.Files 
     'Open the file 
     Set wb = Workbooks.Open(file.Path) 
     '## You will need to modify this line to refer to the correct 
     ' module name and macro name: 
     Application.Run "PERSONAL.XLSB!Ramroum" 
     Cells.Select 
     Range("F7").Activate 
     Application.CutCopyMode = False 
     Selection.Copy 
     Workbooks.Add 
     ActiveSheet.Paste 
     Application.CutCopyMode = False 
    ' The problem here it is only saving the folder as name 1 and not changing for example for 1 then in the other loop to 2, 3 and so on and so forth 
    ' I think I need your help here in my code 
     ChDir _ 
     "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay" 
    ActiveWorkbook.SaveAs Filename:= _ 
     "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay\" & CStr(i) & ".xlsx" _ 
     , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
    ActiveWindow.Close 
    i = i + 1 


     'Close the file (it was saved in Macro6 already) 
     wb.Close SaveChanges:=False 
    Next 

    Set file = Nothing 
    Set fldr = Nothing 
    Set fso = Nothing 
End Sub 
+0

Rami, если этот код не решит вашу проблему, вы не должны ставить его в "Ответ". Нажмите ссылку «Изменить» под своим вопросом и добавьте код на вопрос, сам, с объяснением. Если этот код решит вашу проблему, нажмите «отредактировать» ниже этого ответа и добавьте объяснение того, как это помогло. –

0

Помещенные Application.DisplayAlerts = False рядом вершина вашего суб. Положите Application.DisplayAlerts = True в конце вашего суб.

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