Подскажите по VBA макросам

Помощь пользователям в работе с программой E-Trade PriceList Importer
Ответить
kolodkin
Сообщения: 41
Зарегистрирован: 08 янв 2010 09:23

Для прайс листа в экселе написан макрос. В екселе он отлично работает.
Прайс называется Прайс.xls . VBA я не знаю, далее делалось интуитивно:
Макрос сохранил в macros.vb , показал путь до него в Pli в настройках прайслиста. Нажимаю Проверить. А он мне пишет: Нет файла _Прайс.xls !
В чем причина? или нужно в макросе пропмсывать чтобы прайслист пересохранялся с именем _Прайс.xls ? или как?
Спасибо.
Вот сам макрос (изменяет формат ячейки на текстовый, тк. иначе артикулы начинающиеся на 0 импортируются не правильно):

Sub DataToText()
Dim LastRow As Long, i As Long, z As String, iCol As Integer, iRow As Long, x As Range
LastRow = Cells(Rows.Count, 3).End(xlUp).Row
For i = 12 To LastRow
If Cells(i, 3) <> "" Then
z = CStr(Cells(i, 3).Text)
Cells(i, 3).NumberFormat = "@"
Cells(i, 3) = z
End If
Next
End Sub
kolodkin
Сообщения: 41
Зарегистрирован: 08 янв 2010 09:23

Да, очень помогло. Макрос запустился, но тот пример изменяет внешний вид прайса. Как оставить его в исходном виде???
Вот код из примера:
' Сохраняем данные в новом файле из буфера обмена
Set fs = CreateObject("Scripting.FileSystemObject")
varNewFileName = Replace(ActiveWorkbook.FullName, ActiveWorkbook.Name, "") & "_" & ActiveWorkbook.Name
If fs.FileExists(varNewFileName) = True Then
Kill varNewFileName
End If

Application.CutCopyMode = False
Application.DisplayAlerts = False

Dim nSourceFile As Long
Dim nDestFile As Long
Dim nTotalSheets As Long
Dim nSheetsAdd As Long

nSourceFile = Workbooks.Count
nTotalSheets=Workbooks.Item(nSourceFile).WorkSheets.Count
Workbooks.Add
nDestFile = Workbooks.Count

If nTotalSheets>3 Then
For nSheetsAdd=1 TO nTotalSheets-3
Workbooks.Item(nDestFile).Sheets.Add
Next nSheetsAdd
End If

For lngSheetID=1 TO nTotalSheets
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Activate ' активируем лист источник
Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).UsedRange.Copy
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Activate ' активируем новый лист
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Paste
Workbooks.Item(nDestFile).Sheets.Item(lngSheetID).Name=Workbooks.Item(nSourceFile).Sheets.Item(lngSheetID).Name
Next lngSheetID
Workbooks.Item(nDestFile).Sheets.Item(1).Activate
Workbooks.Item(nSourceFile).Sheets.Item(1).Activate

Application.ScreenUpdating = True

Workbooks.Item(nDestFile).SaveAs varNewFileName, Workbooks.Item(nSourceFile).FileFormat, , , False, False, 1, 2
Workbooks.Item(nDestFile).Close
'Application.Quit
End Sub
Ixenon
Сообщения: 743
Зарегистрирован: 19 ноя 2011 09:03

kolodkin писал(а):Да, очень помогло. Макрос запустился, но тот пример изменяет внешний вид прайса. Как оставить его в исходном виде???End Sub
Напишите конкретно, что Вас не устраивает и почему Вас это не устраивает.
Ответить

Вернуться в «Техническая поддержка программы E-Trade PriceList Importer»