Для простых задач в среде Unix-ish попробуйте popen()
.
На странице man:
Функция popen () открывает процесс, создавая канал, разворачивая и вызывая оболочку.
Если вы используете режим чтения, это именно то, о чем вы просили. Я не знаю, реализована ли она в Windows.
Для более сложных проблем вы хотите искать межпроцессное общение.
Range.Set
. Это неверно, поэтому я не включил его, когда попытался исправить ваш вопрос, включив в него код из ваших комментариев. .Range
является просто продолжением оператора With wb.Sheets("Open Quote")
; поэтому .Range
фактически означает wb.Sheets("Open Quote").Range
. Когда вы звоните Range
(без .
), вы используете неявную ссылку на активный лист; Поскольку вы только что открыли файл, который вы называете wb
, активный лист в нем теперь активен, а не лист / книга, которая была активна при запуске подпрограммы.
См. Ссылку: избегать неявного кода
Итак, на какой книге / листе должен быть Range(L3)
?
Вы никогда не тестируете, чтобы увидеть if cell is nothing then
или фактически используете cell
где-нибудь в вашем коде после этого.
Всякий раз, когда вы сталкиваетесь с проблемами, вы должны установить точку останова (F9) перед проблемой и использовать F8
для перехода по одной строке за раз.
Вы можете навести курсор мыши на переменные, добавить Watch и / или использовать Debug.Print
для отображения значений в непосредственном окне (Ctrl + G).
Попробуйте,
Debug.Print .Range("L3").Parent & ".Range(" & .Range("L3").Address & ")"
Debug.Print Range("A1:BA350").Parent & ".Range(" & Range("A1:BA350").Address & ")"
Debug.Print cell.Parent & ".Range(" & cell.Address & ")"
Пожалуйста, измените вопрос, включив в него код, который вы используете в настоящее время.
(лучше включить Option Explicit
)