VBA - Запрос диалогового окна выбора excel файла

Аватара пользователя
storm_Zcooler

VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

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



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

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

Например, так:


читать дальше »




Код:

Код: Выделить всё

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
Аватара пользователя
storm_Zcooler

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

ок. Давайте по порядку.



В исходном файле есть диапазон с9:с17(это коробки), этот диапазон не постоянен может быть больше коробок может быть меньше, этот диапазон определяется объединением ячеек J9(Pallet #1 это площадка на которой размещаются эти коробки). Как можно сделать чтобы копировались данные (коробки которые стоят на площадке Pallet #1) только которые в диапазоне объединения ячеек J9.



наверное опять не понятно сказал Изображение
Аватара пользователя
storm_Zcooler

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

Цитата storm_Zcooler:



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




Поясните приложенными примерами документов с подробными пояснениями.




Цитата storm_Zcooler:



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




Можно. Точно так же: выложите примеры документов — исходного и результирующего.
Аватара пользователя
Iska

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение Iska »

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

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

Примерно так:



Код:

Код: Выделить всё

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:



есть запись, но там ячейки объеденены,
VBA - Запрос диалогового окна выбора excel файла




Тут сие роли не играет, поскольку мы просто берём значение из ячейки. Обращаемся к диапазону по имени («TTNNum»).




Цитата storm_Zcooler:



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




Насколько я понимаю — либо размеры в мм (а не в см), либо пример Вы привели неверный. Аналогично — читаем значение ячейки по адресу, разбиваем по символу «x» в массив, затем заполняем целевые ячейки, просто перебирая элементы массива.
Аватара пользователя
Iska

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение Iska »

Если у меня в исходном файле ячейка называется TTNNum то код получается

objWorksheet.Range("H9").Value = .Names.Item("TTNNum").RefersToRange.Value

а если у меня просто ячейка C9

objWorksheet.Range("H9").Value = .Names.Item("С9").RefersToRange.Value

выдает ошибку....
Аватара пользователя
storm_Zcooler

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

Цитата storm_Zcooler:



а если у меня просто ячейка C9
VBA - Запрос диалогового окна выбора excel файла




.Names — это коллекция имёнованных диапазонов. «C9» — это не именованный диапазон, а адрес ячейки. Смотрите в том же макросе двумя строчками ниже:



Код:

Код: Выделить всё

… .Sheets.Item("сторона 1").Range("L9").Value …

и делайте так же. Например:



Код:

Код: Выделить всё

objWorksheet.Range("H9").Value = .Sheets.Item("сторона 1").Range("C9").Value
Аватара пользователя
storm_Zcooler

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

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



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

Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).
Аватара пользователя
storm_Zcooler

Re: VBA - Запрос диалогового окна выбора excel файла

Сообщение storm_Zcooler »

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



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

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

Вернуться в «Программирование и базы данных»