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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2017, 14:50   #1
Ученик VBA
 
Регистрация: 11.01.2017
Сообщений: 4
По умолчанию Прописать в макросе VBA вставку значений чисел без форматов

Добрый день!
Нужно было чтобы у книге "1001+1002 +" прописать макрос, который будет копирувать значения из книги "загрузить" Листа1 (весь диапазон) у рабочую книгу ("1001+1002 +" ) на лист "accounts" значения чисел и слов. Макрос должен загружать данные, которые потом будут отображаться на листе "Ліміти кас".
Часть списала с интернета, часть сама, и получилось:
Код:
Sub Макрос1()
    Sheets("accounts").Visible = True
    Sheets("accounts").Select
    Cells.Select ClearContents
       
    Dim FilesToOpen
    Dim x As Integer

     Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
     
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
     
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
        With ActiveWindow
        Sheets("Лист1").Select
        Columns("A:XFD").Copy
        End With
        ActiveWindow.Close
        ThisWorkbook.Activate
        Sheets("accounts").Select
        Range("A1").Select
        ActiveSheet.PasteSpecial Format:=False, Link:=False, _
        DisplayAsIcon:=False, NoHTMLFormatting:=False
        Sheets("accounts").Visible = False
        x = x + 1
    Wend
    Application.ScreenUpdating = True
End Sub
НО КОГДА МАКРОС ЗАГРУЖАЕТ ДАННЫЕ, то они не отображаются на листе "Ліміти кас" (догадуюсь что формат не тот загружает). Если копирую данные вручну - то все работает. Пробувала
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Выбивает ошибку. Помогите, если сможете. Спасибо
Вложения
Тип файла: rar 1001+1002 +.rar (37.0 Кб, 12 просмотров)
Тип файла: xlsx загрузить.xlsx (17.8 Кб, 13 просмотров)

Последний раз редактировалось Ученик VBA; 11.01.2017 в 14:56. Причина: Вложения
Ученик VBA вне форума Ответить с цитированием
Старый 11.01.2017, 17:21   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

попробуйте макрос. Запускать из 1001+1002+
Код:
Sub Макрsос2()
    Dim shAcc As Worksheet
    Dim FilesToOpen
    Dim x As Integer
    Dim lastRow As Long
    Dim lastRowInp As Long
    Set shAcc = ActiveWorkbook.Sheets("accounts")
    shAcc.Visible = True
    shAcc.Range("A3:R65500").ClearContents
    Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
        With importWB.Sheets("Лист1")
            
            lastRowInp = .Cells(.Rows.Count, 2).End(xlUp).Row
            .Range(.Cells(3, 1), .Cells(lastRowInp, 20)).Copy
            lastRow = WorksheetFunction.Max(2, shAcc.Cells(shAcc.Rows.Count, 2).End(xlUp).Row) + 1
            shAcc.Cells(lastRow, "A").PasteSpecial xlPasteValuesAndNumberFormats
        End With
        importWB.Close
        x = x + 1
    Wend
    shAcc.Visible = False
    Set shAcc = Nothing
    Application.ScreenUpdating = True
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.01.2017, 18:00   #3
Ученик VBA
 
Регистрация: 11.01.2017
Сообщений: 4
По умолчанию

Спасибо. Работает.
Только наверно нада будет подправить номера строк, потому что
книга "загрузить" может иметь другую шапку таблицы (рядок 2).

Потому макрос и пробовала написать, что книга "загрузить" кажен день меняет свое название, местонахождение и количество колонок (ну и + данные).

Спасибо.
Кстати, Александр, у Вас нету просто № Приват карточки, а то я у webmoney розбераюсь куда хуже чем даже у VBA
Номер карты получателя: 4149 **** **** 3442

webmoney: R676842461689, Z243088649038, U164738001305; QIWI: 38O97935I3O8; ПриватБанк.UA

Ладно, я спрошу у сестры как можно будет Вас отблагодарить. Не розберусь - тогда напишу завтра снова.

Еще раз спасибо за макрос. А то надоело каждый день колонки у книге "загрузить" удалять. Я на листе с результатом "Ліміти кас" прописала =ПОИСКПОЗ("Бал.";accounts!$2:$2;0) а от загрузить данные без Вас не смогла. Спасибо за помощь
Ученик VBA вне форума Ответить с цитированием
Старый 11.01.2017, 21:43   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Ученик VBA, обращайтесь. Будут вопросы, ломитесь в скайп, без проблем.

Цитата:
Сообщение от Ученик VBA Посмотреть сообщение
Номер карты получателя: 4149 **** **** 3442
ну, до "национализации", по ссылке был сервис, который позволял напрямую с карты на карту ПБ скидывать. upd. Сервис рабочий
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 11.01.2017 в 21:54.
Aleksandr H. вне форума Ответить с цитированием
Старый 12.01.2017, 12:22   #5
Ученик VBA
 
Регистрация: 11.01.2017
Сообщений: 4
По умолчанию

Спасибо.
Теперь у меня аж варианта.
Тут мне мой горе-макрос подредактировали.

[PHP][Sub Макрос1()
Sheets("accounts").Visible = True
Sheets("accounts").Select
Cells.Select
Selection.ClearContents

fileToOpen = Application.GetOpenFilename("All Files (*.*),*.*")
If fileToOpen = False Then
MsgBox "Не выбрано ни одного файла!"
Exit Sub
End If
Workbooks.Open (fileToOpen)
Set w2 = ActiveWorkbook

w2.Sheets("Лист1").Columns ("A:XFD").Copy
ThisWorkbook.Sheets("accounts").Ran ge("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
w2.Close False 'закрываем книгу-источник без сохранения
ThisWorkbook.Sheets("accounts").Vis ible = False
Application.ScreenUpdating = True
End Sub
]
Ученик VBA вне форума Ответить с цитированием
Старый 12.01.2017, 12:25   #6
Ученик VBA
 
Регистрация: 11.01.2017
Сообщений: 4
По умолчанию

А вот это не могла написать, потому что никогда раньше не делала макрос на 2 открытые книги.

Set w2 = ActiveWorkbook

w2.Sheets("Лист1").Columns ("A:XFD").Copy
ThisWorkbook.Sheets("accounts").Ran ge("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
w2.Close False 'закрываем книгу-источник без сохранения
Ученик VBA вне форума Ответить с цитированием
Старый 12.01.2017, 13:25   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Ученик VBA Посмотреть сообщение
книга "загрузить" кажен день меняет свое
-название,
-местонахождение и
-количество колонок (ну и + данные).
1,2 не проблема. Вы же через диалоговое окно открываете ее/их
3 вот здесь может быть косяк. Не смотрел что откуда формулы тянут, но если порядок столбцов важен, то лучше данные перед вставкою привести к нужному виду.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на вставку, на специальную вставку Аслан Абдрахманов Microsoft Office Excel 11 11.02.2014 10:21
Формулу Excel прописать макросом в VBA FiataliS Microsoft Office Excel 3 11.12.2013 12:54
Как сохранить файл в офисе 2003 без изменения форматов? АННА-ЕАО Microsoft Office Excel 8 16.09.2011 11:34
Как в кодах прописать textbox на форме - VBA Nasten'ka7 Microsoft Office Excel 9 28.01.2011 20:07
Как прописать путь к ячейки таблицы в VBA Pro100Andrey Microsoft Office Access 2 19.05.2010 19:59