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

#excel #vba

#excel #vba

Вопрос:

Я написал код для извлечения информации из другой книги и копирования ее в мою активную книгу.

 sub copydata
    
    Workbooks.Open "C:Userabc.xlsx" 
    
    'test.xlsx is the active workbook, and abc.xlsx is the workbook data is being copied from
    Workbooks("abc.xlsx").Worsheets("Sheet1").Range("A1:A10"). Copy
    Workbooks("test.xlsx").Worsheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
    
    Workbooks("abc.xlsx").Close SaveChange:=True
    
End Sub
 

Если этот лист Excel запускает макрос на другом компьютере, каталог будет другим, а также имя файла должно остаться прежним.
Есть ли способ динамически изменять это или устанавливать это при запуске макроса с помощью кнопки?

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

1. Конечно, это можно изменить, но как программа должна знать, в каком новом каталоге искать файл?

Ответ №1:

Я считаю, что это работает таким образом, но я не тестировал это.

вы можете затемнить переменные, чтобы заменить строку, которую вы используете.

 dim path as string
path = (wherever you are pulling the path string data from)
Workbooks(path).Worksheets("Sheet1").Range("A1:A10").Copy
 

на самом деле вы можете сделать это для любой части, заключенной в кавычки. просто затемните переменную и заполните ее значением
dim sheet как листы
dim range1 как диапазон
range1 = диапазон («A1: A10»)
лист = листы («Лист1»)
должно позволить вам иметь все части в качестве переменных. итак, следующий код будет работать
Книги (путь).Рабочие листы (лист).диапазон (диапазон 1).копировать

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

1. также этот код может помочь вам с созданием вложенных папок и доступом к ним.

Ответ №2:

Эторабочая книга.путь может быть очень полезен для вас. надеюсь, это имеет смысл в том, что я делаю, потому что код недостаточно полон для тестирования.

 Dim Path1 as string
Dim Path2 as string
Dim Answer as boolean
Path1 = "Old"
Path2 = "New"
if Answer = true then
workbooks(ThisWorkbook.Path amp;"" amp; Path1 amp; "Newfile.xlsm") 
else
workbooks(ThisWorkbook.Path amp;"" amp; Path2 amp; "Newfile.xlsm")
end if
 

этот пример, основанный на значении «Ответ», сохранит файл по тому или иному пути.