Страницы: 1
RSS
Макрос открытие книг, расположенных в сети
 
Здравствуйте! Я новичек этого дела, и пользоваться Excel начал недавно.
Я бы хотел, что б мне помогли в написание макроса. У меня на работе есть макрос, суть его такая: имееться 3 документа Excel, которые редактируються по сети разными пользователями, название документов - 0001, 0002, 0003, есть документ Excel, у которого при открытие имееться 3 кнопки, каждая из которых имеет название этих документов. При нажатие на 1 кнопку, в листе открываться документ 0001, при нажатие на 2 кнопку, в листе открываеться документ 0002, так же и з 3 кнопкой и документом. Я пробовал разобрать этот макрос, но я очень далек от этих команд, и не в силах это сделать. Вот прошу помощи у вас. Если нужно, могу предоставить документ этот, или если не трудно напишите пример такого макроса. Спасибо!
 
Цитата
gogol435 написал:
мне помогли в написание макроса
А что именно должен делать макрос который Вы хотите написать?
Цитата
gogol435 написал:
Я пробовал разобрать этот макрос, но я очень далек от этих команд, и не в силах это сделать
Если бы был текст этого волшебного макроса, то здесь хватит людей объяснящих что именно делает каждая команда
Цитата
gogol435 написал:
Если нужно, могу предоставить документ
Не просто "если нужно", а обязательно - смотрите Правила.
Не стреляйте в тапера - он играет как может.
 
Цитата
gogol435 написал:
У меня на работе есть макрос
Цитата
gogol435 написал:
если не трудно напишите пример такого макроса
Зачем Вам ещё такой? У Вас ведь уже имеется такой макрос )
 
Вот, тот файл http://www.mediafire.com/file/g59tx94k2fcfmac/Maski.xlsm/file
Хочу сделать такой же но под себя. Просто не могу разобрать и переделать..(
 
Цитата
открытие книг в листе
Как это? Курица в яйце?

О "примере" - предлагаете идти куда-то и качать файл? А пример нарисвать сами?
 
Цитата
vikttur написал:
А пример нарисвать сами?
Как вам это сделать?
Я скинул документ, который у нас на работе имееться, создали его давно, и кучу раз переделывали под себя. Понять что и где и как работает, мне не под силу. я новичек в этом деле( Вот и прошу совета знатаков
 

Эх, не поленился - скачал этот шедевр... Честно говоря так и не понял отчего он весит 6 с лишним метров. Даже если убрать красивую картинку машинки размер уменьшился на метр, сохранил в xlsb - ещё полметра. Практически пустой файл - 4,8 метра. Правда кнопочки там красивые, но вроде стандартные фигуры...
В макросах ничего волшебного нет - просто записаны макрорекордером и даже без последующей обработки:

Код
Sub w7w()
'
' w7w Ìàêðîñ
''
    Windows("L037.csv").Activate
    Cells.Select
    Selection.Copy
    Windows("L037.csv").Activate
    Windows("033.xlsm").Activate
    Sheets("0000037").Select
    ActiveSheet.Paste
    Rows("1:11").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
    Rows("1:1").Select
    Selection.AutoFilter
    Columns("A:C").Select
    Selection.ColumnWidth = 5
    Columns("D:D").Select
    Selection.Delete Shift:=xlToLeft
    Selection.ColumnWidth = 13.14
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("E:E").Select
    Selection.ColumnWidth = 5.29
    Selection.ColumnWidth = 5
    Columns("G:G").ColumnWidth = 6
    Columns("G:G").ColumnWidth = 5.57
    Columns("H:H").ColumnWidth = 10.29
    Columns("H:H").ColumnWidth = 11.86
    Columns("H:H").ColumnWidth = 11
    Columns("I:I").ColumnWidth = 10
    Columns("I:I").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("K:L").Select
    Selection.Delete Shift:=xlToLeft
    Columns("M:N").Select
    Selection.Delete Shift:=xlToLeft
    Columns("K:N").Select
    Selection.ColumnWidth = 9.71
    Range("M9").Select
    Columns("O:O").ColumnWidth = 3
    Columns("Q:Q").ColumnWidth = 9.57
    Range("A1:U5183").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    ActiveWindow.SmallScroll Down:=-24
    Rows("1:1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 1178373
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("D:D,I:I").Select
    Range("I1").Activate
    With Selection.Interior
        .Pattern = xlPatternRectangularGradient
        .Gradient.RectangleLeft = 0.5
        .Gradient.RectangleRight = 0.5
        .Gradient.RectangleTop = 0.5
        .Gradient.RectangleBottom = 0.5
        .Gradient.ColorStops.Clear
    End With
    With Selection.Interior.Gradient.ColorStops.Add(0)
        .Color = 65535
        .TintAndShade = 0
    End With
    With Selection.Interior.Gradient.ColorStops.Add(1)
        .Color = 10027161
        .TintAndShade = 0
    End With
    Range("A1:U5183").Select
    Selection.Font.Bold = True
    ActiveWindow.SmallScroll Down:=-24
    Range("F10").Select
End Sub

Проверить как они работают нет возможности, т.к. файлы-источники не прилагаются. Куча пустых модулей.

Цитата
gogol435 написал:
Хочу сделать такой же но под себя. Просто не могу разобрать и переделать..(
Проще не переделывать, а создать заново. Начать можно так же записывая свои действия макрорекордером.

P.S. "ЦяКнига" и "Аркуш1" - это какая локализация?

Не стреляйте в тапера - он играет как может.
 
Цитата
Ts.Soft написал:
P.S. "ЦяКнига" и "Аркуш1" - это какая локализация?
мова

Цитата
Ts.Soft написал:
просто записаны макрорекордером
пока записывали файл и вырос :-) . На самом деле, там на листе Uberzixt много данных.
Изменено: БМВ - 04.10.2018 22:59:33
По вопросам из тем форума, личку не читаю.
 
Ts.Soft, ой, мать моя женщина...
 
Спасибо, что не поленились и посмотрели мой файл. Я так понимаю там все забиндено, макрос взависимости от нажатой кнопки, переходит на лист, в котом будет открывать файл, который нужен. И идет следующим образом: Файл - открыть - Рабочий стол - файл "033" и так добавляет его в лист? Так же принцип со следующими листами. Правильно я понял? )))
Цитата
Ts.Soft написал:
Проще не переделывать, а создать заново.
Создать заново, это какие команды нужно использовать, можете помочь?
Я б хотел, что б макрос, при на жатие на кнопку. Переходил по пути, например: C:\Users\admin\Desktop, и открывал документ, например: "file034" в листе.
Я так понимаю, это должно быть следующего образа:
Запуск Макроса
Создать новый лист
Присвоить имя листу "001"
Перейти по пути F:\Users\admin\Desktop
Открыть файл "file034"
Закрыть макрос
Ну как то так не ругайте, просто я не понимю в командах ничего. Смотрел несколько уроков, по поводу принципа работы макросов и все. А где искать значения команд, и какие команды приминять лучше, не смог найти. По-этому обратился к вам.
 
