Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2012, 15:15   #1
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как?

Макрос должен запускаться из внешнего файла (Макрос.xls).
Спрашивать, откуда ему взять файл для обработки.

Далее ячейку а1 он должен делить на 1000.
Сохранять файл.


Основная сложность, с которой я столкнулся - не получается задать ячейке во ВНЕШНЕЙ (открытой) книге значение этой же ячейки, деленное на 1000.
Почему-то макрос всё время обращается к той книге, в которой сам макрос и содержится (Макрос.xls).
Ник Харди вне форума Ответить с цитированием
Старый 30.01.2012, 15:40   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А текст макроса посмотреть можно?
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 30.01.2012, 17:11   #3
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

У нас теплоэнергетическая компания, потому не удивляйтесь наиминованиям Тепло Своё и Котёл 1.

Sub Transport_from_1()

'Спросим, из какой папки взять файлы

With Application.FileDialog(msoFileDialo gFolderPicker)
.Title = "Укажите рабочую папку": .Show
If .SelectedItems.Count = 0 Then
Exit Sub
Else
path = .SelectedItems(1) & "\"
End If
End With


file = Dir(path & "*.xlsx")
Do While file <> ""
Application.Workbooks.Open (path & "\" & file)


'С каким листом в открытой книге работаем?
listname = "Топливо форма"

'С какой по какую строчку обрабатывать (jFirst, jEnd).
jFirst = 6
jEnd = 17

'И через сколько строк перескакивать
StepInt = 5


'Вызываем функцию деления
Call Svoyo


'Сохранение книги в текущую папку под новым именем
ActiveWorkbook.SaveAs ActiveWorkbook.path & "\" & file & "_1.1.xlsm"

'Переходим к новому файлу в директории
file = Dir
Loop


'Когда обработаем все файлы - позакрываем книжки
ThisWorkbook.Close (savechanges = False)
ActiveWorkbook.Close (savechanges = False)

End Sub


----------------------------------------------------------
Sub Svoyo()

'Какие ячейки будем делить?

'Котёл 1
'Со строчки 80 по 110, пожалуйста.
FirstCell = 80: EndCell = 110
'Вызываем программу деления
Summer

'Котёл 2
FirstCell = 119: EndCell = 149
Summer

'Котёл 3

FirstCell = 158: EndCell = 188
Summer
'Котёл 4

FirstCell = 197: EndCell = 227
Summer


'Котёл 5

FirstCell = 236: EndCell = 266
Summer


'Котёл 6

FirstCell = 275: EndCell = 305
Summer


'Котёл 7
FirstCell = 314: EndCell = 344
Summer

'Котёл 8
FirstCell = 353: EndCell = 383
Summer


'Котёл 9

FirstCell = 392: EndCell = 422
Summer
'Котёл 10

FirstCell = 431: EndCell = 461
Summer

End Sub

-------------------------------------------------------------
Sub Summer()
Dim j As Integer, temp As Integer
For j = jFirst To jEnd
For k = FirstCell To EndCell Step StepInt
ActiveWorkbook.Sheets(listname).Cel ls = ActiveWorkbook.Sheets(listname).Cel ls / 1000
Next k
Next j

End Sub
Ник Харди вне форума Ответить с цитированием
Старый 30.01.2012, 17:15   #4
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

В Sub Summer опечатка:

ActiveWorkbook.Sheets(listname).Cel ls на самом деле выглядит как ActiveWorkbook.Sheets(listname).Cel ls(k, j)
Ник Харди вне форума Ответить с цитированием
Старый 30.01.2012, 17:47   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и до знака равно и после него?
макрос хороший и должен записывать в книгу (path & "\" & file)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.01.2012, 18:08   #6
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

И до знака и после, разумеется.
То есть

ЯЧЕЙКА = Ячейка, деленная на 1000

В целом, макрос у меня уже пашет, но там один нюанс - выдает ошибку, мол значение скрыто. Хотя оно вполне даже видимо.
Ник Харди вне форума Ответить с цитированием
Старый 30.01.2012, 18:30   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

видимо Sub Svoyo можно переписать так:
----------------------------------------------------------
Код:
Sub Svoyo()
  dim i as long
  'Котёл 1 до 10
  for i = 1 to 10
    FirstCell = 41+i*39: EndCell = 71+i*39
    'Вызываем программу деления
    Summer
  next i
End Sub
Номер ошибки? в какой строке?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.01.2012, 18:47   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Summer какой то непонятный... Цикл в цикле по неопределённым переменным (0 to 0), где все ячейки делятся на 1000...
Хотя вероятно не делятся - т.к. имя листа неизвестно.
Файл бы глянуть.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 30.01.2012 в 18:50.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть нужный файл, изменить его, закрыть без вопросов Ципихович Эндрю Microsoft Office Word 17 03.01.2012 03:30
Из Экселя ячейку в ворд и сохранить файл с именем ячейки Zhenya2030 Microsoft Office Word 1 19.07.2010 15:36
Открыть файл как Hex найти там некий участок кода, заменить его и сохранить AstraZak Общие вопросы C/C++ 10 05.03.2010 18:58
Диалоги открыть/закрыть файл Altera Операционные системы общие вопросы 3 03.12.2008 01:18
Как открыть и сохранить mp3 файл в delphi? Rahim1993 Мультимедиа в Delphi 2 03.01.2008 12:55