1

私はプログラムで単語ファイルを開いて検索し、キーワードを強調表示しています。私のルーチンは正常に機能しています。問題は、プログラムでファイルを開いているときにダイアログが表示され、ファイルを読み取り専用モードで開くように求められることです。ダイアログは次のようになります ここに画像の説明を入力

実際には、ファイルを開いて変更したり保存したりできるため、ファイルを読み取り専用モードで開きたくありません。ファイルを読み取り専用モードで開かないようにできることを教えてください。

これが私の完全なコードです。見て、コードの何が問題なのかを教えてください。または、その結果、読み取り専用モードでなくファイルを開くことができるトリックを教えてください。これが私のコードです。

private void button1_Click(object sender, EventArgs e)
        {
            object fileName = "";
            string filePath = "";
            string strSaveasPath = "";
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                fileName = openFileDialog1.FileName;
                //strSaveasPath = Path.GetDirectoryName(path.ToString()); 
            }



            //fileName = "Z:\\C0000000003.doc";
            List<string> _list = new List<string>();
            _list.Add("tridip");
            _list.Add("arijit");

            //object fileName = "D:\\CVArchievePath\\C0000000001.doc";
            object textToFind = "test";
            object readOnly = false;
            Word.Application word = new Word.Application();
            Word.Document doc = new Word.Document();
            object missing = Type.Missing;
            try
            {
                doc = word.Documents.Open(ref fileName, ref missing, ref readOnly,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing,
                                          ref missing);
                doc.Activate();

                object matchPhrase = false;
                object matchCase = false;
                object matchPrefix = false;
                object matchSuffix = false;
                object matchWholeWord = false;
                object matchWildcards = false;
                object matchSoundsLike = false;
                object matchAllWordForms = false;
                object matchByte = false;
                object ignoreSpace = false;
                object ignorePunct = false;

                object highlightedColor = Word.WdColor.wdColorGreen;
                object textColor = Word.WdColor.wdColorLightOrange;

                object missingp = false;
                Word.Range range = doc.Range();

                foreach (string line in _list)
                {
                    textToFind = line;
                    bool highlighted = range.Find.HitHighlight(ref textToFind,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing,
                                                               ref missing);
                }

                System.Diagnostics.Process.Start(fileName.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error : " + ex.Message);
                //Console.ReadKey(true);
            }
            finally
            {
                //doc.Close(missing, missing, missing);
                if(doc!=null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);

                if (word != null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(word);

                word = null;
                doc = null;
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }


        }
4

1 に答える 1

0

ファイルを読み取り専用モードで開かないようにする方法を教えてください

まぁ、とりあえずコードは忘れて、「tridip」で開いているのでロックしてあります。別のユーザーが現在開いている Word ファイルに書き込むことはできないため、そのユーザーはファイルを閉じる必要があります。たぶん、あなたは「tridip」で、プログラムが開こうとしているドキュメントをすでに開いていますか???

于 2013-04-07T05:57:44.703 に答える