2016-08-31 5 views
1

В настоящее время я работаю над скриптом в WorkbookA, который уведомляет об изменении в другой книге (WorkbookB). Я хотел бы добавить функциональность, которая будет взята в эту книгу, если пользователь хотел бы увидеть изменение. В настоящее время, я бег кода:Создать гиперссылку на ячейку в другой рабочей книге/CSV VBA

SelRangeA(iRow, 2) = "=HYPERLINK(""[C:\..\WorkbookB.csv]Sheet1!B4"",""CLICK HERE"")" 

Который отображает соответствующие гиперссылке в таблице: Click Here с содержимым:

=HYPERLINK("[C:\..\WorkbookB.csv]Sheet1!B4","CLICK HERE") 

Однако, когда я по ссылке, она открывает запрашиваемый Workbook с ошибка:

Reference is not valid.

Любое понимание того, как правильно ссылаться на требуемую ячейку? Благодаря!

ответ

2

Файл CSV не будет содержать «Лист1». Имя «листа» выводится из имени файла.

Так что ваш код должен быть:

=HYPERLINK("[C:\..\WorkbookB.csv]'" & filename & "'!B4","CLICK HERE") 

где filename был установлен в базовой части имени файла CSV-файла в (т.е. он должен приравнивать к «WorkbookB» в вашем примере).

+0

++. :) – cyboashu

+0

Хороший улов, пропустил деталь csv –

+0

Я просто воспользуюсь этим ответом, чтобы ответить как вам, так и @cyboashu: P. Это имеет смысл, когда я смотрел на файл csv после его открытия - первое имя листа было WorkbookB (в этом примере). Однако он все еще бросает ссылку недействительно. error:/Любые другие мысли? –

1

Если ссылка находится в другой книге, и вы хотите, чтобы Excel открыл ее, если она еще не открыта, вам необходимо указать как адрес, так и суб-адрес (вроде привязки в HTML-ссылке):

SelRangeA(iRow, 2) = "=HYPERLINK(""C:\Foo.xlsx#[C:\Foo.xlsx]Sheet1!A1"")" 

EDIT: Обратите внимание, что для .csv файла, имя рабочего листа будет по умолчанию имя файла при открытии:

SelRangeA(iRow, 2) = "=HYPERLINK(""C:\Foo.csv#[C:\Foo.csv]Foo!A1"")" 
                 '^^^ 
+0

Я пробовал это и столкнулся с ошибкой: имя, которое вы ввели, не является веским основанием для этого может включать в себя: ... –

+0

@TylerDickson - вам нужно использовать фактические имена документов, листов и ячеек. Как указывает YowE3K, имя листа будет именем файла для CSV. – Comintern

1

Один из способов сделать это, чтобы определить имя (Formulas-> имя Manager), когда определенные ячейки меняются. Например, если имя было определено как "changedcell" вы бы установить гиперссылку следующим образом:

= HYPERLINK ("[C: .. \ WorkbookB.csv # changedcell]", "НАЖМИТЕ ЗДЕСЬ")

Просто убедитесь, что область имени установлена ​​в полную рабочую книгу, если имеется несколько рабочих листов.

+0

Это сработает, но Workbook2 будет меняться на новый файл, поэтому я не думаю, что смогу поддерживать совместимость с менеджером имен –

Смежные вопросы