MS Excel 2010または2007、またはセルをコピーして(セルからテキストを選択せずに)任意のバージョンに貼り付けると、改行が追加され、カーソルが次の行に移動します。カーソルを上に移動して最後の行に戻すのは面倒です。
カーソルを最後の行に戻すのはそれほど手間がかかりませんが、プログラマーとして何度もこれを続けなければならない場合、私は本当に気分が悪くなります。これを停止する設定がExcelにある場合、何か提案はありますか?
オンラインで調べてみましたが、何も見つかりませんでした。また、Excelのオプションを調べても、何も見つかりませんでした。
セル全体を保存するのではなく、クリップボードにその値のみを保存する独自のコピールーチンを作成できます。
Sub OwnCopy()
Dim DataObj As New MSForms.DataObject
DataObj.SetText ActiveCell.Value 'depending what you want, you could also use .Formula here
DataObj.PutInClipboard
End Sub
マクロをコンパイルできるようにするには、参照として「Microsoft Forms 2.0オブジェクトライブラリ」を含める必要があります(Visual Basicエディターで、[ツール]-> [参照]に移動します)。
これで、このマクロを別のショートカットに割り当てることができます(例: Ctrl-Shift-C)デフォルトのマクロ実行ダイアログを使用する-または上書きする Ctrl-cApplication.OnKey "^c", "OwnCopy"
を実行します。ただし、上書きすることはお勧めしません Ctrl-c エディターに貼り付ける以外の場合は、通常は一緒にコピーされる他のすべての情報を使用する可能性が高いためです。
これを永続的にするには、マクロをパーソナルワークブックに保存するだけです。
複数のセル/選択領域も処理できる、より高度なコピールーチンが必要な場合は、次のコードを使用します。
Sub OwnCopy2()
Dim DataObj As New MSForms.DataObject
Dim lngRow As Long
Dim intCol As Integer
Dim c As Range
Dim strClip As String
Const cStrNextCol As String = vbTab
Const cStrNextRow As String = vbCrLf
With Selection
If Not TypeOf Selection Is Range Then
On Error Resume Next
.Copy
Exit Sub
End If
If .Areas.Count = 1 Then
For lngRow = 1 To .Rows.Count
For intCol = 1 To .Columns.Count
strClip = strClip & _
Selection(lngRow, intCol).Value & cStrNextCol
Next intCol
strClip = Left(strClip, Len(strClip) - Len(cStrNextCol)) _
& cStrNextRow
Next lngRow
Else
For Each c In .Cells
strClip = strClip & c.Value & vbCrLf
Next c
End If
strClip = Left(strClip, Len(strClip) - Len(cStrNextRow))
DataObj.SetText strClip
DataObj.PutInClipboard
End With
End Sub
翻訳会社のExcelスプレッドシートとコードの間で、アプリケーションの翻訳の大きなファイルをコピーして貼り付けていました。毎回改行を削除しなければならないことは、私を壁に押し上げました。
最後に、シート全体をコピーして、新しいGoogleドキュメントのスプレッドシートに貼り付けました。次に、Excelのようにコピーに改行が追加されないため、コピーのニーズに使用しました。
お役に立てば幸いです。
煩わしいことには同意しますが、やるべきことがあるかどうかはわかりません。
Excelは、セルを自動的にフォーマットします...タブ区切りの列、行区切りの行(1つのセルは1列の行です)。
確認するには:.NETで、Clipboard.GetText()は、書式設定が既にクリップボードにあることを示します
説明するためのIronPythonを次に示します。
# Copy some cells in Excel, then run the following
import sys, clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Clipboard
Clipboard.GetText()