2014-05-20 91 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