C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.90007 の関連記事表示

<< 0 >>
■90007  Re[16]: リッチテキストボックスでカラー情報をコピーする方法
□投稿者/ イエメン -(2019/01/29(Tue) 14:44:40)
    ありがとうございます。
    
    以下のようにしてみましたが、やはり1回目ではうまくいかず2回ペーストする必要があります。
    
    BeginInvokeは非同期でバックグラウンドプロセスからフォアグラウンドプロセスに指令を投げるものだと思いますが、
    GUIから使っても良いのでしょうか?
    そして、それで遅延が発生するのでしょうか?
    
                Dim oldCursor = Cursor.Current
                Cursor.Current = Cursors.WaitCursor
    
                Dim xlApp As Object = Nothing
                Try
                    xlApp = GetObject(, "Excel.Application")
                    CallByName(xlApp, "CutCopyMode", CallType.Let, False)
                Catch
                Finally
                    If xlApp IsNot Nothing AndAlso Marshal.IsComObject(xlApp) Then Marshal.ReleaseComObject(xlApp)
                End Try
                BeginInvoke(Sub()
    
                                Clipboard.Clear()
                                RichTextBox1.Copy()
    
    
                                ' Excel 書式を維持するため、Word 経由で複写
                                Dim wApp As Object = Nothing
                                Dim wDocs As Object = Nothing
                                Dim wDoc As Object = Nothing
                                Dim wRng As Object = Nothing
    
                                Try
    
                                    wApp = CreateObject("Word.Application")
                                    wDocs = CallByName(wApp, "Documents", CallType.Get)
                                    wDoc = CallByName(wDocs, "Add", CallType.Method)
                                    wRng = CallByName(wDoc, "Range", CallType.Method)
                                    CallByName(wRng, "Paste", CallType.Method)
                                    CallByName(wRng, "Copy", CallType.Method)
                                Catch
                                Finally
                                    If wRng IsNot Nothing AndAlso Marshal.IsComObject(wRng) Then Marshal.ReleaseComObject(wRng)
                                    If wDoc IsNot Nothing AndAlso Marshal.IsComObject(wDoc) Then Marshal.ReleaseComObject(wDoc)
                                    If wDocs IsNot Nothing AndAlso Marshal.IsComObject(wDocs) Then Marshal.ReleaseComObject(wDocs)
                                    If wApp IsNot Nothing AndAlso Marshal.IsComObject(wApp) Then
                                        CallByName(wApp, "Quit", CallType.Method, False)
                                        Marshal.FinalReleaseComObject(wApp)
                                    End If
                                End Try
    
                                Cursor.Current = oldCursor
    
                            End Sub)
    
記事No.89928 のレス /過去ログ155より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -