2014-04-07 5 views
-1

VBA에서 매크로를 사용하여 셀의 일부 문자열을 검색하고 txt 파일에 Excel 파일의 경로를 쓴 후 파일이 제대로 작동하지 않는 경우 txt 파일에 쓰기 및 검색 문자열. 내가 어떻게 할 수 있니?VBA를 사용하여 txt 파일을 작성하는 방법

감사합니다.

내 코드는 다음과 같습니다

Option Explicit 

Sub MACRO() 
    Dim ruta As String 
    Dim fi As Long 
    Dim pos As Integer 
    Dim Sht As Worksheet 
    Dim cell As Object 

    fi = FreeFile 
    ruta = "C:\Users\PE0223\Desktop\Ficheros_Con_Links.txt" 
    Set Sht = ThisWorkbook.ActiveSheet 

    On Error GoTo Err 
    Open ruta For Output As #fi 
    On Error GoTo 0 
    'Application.DisplayAlerts = False 
    For Each cell In Sht.UsedRange.Cells 
     pos = InStr(cell.Formula, "C:\") 
     If pos <> 0 Then 
      Print #fi, ActiveWorkbook.Path & "\" & ThisWorkbook.Name 
     End If 
    Next 

    Close #fi 
    Exit Sub 

Err: 
    Close #fi 
End Sub 
+1

_vba_ 코드가 아닌 것 같습니다. 그것은 _vb.net_입니까? –

+0

"제대로 작동하지 않습니다"- 정확히 작동하지 않는 곳은 어디입니까? 뭐가 잘못 되었 니? 어떤 줄이 잘못 되었습니까? – Taosique

+0

죄송합니다, vba에서하려고하지만 vba에 대해별로 생각하지 않아 아마도 vb.net과 혼동합니다 –

답변

1

귀하의 코드는 vb.net 것 같다 내가 코드를 변경, 지금 VB_Name = "Buscar_String"

Sub MACRO() 
    Dim ruta As String = "C:\Ficheros_Con_Links.txt" 
    Dim fi As FileInfo = New FileInfo(ruta) 
    Dim sw As StreamWriter 
    Dim Sht As Worksheet 
    Application.DisplayAlerts = False 
    For Each cell in Sht.Cells 
     If strComp(cell, "T:\", 1) = 0 then 
      If File.Exists(ruta) = False Then 
       sw = File.CreateText(ruta) 
      End If 
     sw.WriteLine (ActiveWorkbook.Path & "\" & ThisWorkbook.Name) 
     sw.Flush() 
     sw.Close() 
     End If 
    Next 
End Sub 

속성 및 작업 , vba가 아닙니다. 경우

당신은 여기 코드는, VBA의 솔루션이 필요합니다 :

Option Explicit 

Sub MACRO() 
    Dim ruta As String 
    Dim fi As Long 
    Dim Sht As Worksheet 
    Dim cell As Object 

    fi = FreeFile 
    ruta = "D:\Ficheros_Con_Links.txt" 
    Set Sht = ThisWorkbook.ActiveSheet 

    On Error GoTo Err 
    Open ruta For Output As #fi 
    On Error GoTo 0 
    'Application.DisplayAlerts = False 
    For Each cell In Sht.UsedRange.Cells 
     If StrComp(cell, "T:\", 1) = 0 Then 
      Print #fi, ActiveWorkbook.Path & "\" & ThisWorkbook.Name 
     End If 
    Next 

    Close #fi 
    Exit Sub 

Err: 
    Close #fi 
End Sub 

업데이트 : 주석에서 설명하고있는 바와 같이

은 아래를 참조 코드를 변경 -가있는 경우에도이 텍스트를 찾아야한다 긴 문자열.

Sub MACRO() 
    Dim ruta As String 
    Dim fi As Long 
    Dim Sht As Worksheet 
    Dim cell As Range 

    fi = FreeFile 
    ruta = "D:\Ficheros_Con_Links.txt" 
    Set Sht = ThisWorkbook.ActiveSheet 

    On Error GoTo Err 
    Open ruta For Output As #fi 
    On Error GoTo 0 
    'Application.DisplayAlerts = False 
    For Each cell In Sht.UsedRange.Cells 
     If InStr(cell.Value, "T:\") > 0 Then 
      Print #fi, ActiveWorkbook.Path & "\" & ThisWorkbook.Name 
     End If 
    Next 

    Close #fi 
    Exit Sub 

Err: 
    Close #fi 
End Sub 
+0

감사합니다. 그래,이 코드가 필요하고, 내 코드를 비교하는 것이 아주 좋다.하지만 txt 파일에 무엇이든 쓰지 마라. 자, 오류가 무엇입니까? –

+0

셀 중 하나에 정확한 문자열 "T : \"가 있습니까? 아니면 "T : \ Subdir \ File.xls"와 같은 것일 수 있습니까? – Lukas2

+0

이 코드에서는 각각에 대해 입력하지 마십시오. 이유는 모르겠습니다. –

관련 문제