Tag: 剪贴板

清除VBA中剪贴板数据的引用

我有一个macros将粘贴到剪贴板中的选定单元格多行数据。 它会为每一行插入新行。 列A和行1包含标题,它将填充任何插入的行。 Sheet1 Header0 Header Header Header Header1 Data Header2 Data Data1 Data2 Data Header3 Data 有时会增加额外的引号,有时候不会。 有没有办法清除剪贴板数据,而不删除合法的引号字符? Sub ClipboardToRows() ' Split multi-lined data into separate rows for the current selection ' Assumption is that Column A contains row headers Dim currRange As Range, currCell As Range, pasteCell As Range Dim rowHeader As String […]

VBA – 有没有一种方法来编写一个通用的全选和复制function从大多数Windows应用程序获取数据?

我经常运行几个Windows应用程序(并不总是相互关联),然后按下Control-Aselect所有,Control-C进行复制,然后粘贴到Excel文件。 我无法访问数据源,因此无法创build链接。 我查看了屏幕截图和OCR,但是我用OneNote进行了一个快速testing,并且无法转换为文本(可能是因为奇怪的字体和颜色)。 我正在考虑将密钥发送给应用程序。 我的问题是,如果有一种方法将一个对象分配给一个打开的应用程序,然后发送control-A,control-C来通过剪贴板收集数据值。 我知道足够的VBA乱七八糟的剪贴板,但我不知道如何指向一个开放的(第三方)应用程序,我不知道如何发送密钥。 任何链接或帮助表示赞赏。 谢谢。

使用macros清除WorkSheet的内容,而不清除剪贴板

如何使用macros清除Excel表格的内容,而不清除剪贴板的内容? 我目前正在使用下面的代码(通过单击表单上的button来调用),但是这会清除剪贴板中的数据,这些数据是我从其他源复制的,并且要粘贴到已清除的表单中 Sub clearly() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.UsedRange.ClearContents Next ws End Sub

使用XMLSpreadsheet从Excel粘贴到剪贴板

我有一个Excel电子表格中的数据,像这样的值:31%和69% parsing剪贴板后,我得到的值为.31和.69。 我预计会得到31和69或者31%和69% 我有一个C#程序从剪贴板parsing这些数据。 const string ClipboardFormat = "XML Spreadsheet"; if (Clipboard.ContainsData(ClipboardFormat)) { object clipData = Clipboard.GetData(ClipboardFormat); MemoryStream ms = clipData as MemoryStream; XmlDocument xml = new XmlDocument(); xml.Load(ms); XmlNodeList table = xml.GetElementsByTagName("Table"); foreach (XmlNode row in table[0].ChildNodes) { foreach (XmlNode cell in row.ChildNodes) { GridView.SetRowCellValue(iRowIndex, GridView.Columns[iColIndex], cell.InnerText); iColIndex++; } iRowIndex++; } cell.InnerText总是给我的价值为.31和.69,我预计值31和69或31%和69%。 我想使用“XML电子表格”格式,它可以帮助我find正确的date格式[2月14日给我02/01/2014]我正在寻找。 请build议我如何使用“XML […]

剪贴板c#工作簿到Excel和记事本

从我的c#应用程序,我想添加字体的文本到剪贴板。 如果我把它粘贴到excel,我想看看它的格式,如果我把它粘贴到记事本,相同的结果显然没有字体。 问题 : 如果我使用Microsoft.Office.Interop.Excel.Application并创build工作簿和工作表,我可以使用Clipboard.SetDataObject(wb)提供剪贴板,其中wb是我的工作簿:粘贴function工作到excel中,但没有粘贴到记事本中。 如果我使用如下代码: DataObject dataObj = new DataObject(); dataObj.SetData(wb); dataObj.SetData(DataFormats.Text, "myunformattedtext"); Clipboard.SetDataObject(dataObj); 记事本没关系,但excel也检索“myunformattedtext”而不是wb 我尝试使用dataObj.SetData(wb)dataObj.SetData(DataFormats.Rtf,wb)一些DataForms,但我testingDataFormats中的所有可用格式,也可以从ClipBoard.GetDataObject()使用粘贴从Excel中获取格式26个可能的值),但没有积极的结果。 有没有一个专门的Excel工作簿格式setdata? 我想如果答案是否定的,最好的解决办法是使用XML电子表格… 谢谢

将Dictionary <String,String>复制到Excel的剪贴板

我想写一个工具,它将比较两个string表,并find在一个,而不是其他的值。 我已经得到了应用程序,所以它正确得到所有这些值,我把它们存储在一个Dictionary<string, string>并使用它来显示它在我的XAML中的GridView。 然后我发现,你必须手动添加复制代码到GridView,所以我想我只是有一个button来复制字典的全部内容,但现在我有一个问题,当我试图将其复制到Excel它只产生一列的值,我需要的关键是一列和值是另一个。 这是我的复制代码到目前为止: if (ToTranslate.Count != 0) { var sb = new StringBuilder(); foreach (var item in ToTranslate) { sb.Append(item.Key + ", "); sb.AppendLine(item.Value); } System.Windows.Clipboard.SetData(DataFormats.Text, sb.ToString()); } 我已经尝试了很多其他的东西,如item.string,把它们放在方括号,仍然无法正常工作。 我也尝试修剪方括号,但这仍然无法正常工作。 我会认为它会拿起逗号作为一个分隔符,就像你打开一个csv时一样,但是没有。 我不知道这是否会有所帮助,但这是我的XAML <ListView ItemsSource="{Binding Results}"> <ListView.View> <GridView> <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Key}" /> <GridViewColumn Header="Text" Width="Auto" DisplayMemberBinding="{Binding Value}" /> </GridView> </ListView.View> </ListView>

