簡體   English   中英

遍歷整個Excel文件

[英]Iterate over whole Excel File

我想遍歷整個Excel文件。

Sub Rechteck1_KlickenSieAuf()

Dim Zieldatei As String
Dim Line As Integer

'activate and protetct file
    ThisWorkbook.Worksheets(1).Activate
    ActiveWorkbook.Protect

    'Create desired file
    Zieldatei = Application.GetSaveAsFilename(FileFilter:="AVL (*.rtf), *.rtf", InitialFileName:="AVL.rtf")

    'Open desired file
    Open Zieldatei For Output As #1

     With ThisWorkbook.Worksheets(1)

      For Line = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row



           'Write Read-In Data into target data
            Print #1, Join(Application.Transpose(Application.Transpose(.Range(.Cells(Line, 1), .Cells(Line, .Columns.Count).End(xlToLeft)).Value)), "|")


        Next
         End With

    Close #1

    Exit Sub

此代碼引發消息:“不兼容的類型”。 我不知道為什么 我將不勝感激。

請嘗試以下操作,我認為它應該可以工作,在保護它之前無需激活工作表,因此我刪除了該行,將聲明從Integer更改為Long,最后將Exit Sub更改為End Sub:

Sub Rechteck1_KlickenSieAuf()
Dim Zieldatei As String
Dim Line As Long
'protect file
ThisWorkbook.Worksheets(1).Protect

'Create desired file
Zieldatei = Application.GetSaveAsFilename(FileFilter:="AVL (*.rtf), *.rtf", InitialFileName:="AVL.rtf")

'Open desired file
Open Zieldatei For Output As #1

    With ThisWorkbook.Worksheets(1)
        For Line = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            'Write Read-In Data into target data
            Print #1, Join(Application.Transpose(Application.Transpose(.Range(.Cells(Line, 1), .Cells(Line, .Columns.Count).End(xlToLeft)).Value)), "|")
        Next
    End With

Close #1

End Sub

更新:

您可以檢查下給定行中有多少列,而不要使用Or Error Resume Next,然后在轉到下一行之前檢查是否只有一行包含任何數據,如下所示:

Sub Rechteck1_KlickenSieAuf()
Dim Zieldatei As String
Dim Line As Long
Dim LineData As String
'protect file
ThisWorkbook.Worksheets(1).Protect

'Create desired file
Zieldatei = Application.GetSaveAsFilename(FileFilter:="AVL (*.rtf), *.rtf", InitialFileName:="AVL.rtf")

'Open desired file
Open Zieldatei For Output As #1

    With ThisWorkbook.Worksheets(1)
        For Line = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            'Write Read-In Data into target data
            LastCol = .Cells(Line, .Columns.Count).End(xlToLeft).Column
            If Not LastCol = 1 And Not .Cells(Line, 1).Value = "" Then
                LineData = Join(Application.Transpose(Application.Transpose(.Range(.Cells(Line, 1), .Cells(Line, .Columns.Count).End(xlToLeft)).Value)), "|")
                Print #1, LineData
            End If

        Next
    End With

Close #1

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM