Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Доработать макрос за вознаграждение
 
Добрый день!

Прошу за вознагрождние доработать макрос:

Код
Sub Start()
    Range("B1").Select
    Application.Goto Reference:="R4C1:R7002C1"
    Selection.ClearContents
    Call OpenFile
End Sub

Sub OpenFile()
  Dim wApp As Object, wDoc As Object, f$
    f = Application.GetOpenFilename("Документ Microsoft Word, *.doc,Все файлы, *.*")
    If f = "" Then Exit Sub
    Set wApp = CreateObject("Word.Application")
        wApp.Visible = True ' если требуется отобразить
    Set wDoc = wApp.Documents.Add(f)    ' Добавление документа, выбранный файл используется в качестве шаблона
    t = wDoc.Content.Copy
    Set ns = ActiveSheet
    ns.Paste Destination:=ns.Cells(2, 1)
    wApp.Quit (False) ' закрытие Word'а
    Set wApp = Nothing
    Application.Wait (Now + TimeValue("00:00:02"))
    Call RefreshAll
End Sub

Sub RefreshAll()
    '
    ' ОбновитьФорматировать
    
     
    ' ОБНОВИТЬ ВСЕ ЗАПРОСЫ
    Dim IsBG_Refresh As Boolean, oc
    For Each oc In ThisWorkbook.Connections        'запоминаем значение обновления в фоне для запроса
        IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
        'выставляем принудительно ждать завершения запроса
        oc.OLEDBConnection.BackgroundQuery = False
        'обновляем запрос
        oc.refresh
        'возвращаем обновление в фоне в первоначальное состояние
        oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
    Call MySaveName
End Sub

Sub MySaveName()
    Worksheets("RESULT").Copy
    'there is now a new active workbook
    With ActiveWorkbook
        'save it
        .SaveAs Filename:="\\Mac\Home\Desktop\last docs\Docs\Work\Work form HDD - 15.12.2008\Docs CRYPT\BRP - 2010\Spare Parts\AIR\Compilation\" & Range("p2").Value & ".xlsx", FileFormat:=xlWorkbookDefault
        'optionally close it
        .Close savechanges:=False
    End With
    Call ClearAll
End Sub

Sub ClearAll()
    Range("B1").Select
    Application.Goto Reference:="R4C1:R7002C1"
    Selection.ClearContents
End Sub


Сейчас он открывает по 1 файлу, совершает действия и сохраняет в указанную папку.
Необходимо чтобы он открывал выбранную папку и совершал действия со всеми файлами в папке.

Предложения в личку пожайлуйста.

Заранее благодарю!

С ув. Артем!
Макрос поочередное отрытие файлов из заданной папки
 
Добрый день, специалисты!

Помогите пожалуйста доработать макрос:
Код
Sub Start()
    Range("B1").Select
    Application.Goto Reference:="R4C1:R7002C1"
    Selection.ClearContents
    Call OpenFile
End Sub

Sub OpenFile()
  Dim wApp As Object, wDoc As Object, f$
    f = Application.GetOpenFilename("Microsoft Word, *.doc,Âñå ôàéëû, *.*")
    If f = "" Then Exit Sub
    Set wApp = CreateObject("Word.Application")
        wApp.Visible = True ' 
    Set wDoc = wApp.Documents.Add(f)    ' 
    t = wDoc.Content.Copy
    Set ns = ActiveSheet
    ns.Paste Destination:=ns.Cells(2, 1)
    wApp.Quit (False) ' 
    Set wApp = Nothing
    Application.Wait (Now + TimeValue("00:00:02"))
    Call RefreshAll
End Sub

Sub RefreshAll()
    '
    Dim IsBG_Refresh As Boolean, oc
    For Each oc In ThisWorkbook.Connections        '
        IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
        '
        oc.OLEDBConnection.BackgroundQuery = False
        '
        oc.refresh
        '
        oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
    Call MySaveName
End Sub

Sub MySaveName()
    Worksheets("RESULT").Copy
    'there is now a new active workbook
    With ActiveWorkbook
        'save it
        .SaveAs Filename:="\\Mac\Home\Desktop\last docs\Docs\Work\Work form HDD - 15.12.2008\Docs CRYPT\BRP - 2010\Spare Parts\AIR\Compilation\" & Range("o2").Value & ".xlsx", FileFormat:=xlWorkbookDefault
        'optionally close it
        .Close savechanges:=False
    End With
    Call ClearAll
End Sub

Sub ClearAll()
    Range("B1").Select
    Application.Goto Reference:="R4C1:R7002C1"
    Selection.ClearContents
End Sub


В данный момент макрос работает след образом, необходимо поочередно выбирать файл DOC из папки и ждать отработку макроса.
Есть необходимость, в обработке всех файлов в папке с поочередным открытием и завершением макроса.

Заранее благодарю!
VBA: Excel to Json (Nested Objects)
 
sokol92, такой алгоритм у меня реализован в другом макросе, если я правильно понял,
Код
Public Sub tojsonbeauty()
    savename = "exportedxls.json"
    myFile = Application.DefaultFilePath & "\" & savename
    Open myFile For Output As #1
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(1)
    lcolumn = wks.Cells(1, Columns.Count).End(xlToLeft).Column
    lrow = wks.Cells(Rows.Count, "A").End(xlUp).Row
    Dim titles() As String
    ReDim titles(lcolumn)
    For i = 1 To lcolumn
        titles(i) = wks.Cells(1, i)
    Next i
    Print #1, "["
    dq = """"
    For j = 2 To lrow
      Print #1, "{"
       For i = 1 To lcolumn
         cellvalue = wks.Cells(j, i)
           If i = 1 Then
            Print #1, dq & titles(i) & dq & ":" & dq & cellvalue & dq
            Else
             Print #1, dq & "characteristics" & dq & ":" & "{"
 
            Print #1, dq & titles(i) & dq & ":" & dq & cellvalue & dq
             Print #1, "}"
           End If
           If i <> lcolumn Then
               Print #1, ","
           End If
       Next i
       Print #1, "}"
       If j <> lrow Then
           Print #1, ","
       End If
    Next j
    Print #1, "]"
    Close #1
    a = MsgBox("Saved as " & savename, vbOKOnly)
End Sub

Но я не могу реализовать вложенные объекты, поэтому и взял с item, subitem.
VBA: Excel to Json (Nested Objects)
 
Hugo,Спасибо большое, это уже результат!!!
VBA: Excel to Json (Nested Objects)
 
Hugo,  я новичек в этом деле, буду очень благодарен если напишите как изменить ренж на массив.

Заранее благодарю!
Изменено: Agryzkov - 06.02.2020 19:24:29
VBA: Excel to Json (Nested Objects)
 
sokol92, Я добавил выгрузку сразу в файл Json
Код
Public Sub subitem()
savename = "exportedxls.json"
Dim rng As Range, items As New Collection, myitem As New Dictionary, subitem As New Dictionary, i As Integer, cell As Variant
Set rng = Range("A2:A7103")
'Set rng = Range(Sheets(2).Range("A2"), Sheets(2).Range("A3").End(xlDown)) use this for dynamic range
i = 0
For Each cell In rng
Debug.Print (cell.Value)

myitem("article") = cell.Value

subitem("ru") = cell.Offset(0, 1).Value
myitem.Add "title", subitem
Set subitem = New Dictionary

myitem("brand") = cell.Offset(0, 3).Value
myitem("parent") = cell.Offset(0, 4).Value
myitem("price") = cell.Offset(0, 5).Value
myitem("currency") = cell.Offset(0, 6).Value
myitem("display_in_showcase") = cell.Offset(0, 7).Value
myitem("presence") = cell.Offset(0, 8).Value

subitem("minimalnoeKolichestvoKZakazu") = cell.Offset(0, 8).Value
subitem("kolichestvo") = cell.Offset(0, 9).Value
myitem.Add "characteristics", subitem

items.Add myitem

Set myitem = Nothing
Set subitem = Nothing
i = i + 1
Next
myFile = Application.DefaultFilePath & "\" & savename
    Open myFile For Output As #1
    Print #1, ConvertToJson(items, Whitespace:=2)
    Close #1
End Sub


Протестировал на 7100, но очень долго конечно.

Порекомендуйте пожалуйста в какую сторону смотреть по оптимизации макроса?
VBA: Excel to Json (Nested Objects)
 
Nordheim, Да, сразу в файл и выгружаю.

Но не могу понять почему больше 1000 строк уже тормозит и не отрабатывает макрос. У меня задача от 50 000 строк.  
VBA: Excel to Json (Nested Objects)
 
Wiss,Спасибо большое! Все получилось!
VBA: Excel to Json (Nested Objects)
 
Wiss, Спасибо большое, все заработало.  
Изменено: Agryzkov - 05.02.2020 16:03:12
VBA: Excel to Json (Nested Objects)
 
Уважаемые специалисты,

Есть вот такая структура EXCEL файла и макрос (файл в приложении)
Сам макрос:
Скрытый текст

Получаю вот такую структуру по выходу:
Скрытый текст
Как видно вложенные объекты "title" и "characreristics" дублируются.
А необходимо, чтобы вложенные объекты не дублировались и получалась вот такая структура
Скрытый текст
Перерыл интернет но так и не нашел решения по вложенным объектам.
Может кто сталкивался?

Заранее благодарю!
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
vikttur,  Done!  :)  Не понял сразу, прошу прощения.
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
Цитата
doober написал:
Код ? 123456789101112131415161718192021For j = 2 To lrow      Print #1, "{"       For i = 1 To lcolumn         cellvalue = wks.Cells(j, i)           If i = 1 Then            Print #1, dq & titles(i) & dq & ":" & dq & cellvalue & dq            Else             Print #1, dq & "characteristics" & dq & ":" & "{"             Print #1, dq & titles(i) & dq & ":" & dq & cellvalue & dq             Print #1, "}"           End If           If i <> lcolumn Then               Print #1, ","           End If       Next i       Print #1, "}"       If j <> lrow Then           Print #1, ","       End If   Next jНо этот метод формирования json совсем не пригоден.Ошибиться можно на раз.
Огромное спасибо! Я в этом новичок.
Цитата
vikttur написал:
Огромное спасибо! Буду разбираться. Дальше буду пытаться отправить все это через POST-запрос на сайт:)
Изменено: Agryzkov - 29.01.2020 22:34:48
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
Помогите пожалуйста подкорректировать макрос:
Код
Public Sub tojsonbeauty()
    savename = "exportedxls.json"
    myFile = Application.DefaultFilePath & "\" & savename
    Open myFile For Output As #1
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(1)
    lcolumn = wks.Cells(1, Columns.Count).End(xlToLeft).Column
    lrow = wks.Cells(Rows.Count, "A").End(xlUp).Row
    Dim titles() As String
    ReDim titles(lcolumn)
    For i = 1 To lcolumn
        titles(i) = wks.Cells(1, i)
    Next i
    Print #1, "["
    dq = """"
    For j = 2 To lrow
        For i = 1 To lcolumn
            If i = 1 Then
                Print #1, "{"
            End If
            cellvalue = wks.Cells(j, i)
            Print #1, dq & titles(i) & dq & ":" & dq & cellvalue & dq
            If i <> lcolumn Then
                Print #1, ","
            End If
        Next i
        Print #1, "}"
        If j <> lrow Then
            Print #1, ","
        End If
    Next j
    Print #1, "]"
    Close #1
    a = MsgBox("Saved as " & savename, vbOKOnly)
