到目前为止,我已经看过并找到了一些帮助,但我正在为我想要制作的Excel宏的每个逻辑而努力。
基本上我有4列数据。列A具有某些名称,列D具有TRUE或FALSE。
我想将一个宏连接到一个按钮,该按钮在以Col A内容命名的给定目录中创建一个新文本文件,但前提是该行中的Col D标记为“TRUE”。
例如,如果我有以下内容。
ColA =测试ColD = TRUE
ColA = Test2 ColD = FALSE
ColA = Test3 ColD = TRUE
我将得到2个文本文件,带有Test.txt和Test3.txt。
我知道我需要为每个循环查看a1-d的范围(无论数字是什么),然后当D = True时,我想要一个SaveAs吗?
这是我到目前为止的代码(是的,我知道这是非常不完整的,但这是我的逻辑在撞墙之前得到的)。
Dim fileName As String
Dim filePath As String
Dim curCell As Object
Dim hideRange As Range
filePath = "C:\ExcelTest\"
hideRange = Range("D1:D1048576")
fileName = *Content of Cell A from this Row*
For Each Row In Range("A1:D1048576")
IF curCell.value In Range hideRange = "TRUE"
Then curCell.SaveAs fileName & ".txt, xlTextWindows
任何帮助甚至指向正确的方向都会很棒。我搜索了一些例子,找不到任何与我想做的事情相符的事情。
答案 0 :(得分:1)
你非常接近,但你在那里循环了很多细胞。
以下是循环行的代码,它停在列中最后一个填充的单元格中。
Sub LoopRows()
dim sht as worksheet
set sht = Thisworkbook.Sheets("Name of Worksheet")
'loop from row 1 to the last row containing data
For i = 1 To sht.Range("A:A").End(xlDown).Row
'check the value in column 4 for this row (i)
If sht.Cells(i, 4).Text = "TRUE" Then
CreateFile sht.Cells(i, 1).Value
End If
Next i
End Sub
为了编写文件,为了简单起见,它将引用Microsoft脚本运行时并按如下方式执行:
Sub CreateFile(FileName As String)
Dim fso As New FileSystemObject
fso.CreateTextFile "c:\temp\" & FileName & ".txt", True
End Sub
修改强> 我无法理解你为什么没有创建文件,我的测试在Windows机器上运行正常。
请您单独在一个按钮中尝试以下代码,看看它是否打开了文本文件?
Dim fso As New FileSystemObject
fso.CreateTextFile "c:\temp\testfso.txt"
Shell "C:\WINDOWS\notepad.exe c:\temp\testfso.txt", vbMaximizedFocus
编辑2
试试这个,看它是否打开文本文件..
Sub CreateFile(FileName As String)
Dim fso As New FileSystemObject
Dim fName as String
fName = "c:\temp\" & FileName & ".txt"
fso.CreateTextFile fName, True
Shell "C:\WINDOWS\notepad.exe " & fName, vbMaximizedFocus
End Sub
答案 1 :(得分:0)
您正在寻找的是这样的:
Sub test()
Dim filePath As String
filePath = "C:\ExcelTest\"
Dim xRow As Variant
For Each xRow In Range("A1:D100").Rows
If xRow(1, 4).Value = "TRUE" Then
Open filePath & xRow(1, 1) & ".txt" For Output As #1
Write #1, xRow(1, 2), xRow(1, 3)
Close #1
End If
Next
End Sub
虽然它没有错误,但我现在不会使用它 如果您有任何疑问,请询问。
修改强>
我已经运行了一些测试并注意到Windows阻止我在特定文件夹中创建文件...请尝试将其作为新子并运行它:
Sub testForText()
Open Environ("AppData") & "\Testing.txt" For Output As #1
Write #1, "dada"
Close #1
Shell "notepad.exe " & Environ("AppData") & "\Testing.txt", vbNormalFocus
End Sub
然后告诉我记事本是否打开" Testing.txt"