Delphi - Excel - 使用超链接

时间:2016-12-20 13:44:40

标签: excel delphi hyperlink excel-formula

Delphi Seattle,Excel 2013.我正在编写一个创建电子表格的应用程序。电子表格的一列将是LinkedIn中搜索的超链接。我用搜索参数创建了我的URL。如果此时通过ShellExecute调用URL,则可以正常工作。我现在将我的超链接插入Excel。如果我点击单元格,我会得到一个不同的页面。例如......创建一个在IBM上搜索的URL。执行ShellExecute .... LinkedIn显示IBM联系人。将相同的URL插入电子表格中的单元格,然后单击该单元格。 Web浏览器显示URL为https://www.linkedin.com/?trk=login_reg_redirect的页面。我是否已经登录LinkedIn并不重要。我在Delphi和纯Excel中都试过这个。如果我将其添加为公式,我会得到相同的行为(也就是错误的页面)。公式是

=HYPERLINK("https://www.linkedin.com/vsearch/p?company=IBM","IBM") 

如果我将URL复制并粘贴到浏览器中,我会获得正确的IBM页面。我的第一个想法是LinkedIn不允许/阻止其他应用程序直接调用他们的页面,但我创建了一个应用程序(通过Delphi)打开一个带有IBM URL的浏览器页面,它可以工作。

以下是显示问题的示例Delphi代码。欢迎任何想法...

procedure TForm1.Button4Click(Sender: TObject);
var
  url: string;
  oExcel: ExcelApplication;
  RawDataSheet: _Worksheet;
begin
  // The first two lines open a valid search page on LinkedIn showing IBM contacts
  URL := 'https://www.linkedin.com/vsearch/p?company=IBM';
  ShellExecute(self.WindowHandle, 'open', PChar(url), nil, nil, SW_SHOWNORMAL);

  oExcel := CreateOleObject('Excel.Application') as ExcelApplication;
  oExcel.Visible[LOCALE_USER_DEFAULT] := True;

 // Add a New Workbook, with a single sheet
  oExcel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT);

 // Get the handle to the active Sheet, and insert some dummy data
  RawDataSheet := oExcel.ActiveSheet as _Worksheet;

  // Add the Hyperlink, appears to work but takes me to wrong page
  RawDataSheet.Hyperlinks.Add(RawDataSheet.Range['A1', 'A1'], Url, EmptyParam, 'Attempt Contact lookup in LinkedIn', 'IBM');
  // Show the hyperlink text in a different cell
  RawDataSheet.Range['A2', 'A2'].Value2 := Url;

   // Verify the right URL was saved to the cell.  It appears so...
  ShowMessage(RawDataSheet.Range['A1', 'A1'].Hyperlinks[1].Address);

end;

生成的LinkedIn页面[login_reg_redirect]似乎显示Excel打开网页的方式与Delphi使用ShellExecute的方式不同。

0 个答案:

没有答案