VBA - Запрос диалогового окна выбора excel файла
-
storm_Zcooler
VBA - Запрос диалогового окна выбора excel файла
Доброго времени суток!!!
Помогите со скриптом. Есть Excel файл, нужно по нажатию кнопки выходило диалоговое окно выбора excel файла из которого копируется определённый диапазон с данными и вставляется в текущий. Заранее спасибо.
Помогите со скриптом. Есть Excel файл, нужно по нажатию кнопки выходило диалоговое окно выбора excel файла из которого копируется определённый диапазон с данными и вставляется в текущий. Заранее спасибо.
-
storm_Zcooler
Re: VBA - Запрос диалогового окна выбора excel файла
Например, так:
Код:
читать дальше »
Код:
Код: Выделить всё
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 файла
ок. Давайте по порядку.
В исходном файле есть диапазон с9:с17(это коробки), этот диапазон не постоянен может быть больше коробок может быть меньше, этот диапазон определяется объединением ячеек J9(Pallet #1 это площадка на которой размещаются эти коробки). Как можно сделать чтобы копировались данные (коробки которые стоят на площадке Pallet #1) только которые в диапазоне объединения ячеек J9.
наверное опять не понятно сказал
В исходном файле есть диапазон с9:с17(это коробки), этот диапазон не постоянен может быть больше коробок может быть меньше, этот диапазон определяется объединением ячеек J9(Pallet #1 это площадка на которой размещаются эти коробки). Как можно сделать чтобы копировались данные (коробки которые стоят на площадке Pallet #1) только которые в диапазоне объединения ячеек J9.
наверное опять не понятно сказал

-
storm_Zcooler
Re: VBA - Запрос диалогового окна выбора excel файла
Цитата storm_Zcooler:
А можно ли сделать так в том файле из которого импортируется даные есть запись, но там ячейки объеденены, а надо чтобы скопировал эту запись и вставил в другой файл в одну ячейку?
Поясните приложенными примерами документов с подробными пояснениями.
Цитата storm_Zcooler:
еще вопрос в файле из которого импортируется есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры.
Можно. Точно так же: выложите примеры документов — исходного и результирующего.
А можно ли сделать так в том файле из которого импортируется даные есть запись, но там ячейки объеденены, а надо чтобы скопировал эту запись и вставил в другой файл в одну ячейку?
VBA - Запрос диалогового окна выбора excel файла
Поясните приложенными примерами документов с подробными пояснениями.
Цитата storm_Zcooler:
еще вопрос в файле из которого импортируется есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры.
VBA - Запрос диалогового окна выбора excel файла
Можно. Точно так же: выложите примеры документов — исходного и результирующего.
-
Iska
Re: VBA - Запрос диалогового окна выбора excel файла
Прикладываю два файла исходный и результирующий, ячейки откуда и куда выделены соответствующими цветами.
-
storm_Zcooler
Re: VBA - Запрос диалогового окна выбора excel файла
Примерно так:
Код:
Цитата storm_Zcooler:
есть запись, но там ячейки объеденены,
Тут сие роли не играет, поскольку мы просто берём значение из ячейки. Обращаемся к диапазону по имени («TTNNum»).
Цитата storm_Zcooler:
есть ячейка там указаны размеры например 100Х300Х100 (указаны в см) можно ли при импорте разбить эти данные в три разные ячейки и перевести их в метры.
Насколько я понимаю — либо размеры в мм (а не в см), либо пример Вы привели неверный. Аналогично — читаем значение ячейки по адресу, разбиваем по символу «x» в массив, затем заполняем целевые ячейки, просто перебирая элементы массива.
Код:
Код: Выделить всё
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 файла
Если у меня в исходном файле ячейка называется TTNNum то код получается
objWorksheet.Range("H9").Value = .Names.Item("TTNNum").RefersToRange.Value
а если у меня просто ячейка C9
objWorksheet.Range("H9").Value = .Names.Item("С9").RefersToRange.Value
выдает ошибку....
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:
а если у меня просто ячейка C9
.Names — это коллекция имёнованных диапазонов. «C9» — это не именованный диапазон, а адрес ячейки. Смотрите в том же макросе двумя строчками ниже:
Код:
и делайте так же. Например:
Код:
а если у меня просто ячейка 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 файла
Спасибо тебе огромное, но у меня еще вопрос, обновил файлы!
В исходном файле есть "вид упаковки"(Pallet #1) это площадка, на ней стоят коробки, количество площадок и количество коробок не постоянное и может меняться. Как сделать цикл так чтобы во первых скопировав одну строку проверял есть ли данные в другой если есть то копировал их.
Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).
В исходном файле есть "вид упаковки"(Pallet #1) это площадка, на ней стоят коробки, количество площадок и количество коробок не постоянное и может меняться. Как сделать цикл так чтобы во первых скопировав одну строку проверял есть ли данные в другой если есть то копировал их.
Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).
-
storm_Zcooler
Re: VBA - Запрос диалогового окна выбора excel файла
Спасибо тебе огромное, но у меня еще вопрос, обновил файлы!
В исходном файле есть "вид упаковки"(Pallet #1) это площадка, на ней стоят коробки, количество площадок и количество коробок не постоянное и может меняться. Как сделать цикл так чтобы во первых скопировав одну строку проверял есть ли данные в другой если есть то копировал их.
Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).
В исходном файле есть "вид упаковки"(Pallet #1) это площадка, на ней стоят коробки, количество площадок и количество коробок не постоянное и может меняться. Как сделать цикл так чтобы во первых скопировав одну строку проверял есть ли данные в другой если есть то копировал их.
Во вторых надо сделать чтобы ккопировал данные которые Pallet #1 потом отделял их толстой линией, и потом копивал данные которые Pallet #2 и т.д. соответственно ячейки Размеры грузовых мест и Масса (кг).