Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Запрос диалогового окна выбора excel файла

Ответить
Настройки темы
VBA - Запрос диалогового окна выбора excel файла

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!!!

Помогите со скриптом. Есть Excel файл, нужно по нажатию кнопки выходило диалоговое окно выбора excel файла из которого копируется определённый диапазон с данными и вставляется в текущий. Заранее спасибо.

Отправлено: 11:55, 29-08-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Например, так:
читать дальше »
Код: Выделить весь код
Option Explicit

Sub Sample()
    Dim i As Long
    Dim objRange As Range

    With Application.FileDialog(msoFileDialogOpen)
        With .Filters
            .Clear
            .Add "Microsoft Excel Workbooks", "*.xls"
            .Add "All files", "*.*"
        End With
        
        .AllowMultiSelect = False
        .InitialView = msoFileDialogViewDetails
        
        If Not .Show() = 0 Then
            For i = 1 To .SelectedItems.Count
                Set objRange = Selection
                
                With Application.Workbooks.Open(.SelectedItems.Item(i))
                    .Sheets.Item("Лист1").Range("b3:c8").Copy
                    
                    With ThisWorkbook.Sheets.Item("Лист1")
                        .Paste objRange
                    End With
                    
                    Application.CutCopyMode = False
                    .Close
                End With
                
                Exit For
            Next i
        End If
    End With
End Sub
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:16, 29-08-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо огромное!!!

А можно ли сделать так в том файле из которого импортируется даные есть запись, но там ячейки объеденены, а надо чтобы скопировал эту запись и вставил в другой файл в одну ячейку?

еще вопрос в файле из которого импортируется есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры.

Отправлено: 13:49, 29-08-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата storm_Zcooler:
А можно ли сделать так в том файле из которого импортируется даные есть запись, но там ячейки объеденены, а надо чтобы скопировал эту запись и вставил в другой файл в одну ячейку? »
Поясните приложенными примерами документов с подробными пояснениями.

Цитата storm_Zcooler:
еще вопрос в файле из которого импортируется есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры. »
Можно. Точно так же: выложите примеры документов — исходного и результирующего.

Отправлено: 05:04, 30-08-2012 | #4


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls исходный.xls
(35.0 Kb, 10 просмотров)
Тип файла: xls результирующий.xls
(27.5 Kb, 9 просмотров)

Прикладываю два файла исходный и результирующий, ячейки откуда и куда выделены соответствующими цветами.

Отправлено: 05:51, 30-08-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Примерно так:
Код: Выделить весь код
Sub Sample2()
    Dim objWorksheet As Worksheet
    
    Dim i As Long
    Dim elem As Variant
    
    
    Set objWorksheet = ThisWorkbook.Sheets.Item("Лист1")
    
    With Application.Workbooks.Open("E:\Песочница\0172\исходный.xls")
        objWorksheet.Range("A4").Value = .Names.Item("TTNNum").RefersToRange.Value
        
        i = 1
        
        For Each elem In Split(.Sheets.Item("сторона 1").Range("L9").Value, "x")
            objWorksheet.Range("F4").Item(1, i).Value = CLng(elem) / 1000
            
            i = i + 1
        Next
        
        .Close
    End With
    
    Set objWorksheet = Nothing
End Sub
Цитата storm_Zcooler:
есть запись, но там ячейки объеденены, »
Тут сие роли не играет, поскольку мы просто берём значение из ячейки. Обращаемся к диапазону по имени («TTNNum»).

Цитата storm_Zcooler:
есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры. »
Насколько я понимаю — либо размеры в мм (а не в см), либо пример Вы привели неверный. Аналогично — читаем значение ячейки по адресу, разбиваем по символу «x» в массив, затем заполняем целевые ячейки, просто перебирая элементы массива.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:49, 30-08-2012 | #6


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если у меня в исходном файле ячейка называется TTNNum то код получается
objWorksheet.Range("H9").Value = .Names.Item("TTNNum").RefersToRange.Value
а если у меня просто ячейка C9
objWorksheet.Range("H9").Value = .Names.Item("С9").RefersToRange.Value
выдает ошибку....

Отправлено: 06:34, 31-08-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата storm_Zcooler:
а если у меня просто ячейка C9 »
.Names — это коллекция имёнованных диапазонов. «C9» — это не именованный диапазон, а адрес ячейки. Смотрите в том же макросе двумя строчками ниже:
Код: Выделить весь код
… .Sheets.Item("сторона 1").Range("L9").Value …
и делайте так же. Например:
Код: Выделить весь код
objWorksheet.Range("H9").Value = .Sheets.Item("сторона 1").Range("C9").Value
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:10, 31-08-2012 | #8


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls исходный2.xls
(35.5 Kb, 9 просмотров)
Тип файла: xls результирующий2.xls
(62.0 Kb, 9 просмотров)

Спасибо тебе огромное, но у меня еще вопрос, обновил файлы!

В исходном файле есть "вид упаковки"(Pallet #1) это площадка, на ней стоят коробки, количество площадок и количество коробок не постоянное и может меняться. Как сделать цикл так чтобы во первых скопировав одну строку проверял есть ли данные в другой если есть то копировал их.
Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).

Отправлено: 03:38, 03-09-2012 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


storm_Zcooler, изложенное Вами задание мне не понятно. Попробуйте уточнить более детально.

Отправлено: 19:18, 03-09-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Запрос диалогового окна выбора excel файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - подвисает после закрытия диалогового окна woffka@vk Microsoft Windows 7 3 17-04-2012 16:56
Ошибка - [решено] Зеркальное отображение диалогового окна AnIG Microsoft Windows 2000/XP 4 22-04-2011 10:40
MFC - Открытие диалогового окна MFC vayak Программирование и базы данных 1 23-12-2009 23:39
Удаление ярлыка из диалогового окна автозапуска larios Microsoft Windows 2000/XP 1 03-02-2007 09:38
Пропал элемент диалогового окна antOOn Microsoft Windows 2000/XP 8 29-01-2005 00:19




 
Переход