从datagridview复制粘贴到excel时如何保持颜色?

我使用以下CellFormatting代码来有条件地为我的datagridview中的行着色。 private void SGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == SGridView.Columns["Name"].Index ) { DataGridViewRow row = SGridView.Rows[e.RowIndex]; SBomRow BomRow = (SBomRow )row.DataBoundItem; switch (BomRow.UsageType()) { case (UsageType.NE): break; case (UsageType.SV): e.CellStyle.BackColor = Color.OrangeRed; break; case (UsageType.Mix): e.CellStyle.BackColor = Color.LightGray; break; default: break; } } } 当我从datagridview复制粘贴到excel时,着色会丢失。 我知道在粘贴时数据会作为HTML和CSV数据添加到剪贴板,所以在粘贴到excel时可能不会着色。 这是真的,还是有复制粘贴时保持颜色的方法。

Excel.Range.Copy()粘贴Clipboard.GetText()

我有一小段C#代码,我试图通过 Excel文件中的工作表循环 , 将UsedRange复制到剪贴板 并将其粘贴到文本文件中 。 我到目前为止的代码似乎工作没有任何错误,但由于某种原因,一点都没有写入我的文本文件。 我错过了什么吗? 如果我包含System.Reflection.Missing.Value作为Copy方法的参数,仍然没有任何反应。 这是我的代码: using (StreamWriter sw = File.CreateText("ExtractedText.txt")) { foreach (Excel.Worksheet sheet in thisWkBook.Worksheets) { sheet.UsedRange.Copy(); sw.Write(Clipboard.GetText()); } } 编辑#1:我怀疑某种参考必须打破我的小应用程序,因为如果我创build一个新的C#项目Haxxbuild议的代码段工作。 但是,如果我使用Haxx中的相同代码并作为新的方法插入到我的小应用程序中,即使它与完全相同的“使用”库被调用完全相同的代码,也是行不通的。重做整个应用程序,复制/粘贴代码的最重要的部分,并报告,如果这可以解决问题。 编辑#2:我相信我认为是什么问题。 我忘了提到我正在使用BackgroundWorker( System.ComponentModel.BackgroundWorker ),以便在运行这个小程序时可以显示进度条。 我刚刚看到,显然你只能从STAThread( Clipboard.GetText返回null(空string) )访问剪贴板。 所以我继续创build一个单独的方法,不使用BackgroundWorkers,因此它运行在STAThread,瞧! 该代码是正确和function,但试图访问剪贴板将无法工作,如果从BackgroundWorker线程调用asynchronous。

WPF DataGrid复制到剪贴板:如何影响剪贴板中的数据格式?

WPF DataGrid中有一个很好的默认function,它将选定的单元格复制到剪贴板中,所以我们可以在其他应用程序中使用它。 但似乎,复制过程可以在性能方面得到改善,也有某种…错误在粘贴到我假设的Excel中,需要修复。 复制错误的步骤(不正确的Excel使用) A.1)从WPF数据网格复制单元格,包含带和不带前导零的文本值(例如“001”;“002”;“1”;“12345”;“ABC”;“0ABC”) A.2)将复制的数据粘贴到Excel中。 可以预料的是,前导零将被保留,但如果可能的话,Excel会将数值转换为数字数据格式(默认情况下,单元格数据types是General,这就是事实)。 复制错误的步骤(正确使用excel) B.1)从WPF数据网格中复制单元格,包含带和不带前导零的文本值(例如“001”;“002”;“1”;“12345”;“ABC”;“0ABC”) B.2)select目标excel文件中的所有单元格,并将单元格数据types更改为文本 B.3)将复制的数据粘贴到Excel中。 预计,领先的零将被保留,但他们也没有了 ! 在excel中查看预期结果的步骤(正确使用excel) C.1)将相同的数据从记事本复制到剪贴板 C.2)select目标excel文件中的所有单元格,并将单元格数据types更改为文本 C.3)将复制的数据粘贴到Excel中。 可以预料的是,领先的零将被保留,现在是真的。 我们可以看到相同的源数据。 所见即所得 我开始研究剪贴板数据,以找出B.1和C.1之间的区别(我也从Excel中复制了相同的数据,并检出了它…)。 我在Microsoft的C#剪贴板查看器示例帮助下发现的: 从记事本++复制的剪贴板数据格式: – Text (native) – UnicodeText (native) – System.String (autoconvertable) – Locale (native) – OEMText (native) 剪贴板数据从WPF DataGrid复制的数据格式: – HTML Format (native) – Csv (native) – Text (native) – UnicodeText (native) – System.String […]

以excel粘贴友好的格式将列表框中的项目添加到剪贴板中

目标:使用VBA(excel)以excel友好格式填充表格(从列表框)到剪贴板,这样我就可以粘贴(ctrl + V)到excel中,并将值分割成正确的列和行他们在原来的列表框中。 问题:我似乎无法得到正确的格式。 当我把我的剪贴板的内容粘贴到Excel中时,每一行都包含在一个单元格(第一列)中,用“,”(这是我试图用作“分隔符”的一种方式) – 不知道这是否正确或不?) 我正在使用API​​解决方法填充剪贴板,我不想用代码阻止你死亡,但这里是最重要的位(我总是感觉 – 问我是否需要看更多的代码)。 Private Sub btnCopyTable_Click() Dim I As Long Dim J As Long Dim tmp As String Dim arrItems() As String Dim clipboard As DataObject ReDim arrItems(0 To lbIPActions.ColumnCount – 1) For J = 0 To lbIPActions.ListCount – 1 For I = 0 To lbIPActions.ColumnCount – 1 […]