Короче говоря, я полный новичок, когда дело доходит до VBS (наш разработчик оставил половину работы, а затем исчез), поэтому я "" "" сделал "" "" (получил помощь от SO) макрос, который в основном организует данные HR на основе количества дней / отработанного времени. Исходные данные загружаются с нашего сервера, после чего они организуются макросом (реализованным вручную) и, наконец, попадают в руки нашего аналитика, проблема в том, что данные обновляются раз в две недели, поэтому их адаптация и реализация будут утомительными. макрос каждый раз, когда данные обновляются.

Я искал способ конвертировать VBA в VBS, но так как код очень грязный и содержит много переменных и ссылок, я хочу, чтобы файл VBS мог интерпретировать макрос (без повторного преобразования кода) и нормально выполнять , Является ли это возможным?

Оставляя часть кода для справки.

Private Sub duplicadorLicMed()

Set Application = CreateObject("Excel.Application")

Dim planillaDestino As Worksheet
Set planillaDestino = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
planillaDestino.Name = "hojaDest"

Dim planillaFuente As Worksheet
Set planillaFuente = Application.Workbooks.Open("tstfl.xlsm")
Set planillaFuente = ThisWorkbook.Worksheets(1)
planillaFuente.Name = "hojaFuente"

Dim filaFuenteUltima As Long
filaFuenteUltima = planillaFuente.Cells(planillaFuente.Rows.Count, "B").End(xlUp).Row

Dim filaIndiceFuente As Long

Dim filaIndiceDestino As Long
filaIndiceDestino = 1 ' salto de lineas y encabezado

Dim fechaInicio As Variant
Dim fechaFin As Variant
Dim fechaIndice As Date


    For filaIndiceFuente = 2 To filaFuenteUltima
    fechaInicio = planillaFuente.Cells(filaIndiceFuente, "L").Value
    fechaFin = planillaFuente.Cells(filaIndiceFuente, "M").Value

    ' if validador
        If Not IsDate(fechaInicio) Or Not IsDate(fechaFin) Then
            MsgBox ("Fecha invalida en la fila " & filaIndiceFuente & " columna " & planillaFuente.Name & ".")
            Application.Goto planillaFuente.Cells(filaIndiceFuente, "L").Value
            Exit Sub
        ElseIf fechaInicio > fechaFin Then
            MsgBox ("fecha inicio sobrepasa la fecha final")
            Application.Goto planillaFuente.Cells(filaIndiceFuente, "M").Value
            Exit Sub
        End If
    ' aaaaaaaaaaaaaaa
    For fechaIndice = fechaInicio To fechaFin
        filaIndiceDestino = filaIndiceDestino + 1
        planillaDestino.Cells(filaIndiceDestino, "A").Value = planillaFuente.Cells(filaIndiceFuente, "A").Value
        ' planillaDestino.Cells(filaIndiceDestino, "B").Value = planillaFuente.Cells(filaIndiceFuente, "B").Value
        planillaDestino.Cells(filaIndiceDestino, "C").Value = planillaFuente.Cells(filaIndiceFuente, "C").Value
        planillaDestino.Cells(filaIndiceDestino, "D").Value = planillaFuente.Cells(filaIndiceFuente, "D").Value
        planillaDestino.Cells(filaIndiceDestino, "E").Value = planillaFuente.Cells(filaIndiceFuente, "E").Value
        planillaDestino.Cells(filaIndiceDestino, "F").Value = planillaFuente.Cells(filaIndiceFuente, "F").Value
        planillaDestino.Cells(filaIndiceDestino, "G").Value = planillaFuente.Cells(filaIndiceFuente, "G").Value
        planillaDestino.Cells(filaIndiceDestino, "H").Value = planillaFuente.Cells(filaIndiceFuente, "H").Value
        planillaDestino.Cells(filaIndiceDestino, "I").Value = planillaFuente.Cells(filaIndiceFuente, "I").Value
        planillaDestino.Cells(filaIndiceDestino, "J").Value = planillaFuente.Cells(filaIndiceFuente, "J").Value
        ' planillaDestino.Cells(filaIndiceDestino, "K").Value = planillaFuente.Cells(filaIndiceFuente, "K").Value
        planillaDestino.Cells(filaIndiceDestino, "L").Value = fechaIndice
        fechaIndice = Application.Min(Application.EoMonth(fechaIndice, 0), fechaFin)
        planillaDestino.Cells(filaIndiceDestino, "M").Value = fechaIndice
        planillaDestino.Cells(filaIndiceDestino, "N").Value = planillaFuente.Cells(filaIndiceFuente, "N").Value
    Next fechaIndice
Next filaIndiceFuente

planillaDestino.Range("B2:B" & filaIndiceDestino).Formula = "=CONCAT(YEAR(L2),IF(INT(MONTH(L2))<10,0,""""),MONTH(L2))" ' per pro
' planillaDestino.Range("B2:B" & filaIndiceDestino).Formula = "=CONCAT(IF(LEN(hojaFuente!B2)<=8,0,""""),hojaFuente!B2)" ' digitador rut
planillaDestino.Range("K2:K" & filaIndiceDestino).Formula = "=ABS(DAYS(L2,M2))+1" ' dias totales

MsgBox "PROCESO COMPLETO"

End Sub

0