End Sub
Он создает файл со след структурой:
Скрытый текст
А нужна вот такая:
Скрытый текст

+10000000 в карму!!!
Изменено: Agryzkov - 29.01.2020 23:00:47
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
Благодарю за совет! Буду искать!
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
Начало решения:

Sub SaveAS()
   Dim tb As Object
   Set tb = ActiveSheet.ListObjects(1)
   Dim a As Variant
   a = tb.DataBodyRange
       
   Open ThisWorkbook.Path & "\Order.txt" For Output As #1

Ниже решение тянет построчно, а как сделать, чтобы по заданной структуре меняло 2 параметра?
       
   Dim x As Long
   Dim y As Long
   Dim s As String
   For y = 1 To UBound(a, 1)
       s = ""
       For x = 1 To UBound(a, 2)
           s = s & a(y, x) & vbTab
       Next
       Print #1, s
   Next
   
   Close #1
End Sub
Макрос. Создать TXT и вытянуть данные из Excel с заданной структурой
 
Уважаемые форумчане,

Прошу помощи в решении следующей задачи:
1. Есть файл EXCEL, содержащий 2 колонки: артикул и наличие.
2. Необходим макрос, который вытянет данные в ТXT в такой структуре:
Скрытый текст

Заранее благодарю от души!
С ув. Артем!
Выгрузка из Excel в текстовый документ
 
Спасибо огромное! Все работает отлично!!!
Выгрузка из Excel в текстовый документ
 
Уважаемые специалисты по vbа, подскажите, пожалуйста, каким образом подкорректировать существующий макрос для следующей задачи:
имеется умная таблица, из нее нужно вытянуть данные в TXT без строки заголовков. Удалить строку не получилась так как УТ не дает. Поэтому в начале я сохранил в ТXТ и потом открыл файл, удалил первую строку и сохранил в другой.
Код
Sub SaveAS ()
ThisWorkbook.SaveAs ThisWorkbook.Path & "\1.txt", 21, local:=-1
Dim s$
Open "c:\temp\1.txt" For Input As #1
Open "c:\temp\1.txt" For Output As #2
Line Input #1, s
Do Until EOF(1)
   Line Input #1, s
   Print #2, s
Loop
Reset
End Sub

Каким образом улучшить макрос, чтобы удалялся исходный файл и оставался только один готовый?
Также при экспорте данных, сам excel файл переименовывается как был назван TXT файл. Как это исправить?

Заранее выражаю огромную благодарность всем отозвавшимся!
Страницы: 1
Наверх