Я сделал макрос, который обрабатывает несколько файлов в каталоге и генерирует CSV-файлы, чтобы взять их в базу данных.Excel Выполнить макрос из кнопки проблема
Когда я запускаю макрос из меню «Макросы» или «шаг за шагом», у меня нет проблем. он Gos через все файлы и все строки (в файлах).
Но когда я назначаю макрос кнопке, он просматривает все файлы, но не работает в некоторых строках. И результат в CSV отличается.
Работы
не работает
ХОРОШО CSV: D
NAME , GROUP1, 25,13
NAME1, GROUP1, 25,17
NAME2, GROUP2, 27,14
NAME3, GROUP2, 28,16
NAME2, GROUP2, 23,12
НЕПРАВИЛЬНО CSV D:
NAME , GROUP1, 25,13
NAME1, GROUP1, 25,17
, GROUP2, 27,14
, GROUP2, 23,12
меньше строк, и неправильный формат
Я не думаю, что она должна идти часть макроса, он отлично работает без но мне это нужно.
я тестировал с
Application.ScreenUpdating = False
И
Application.ScreenUpdating = True
PD: Извините за мой английский.
EDIT Я установил кнопку на другой макрос, чтобы запустить другой, но результат тот же. Начальный лист, это не имеет значения. (Не проверено) КОД: (NO РЕДАКТИРОВАТЬ)
Public Sub ProcesarTodo()
Application.ScreenUpdating = False
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.path & "\Inscripciones\"
Exportpath = ActiveWorkbook.path & "\CSV\"
ExportpathE = ActiveWorkbook.path & "\CSV_E\"
Filename = Dir(Pathname & "*.xls")
answer = MsgBox("Eliminar archivos de carpeta CSV?", vbYesNo + vbQuestion, "VACIAR CSV")
If answer = vbYes Then
On Error Resume Next
Kill Exportpath & "*.csv"
Kill ExportpathE & "*.csv"
On Error GoTo 0
End If
a = 0
rows = 0
rowsE = 0
Dim Data(1 To 1) As String
Dim Hojas(1 To 2) As String
Data(1) = "Z"
Hojas(1) = "A"
Hojas(2) = "B"
etapa = 3
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
' CREAR SI NO EXISTE HOJA PARA ATLETAS
Dim mySheetName As String, mySheetNameTest As String
mySheetName = "Procesar"
On Error Resume Next
mySheetNameTest = Worksheets(mySheetName).name
If Err.Number = 0 Then
Worksheets(mySheetName).Cells.Clear
Else
Err.Clear
Worksheets.Add.name = mySheetName
End If
' This function get data from the file's name.
get_data
n = 1
For Each Hoja In Hojas
Sheets(Hoja).Select
For i = Cells(9, 7).Value To Cells(9, 9).Value Step 2
For j = Cells(10, 3).Value To Cells(10, 5).Value
If Cells(j, i).Value = "T" Or Cells(j, i).Value = "t" Or Cells(j, i).Value = "R" Or Cells(j, i).Value = "r" Then
Sheets("Procesar").Cells(n, 1).Value = Sheets(Hoja).Cells(j, 2).Value
Sheets("Procesar").Cells(n, 2).Value = equipo
Sheets("Procesar").Cells(n, 3).Value = Sheets(Hoja).Cells(11, i).Value
Worksheets(Hoja).Cells(j, i + 1).copy
Worksheets("Procesar").Cells(n, 4).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Procesar").Cells(n, 5).Value = Sheets(Hoja).Cells(j, i).Value
Sheets("Procesar").Cells(n, 6).Value = Sheets(Hoja).Cells(12, i).Value
n = n + 1
End If
Next j
Next i
Next Hoja
n = n - 1
Sheets("Procesar").Select
Range("H1").Select
Let x = 1
Do While x <= n
ActiveCell.FormulaR1C1 = "=PROPER(RC[-7])"
Selection.Offset(1, 0).Select
x = x + 1
Loop
Range("H1:H" & n).Select
Selection.copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H1:H" & n).Select
Selection.ClearContents
' Exportar Atletas
Call Exportar(Exportpath, wb.name, n)
wb.Close SaveChanges:=False
Filename = Dir()
a = a + 1
Loop ' Next file
Application.ScreenUpdating = True
bat
mensaje = MsgBox("Se procesaron " & a & " archivos" & vbNewLine & "El cual son " & rows & " atletas" & vbNewLine & "Y " & rowsE & " Entrenadores." & vbNewLine & "Programa realizado por Tomas Prado", , "Listo")
End Sub
Function Exportar(path, name, n)
equipo = Replace(name, ".xlsx", "")
equipo2 = Replace(equipo, ".xls", "")
Let Rango = "A1:" & "F" & n
ActiveSheet.Range(Rango).Select
Selection.copy
Worksheets.Add.name = "Exportar"
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
' Formato antiguo xlCSV
ActiveWorkbook.SaveAs Filename:= _
path & equipo2 & ".csv", FileFormat:=xlCSV, _
CreateBackup:=False
rows = rows + n
End Function
Похоже, что-то не так с вашим кодом, но если вы разместите его мы не можем делать какие-либо предложения относительно того, что проблема может быть ... –
Очевидно, я подумал, что, но зачем работать, если запустить не от кнопки. Кнопка запускает макрос, или нет? код очень обширный, вот почему я не публикую. – Blaztix
Что-то вы можете попробовать, так как мы не можем видеть код :) - это сделать еще один макрос, который вызывает первый. Затем установите кнопку для запуска этого макроса. Я знаю, что похоже, что он ничего не должен делать, кроме как у VBA может быть что-то странное. –