Цитата
gogol435 написал:
макрос взависимости от нажатой кнопки, переходит на лист, в котом будет открывать файл
gogol435, в листе файлы не открываются, они открываются в окне приложения (в нашем случае - Excel). Макрос из #7 - обычная запись макрорекордера: выделяется диапазон, копируется и вставляется в другое место, потом идет куча всяких форматирований. Вы можете включить макрорекордер, сделать какие-то действия на листе и посмотреть полученный код, и увидите какие команды что делали.
Цитата
gogol435 написал:
где искать значения команд
например, можно искать вот так
В Вашем случае можете набрать в поисковике "Открыть файл макросом", например, и так далее выяснить все остальное. Начните сами делать что-то, и если что-то не получается, тогда уже здесь задавайте конкретные вопросы, и Вам помогут.
 
Цитата
открытие книг в листе
Как это? Курица в яйце? Предложите понятное название, отражающее смысл задачи. Модераторы заменят.
 
Цитата
vikttur написал:
отражающее смысл задачи.
Я ж написал, что задача предстоит в том, чтоб с помощю кнопок в документе Excel открывать другие документы Excel в этом же окне
 
начнем с того, что книги Excel открываются в приложении Excel, а не в листе этого приложения.
если Вы согласны с этим утверждением, то попытайтесь простыми и понятными словами написать что Вам нужно? сможете написать так, чтобы Вас кто-нибудь понял - Вам помогут, скорее всего.
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Извините, что туплю и пишу не логично.
Я сделал фото, которые максимально покажут, что я писал выше.
Изменено: gogol435 - 07.10.2018 20:58:29
 
Цитата
Ігор Гончаренко написал:
если Вы согласны с этим утверждением
Я полностью с вами согласен. Попытаюсь исправить своё изложение в этом вопросе.
 
Предложите название текмы, отражающее суть задачи. Модераторы заменят.
 
Название
Как в книгу Excel запихнуть еще несколько, и чтобы каждая работала сама по себе.
 
Отктытие книги Excel с помощью макроса
 
