ms word ファイルにハイパーリンクを挿入しようとしましたが、ハイパーリンクを別の word ファイルのブックマークに挿入しようとしました。ブックマークを含む単語ファイルのパスは既にわかっているためです。そのため、パスとブックマーク名(つまり、「パス」+「#」+「ブックマーク名」)をWordファイルのハイパーリンクとして結合したいと考えています。ms word では、ハイパーリンクと「#」記号の後にブックマーク名が続くと、ブックマークへのリンクが作成されるためです。
私の問題は、コードに「#」を文字列として書き込むと、コードを実行することです。「#」記号は Word ファイルに正しく書き込まれず、バー記号「-」に変更されます。どうすれば対処できますか?
コードは次のとおりです。
ここの「#」記号が変更され、
string test_file_Path = created_folder + "\\test2.docx" + "#testsbookmark";
しかし、MessageBox.Show(linkAddr.ToString());
それはまだ正しいことを示しています。
public void AddContent(string filePath)
{
try
{
Object oMissing = System.Reflection.Missing.Value;
// Word Interface
Microsoft.Office.Interop.Word._Application WordApp = new Word.Application();
WordApp.Visible = true;
object filename = filePath;
Microsoft.Office.Interop.Word._Document WordDoc = WordApp.Documents.Open(ref filename, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//
WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
//
WordApp.Selection.ParagraphFormat.LineSpacing = 15f;
//
//WordApp.Selection.TypeParagraph();
Microsoft.Office.Interop.Word.Paragraph para;
para = WordDoc.Content.Paragraphs.Add(ref oMissing);
//
para.Range.Text = "This is paragraph 1";
//para.Range.Font.Bold = 2;
//para.Range.Font.Color = WdColor.wdColorRed;
//para.Range.Font.Italic = 2;
para.Range.InsertParagraphAfter();
para.Range.Text = "This is paragraph 2";
para.Range.InsertParagraphAfter();
//insert Hyperlink
Microsoft.Office.Interop.Word.Selection mySelection = WordApp.ActiveWindow.Selection;
mySelection.Start = 9999;
mySelection.End = 9999;
Microsoft.Office.Interop.Word.Range myRange = mySelection.Range;
Microsoft.Office.Interop.Word.Hyperlinks myLinks = WordDoc.Hyperlinks;
string test_file_Path = created_folder + "\\test2.docx" + "#testsbookmark";
object linkAddr = test_file_Path;
MessageBox.Show(linkAddr.ToString());
Microsoft.Office.Interop.Word.Hyperlink myLink = myLinks.Add(myRange, ref linkAddr,
ref oMissing);
WordApp.ActiveWindow.Selection.InsertAfter("\n");
//
WordDoc.Paragraphs.Last.Range.Text = "Created:" + DateTime.Now.ToString();
WordDoc.Paragraphs.Last.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
//
WordDoc.Save();
WordDoc.Close(ref oMissing, ref oMissing, ref oMissing);
WordApp.Quit(ref oMissing, ref oMissing, ref oMissing);
//return true;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
//return false;
}
}