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的方式不同。