(VBA) Открыть книгу с сетевого диска
Я столкнулся с проблемой, связанной с функцией workbook.open, при попытке открыть книгу, расположенную в сетевой папке. Макрос VBA ведет к
"Ошибка 1004"
без каких-либо особых причин, только то, что путь к файлу недоступен.
Я использовал Google и это сообщество в течение очень долгого времени, чтобы решить эту проблему, ниже моих шагов, которые я попробовал, и мое единственное решение в конце. У меня вопрос: ПОЧЕМУ Excel так себя ведет и что я могу сделать в следующий раз?
Сначала пользователь вводит путь к файлу в ячейке внутри Исходной рабочей книги, сохраненной локально на компьютере. Код VBA принимает входные данные ячейки (я пробовал Range("K4"), а также Range("K4"). Value) и выравнивает его по строке, которая видна (Variable Watch при отладке), но завершается ошибкой, когда она приходит в функцию Workbook.open.
Я попытался использовать пользовательский сетевой путь (например, "G:/..."), а также универсальный сетевой путь ("\\xxx.xxx..."), который является более точным, поскольку не каждый пользователь отображал сетевая папка с той же буквой диска.
В конце единственным моим рабочим решением был жестко закодированный путь в редакторе VBA с путем UNC.
Почему так? В этом случае сетевой путь не изменяется, но когда наступит момент, когда необходимо, чтобы папка была записана в ячейку, я потерялся.
Спасибо за ваш сбор!
РЕДАКТИРОВАТЬ: в основном это код... Я удалил ненужные части...
'Variablen
Dim MA$, Monat$, Fehltag$, Ort$, Projekt$, FilePlanung$, MainString$, NeuerString$
Dim LastRowM&, StartZelleP&, ProjektP&
Dim wb, wbP As Workbook
Dim wsK, wsS, wsM As Worksheet
Dim StartDatumM As Date
Dim array_monate As Variant
'Arbeitsblätter
Set wb = ThisWorkbook
Set wsK = wb.Sheets("Kopfblatt")
Set wsS = wb.Sheets("Stammdaten")
Set wsM = wb.ActiveSheet
'Fix
MA = wsK.Range("D2")
Monat = wsM.Name
FilePlanung = wsS.Range("K4")
Application.ScreenUpdating = False
Set wbP = Workbooks.Open(fileName:=FilePlanung)
'Set wbP = Workbooks.Open(FilePlanung) --> Tried also this and many other ways...
Set wsP = wbP.Sheets("aktuell")
1 ответ
Это код, который я использую:
Dim wb As Workbook
Set wb = Workbooks.Open(Worksheets("Sheet1").Range("A1").Value)