2014-05-20 63 views
0

我想通过vb.net打开一个excel文件并删除选定工作表的所有换行符。我试图做的是:从vb.net删除Excel工作表中的行分隔符

Imports Microsoft.Office.Interop 
Imports Microsoft.Office.Interop.Excel 

Public Class MyExcel 
    Private _xlsheetRelevant As Excel.Worksheet 
    Private _xlApp As Excel.Application 
    Private _xlworkbook As Excel.Workbook 
    Public Shared _shxlworkbook As Excel.Workbook 

Public Sub New() 
    Try 
     _xlApp = CType(GetObject(, "Excel.Application"), Excel.Application) 
    Catch e As Exception 
     _xlApp = CType(CreateObject("Excel.Application"), Excel.Application) 
    End Try 
    _xlApp.Visible = True 
End Sub 

Public Sub OpenFile(ByVal FilenameL As String) 
    _xlApp.Workbooks.Open(FilenameL, ReadOnly:=False) 
    _xlworkbook = DirectCast(_xlApp.ActiveWorkbook, Excel.Workbook) 
    _shxlworkbook = _xlworkbook 
    _xlApp.Calculation = XlCalculation.xlCalculationManual 
End Sub 

Public Sub RemoveLinebreaks() 
    _xlsheetRelevant = DirectCast(_xlworkbook.Worksheets("Tabelle1"), Excel.Worksheet) 
    _xlsheetRelevant.Cells.Replace(What:=Chr(10), Replacement:="", LookAt:=2, SearchOrder:=1, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False) 
    End Sub 
End Class 

Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim ExcelV As New MyExcel 
     ExcelV.OpenFile("C:\Users\xxx\Desktop\Mappe1.xlsx") 
     ExcelV.RemoveLinebreaks() 
    End Sub 
End Class 

我总是得到以下信息:

Microsoft Excel中找不到任何数据来代替。检查您的搜索 格式和标准是否正确定义。如果您确定此工作簿中存在匹配数据,则可能位于受保护的工作表上。 Excel无法替换受保护的工作表上的数据。

任何想法,我做错了什么?

回答

2

由我自己找到了解决办法:

_xlsheetRelevant.Cells.WrapText = False 

而不是

_xlsheetRelevant.Cells.Replace(What:=Chr(10), Replacement:="", LookAt:=2, SearchOrder:=1, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False) 
+0

这意味着您的字符串中不存在换行符。你正在做的是去除自动换行。 – pmartin

+0

哦,好的。但让我们说,我用Alt + Enter(这是一个Chr(10))创建一个换行符,并且我运行上面的代码,不再有换行符。不是那个意思,那个wraptext也删除了Chr(10)。顺便说一句。替换chr(10)对我来说都是有用的。只有什么:= imputvalue贯穿是“”“&Chr(10)&”“”Chr(10)被Replacement-Value取代,但仍然有一个换行。 – ruedi

0

默认情况下,Excel将尝试继续更换整串的,你的情况,你 需要更换只是一些字符:

_xlsheetActive.Cells.Replace(What:=Chr(10), Replacement:="", LookAt:=2, SearchOrder:=1, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False) 
+0

嗨pmartin!它仍然没有工作。我编辑了我的帖子并提供了所有的代码。应该使用from和标准按钮。如果你能给我任何提示的话,那将是非常有趣的。 – ruedi