gogol435, прежде всего попросите модераторов изменить название темы, т.к. Вам уже неоднократно объяснили некорректность текущего названия. Судя по тому что Вы хотите, название может быть вроде "копирование информации из различных книг на соответствующие листы".
Нарисованное Вами в №15 просто невозможно, т.к. документ (книга, файл) откроется в отдельном окне и редактировать Вы сможете только там. Можно скопировать в Ваш основной документ данные из открытого файла, но если вы измените скопированные данные, то их нужно будет не забыть скопировать в исходный файл. Кстати, макросы из Вашего примера делают именно копирование информации из определённых файлов в свою книгу. Но я честно говоря не вижу особого смысла перекидывать информацию туда-суда. Проще открыть исходный файл в отдельном окне и там отредактировать данные.
Дальнейшие рекомендации давать сложно, т.к. я не знаю что конкретно Вы делаете с информацией в основном файле и что именно хранится в книгах которые Вы хотите открывать "в листе" (не конкретные значения, а структура и объём данных).
Можно предположить что в основном файле выполняются какие-то расчёты, а не только демонстрируется красивая картинка, а в книгах "034" и т.д. хранятся изменяющиеся данные для этих расчётов. Но прежде чем приступать к конкретной реализации проекта нужно уточнить ещё и как часто меняется информация в файлах "034". Предположим раз на картинке машина, то у Вас автосервис и в "034" стоимость запчастей Мерседеса, а в "035" - Ауди. Тогда макрос должен выглядеть приблизительно так: Вы выбираете модель, а макрос сам определяет какой файл открывать (034 или 035), потом он копирует данные для расчёта даже не на лист, а в массив и закрывает файл. Дальше производится расчёт. Или же макрос открывает файл и копирует данные на лист, но перед этим он проверяет дату предыдущего копирования данных на лист и сравнивает с датой последнего изменения файла и если файл не изменялся после копирования, то данные находящиеся на листе сейчас актуальны и нет смысла тратить время на открытие файла и копирование. И ещё возможно множество различных вариантов по реализации подобной задачи. Вы лучше не заморачивайтесь на открытии "книг в листе", а расскажите максимально подробно что Вы хотите делать - тогда Вам могут предложить несколько различных алгоритмов по реализации вашей задачи и кучу методов по реализации этих алгоритмов, ну а Вам останется только выбрать понравившейся, обложится справочниками по VBA и писать код регулярно задавая вопросы здесь " а почему не получается".
Не стреляйте в тапера - он играет как может.
 
Ts.Soft,
Я рад, что мне получилось донести до вас свою идею, и вы меня поняли. Спасибо!
Да, макрос, который я вам предоставил, просто копирует информацию, и эта информация не редактируеться. У меня свой небольшо бизнес и есть свои клиентские базы, базы товаров и тд.
Я просто хотел сделать, например: У меня есть папка где лежит 4 файла Excel, "Клиенты" "Товар из Китая" "Товар из Эвропы" "Статистика" это простые документы, в которых я просто веду записи\подсчёты.
И, файл Excel на рабочем столе, при отрытие его, у меня (как на рисунке, что я вам скинул) 4 кнопки, у которых названия: "Клиенты" "Товар из Китая" "Товар из Эвропы" "Статистика", и я свободно в этом окне могу вызывать той или иной документ, по нажатия на кнопку, и работать в нем, с возможностью его сохранить в ту же папку и в те же документы. Ну это как бы для удобства, чтоб не было кучи окон и прочего.
Если такое не возможно, или может есть другие идеи, или что-то по проще. А то я себе надумал, незная, как это и с чем его едят.
Спасибо за ответ!
Изменено: gogol435 - 08.10.2018 00:01:29
 
Никто не посоветует с чего начать в таком случае?  :cry:  
 
gogol435, проще всего на Рабочем столе создать ярлыки для файлов "Клиенты" "Товар из Китая" "Товар из Эвропы" "Статистика" и открывать их хоть по одному, хоть все сразу - в любом случае каждый файл будет открываться в собственном окне.
Другой вариант - создать файл "Мой небольшой бизнес", в нём создать листы "Клиенты" "Товар из Китая" "Товар из Эвропы" "Статистика" на которые перенести данные из соответствующих файлов. После чего о исходных файлах забыть, вплоть до физического удаления их с диска, а работать только с файлом  "Мой небольшой бизнес" при необходимости переключаясь между листами. Ну а если таких листов станет очень много, то сделать лист-оглавление с гиперссылками на необходимые листы книги.
Не стреляйте в тапера - он играет как может.
 
Цитата
Ts.Soft написал:
лист-оглавление с гиперссылками на необходимые листы книги
Как эта функция работает?
Она открываем в отдельном окне, или как?
 
Цитата
gogol435 написал:
Как эта функция работает?
Приблизительно так
Не стреляйте в тапера - он играет как может.
 
Спасибо!

А как сделать копирование содержимого из другого документа в лист? (Как в том макросе, что я скинул)
Изменено: gogol435 - 12.10.2018 14:11:56
 
Вопрос не по теме
 
Цитата
vikttur написал:
по теме
Изменил
 
Ваше изменение не повлияло на смысл вопроса. Тема об открытии книг, вопрос в продолжение - копирование. Но это продолжение Вашей задачи, но никак не продолжение темы.
Страницы: 1
Наверх