Скопируйте с одного листа в рабочей книге и скопируйте в другую закрытую книгу в другом каталоге

#excel #vba

Вопрос:

У меня есть очень большая таблица xlsb, с помощью которой мои пользователи создают бизнес-план. Один раздел электронной таблицы xlb требует отправки данных в mysql, поскольку электронная таблица также подключается к веб-интерфейсу с помощью других действий.

Я извлекаю определенные строки данных из листа xlsb, которые будут помещены в другую закрытую книгу (xlsx), с которой пользователям вообще не нужно взаимодействовать, и из этой книги я импортирую в mysql, а затем веб-интерфейс берет верх.

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

Я хочу поместить пустой и закрытый xlsx в корневой каталог локального хоста, и когда пользователь нажимает и активирует кнопку x в своем рабочем файле xlsb, включается vba и должен передавать определенные строки данных из xlsb в закрытый xlsx, а оттуда PHPExcel (который не будет работать с файлами xlsb) «молча» импортирует это в mysql и что-то делает с этими данными.

Я просто не могу выполнить передачу, если принимающий файл xlsx находится за пределами рабочего каталога пользователей, как в приведенном ниже коде. Закрытый файл открывается нормально, но передача данных по ячейкам не происходит. Вероятно, это простая вещь, которую мне здесь не хватает, и я искал повсюду, но не могу найти ни малейшего намека на то, что я делаю неправильно или НЕ делаю, чтобы сделать это правильно… Может ли кто-нибудь, пожалуйста, дать мне подсказку о том, что не так?

 Private Sub CommandButton2_Click()
Dim pasteSheet As Worksheet

Workbooks.Open "C:wamp64wwwaircraftflt_plan_input.xlsx"

Set pasteSheet = Worksheets("flight_plan_input")
 
If ActiveSheet.Range("A1507") <> "" Then
ActiveSheet.Range(" A1506:Q1506").Copy
pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats 'xlPasteFormats  'xlPasteAllUsingSourceTheme
Application.CutCopyMode = False
End If
Workbooks("flt_plan_input.xlsx").Close SaveChanges:=True
End Sub
 

Комментарии:

1. Я бы посоветовал вам перестать полагаться на ActiveWorkbook и. ActiveSheet Назначьте все книги и листы переменным и используйте их для полной квалификации всех ссылок на книги, листы и диапазоны.

2. Большое спасибо за быстрый ответ, Крис. Я рассмотрю это для начала