命令按钮中的VBA代码不存在';不要点击按钮
我不知道VBA,我这么做只是出于必要,所以请原谅我。我通常只做T-SQL 我在一篇帮助文章中找到了以下代码,用于从Excel工作表中获取数据并将其输出到txt文件中,该文件将用于运行Scribe。到目前为止命令按钮中的VBA代码不存在';不要点击按钮,vba,excel,Vba,Excel,我不知道VBA,我这么做只是出于必要,所以请原谅我。我通常只做T-SQL 我在一篇帮助文章中找到了以下代码,用于从Excel工作表中获取数据并将其输出到txt文件中,该文件将用于运行Scribe。到目前为止 我已将命令按钮放在工作表上 我已右键单击以查看代码 我将文章中的代码粘贴到VBA编辑器中,并根据自己的需要修改了部分代码(基本上是文件路径) 当我从编辑器中运行代码时,它的性能非常好 当我关闭编辑器并单击工作表上的按钮时,它会运行,但生成的文本文件只是文本文件中适当数量的空字符串。就像它可以
Sub CommandButton1_Click()
Dim FilePath As String
Dim rng As Range
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Set rng = Worksheets("Discount Template").Range("B3")
FilePath = "\\SERVER2012\IT Dept\AccessSupplyChain\Product Discount Uploads\" & rng.Value & "_" & Format(Now(), "yyyymmdd hhmmss") & ".txt"
Open FilePath For Output As #2
For i = 1 To LastRow
For j = 1 To LastCol
If j = LastCol Then
CellData = CellData + Trim(ActiveCell(i, j).Value)
Else
CellData = CellData + Trim(ActiveCell(i, j).Value) + ","
End If
Next j
Print #2, CellData
CellData = ""
Next i
Close #2
MsgBox ("Done")
End Sub
要获取您正在使用的单元格的值,请使用
ActiveCell(i,j).value
,但在您的代码中,我找不到您正在更新ActiveCell
因此,您反复使用同一个单元格
相反,你应该写:工作表(“youeSheetName”).Cell(i,j).Value
此外,您还应将用于获取LastRow
和LastCol
的ActiveSheet
更改为工作表(“youeSheetName”)
希望我能提供帮助。获取您正在使用的
ActiveCell(I,j)单元格的值。值
但在您的代码中,我找不到您正在更新ActiveCell
因此,您反复使用同一个单元格
相反,你应该写:工作表(“youeSheetName”).Cell(i,j).Value
此外,您还应将用于获取LastRow
和LastCol
的ActiveSheet
更改为工作表(“youeSheetName”)
希望我能帮上忙。问题是如何使用
ActiveCell
,它不必是A1 cell
因此,您希望使用单元格(i,j)
更改ActiveCell(i,j)
但我也建议您对代码进行以下重构:
Option Explicit
Private Sub CommandButton1_Click()
Dim FilePath As String
Dim rng As Range
Dim iRow As Long
Set rng = Worksheets("Discount Template").Range("B3")
FilePath = "\\SERVER2012\IT Dept\AccessSupplyChain\Product Discount Uploads\" & rng.Value & "_" & Format(Now(), "yyyymmdd hhmmss") & ".txt"
Open FilePath For Output As #2
With UsedRange '<--| reference active sheet used range
For iRow = 1 To .Rows.Count '<--| loop through its rows
Print #2, Join(Application.Transpose(Application.Transpose(.Rows(iRow))), ",") '<--| print the whole current row in one shot
Next
End With
Close #2
MsgBox ("Done")
End Sub
选项显式
私有子命令按钮1_单击()
将文件路径设置为字符串
变暗rng As范围
暗淡无光
设置rng=工作表(“折扣模板”)。范围(“B3”)
FilePath=“\\SERVER2012\IT Dept\AccessSupplyChain\Product Discount Uploads\”&rng.Value&“\uux”和Format(Now(),“yyyyymmdd hhmmss”)和“.txt”
打开输出为#2的文件路径
使用UsedRange'时,问题是如何使用ActiveCell
,它不必是A1单元
因此,您希望使用单元格(i,j)
更改ActiveCell(i,j)
但我也建议您对代码进行以下重构:
Option Explicit
Private Sub CommandButton1_Click()
Dim FilePath As String
Dim rng As Range
Dim iRow As Long
Set rng = Worksheets("Discount Template").Range("B3")
FilePath = "\\SERVER2012\IT Dept\AccessSupplyChain\Product Discount Uploads\" & rng.Value & "_" & Format(Now(), "yyyymmdd hhmmss") & ".txt"
Open FilePath For Output As #2
With UsedRange '<--| reference active sheet used range
For iRow = 1 To .Rows.Count '<--| loop through its rows
Print #2, Join(Application.Transpose(Application.Transpose(.Rows(iRow))), ",") '<--| print the whole current row in one shot
Next
End With
Close #2
MsgBox ("Done")
End Sub
选项显式
私有子命令按钮1_单击()
将文件路径设置为字符串
变暗rng As范围
暗淡无光
设置rng=工作表(“折扣模板”)。范围(“B3”)
FilePath=“\\SERVER2012\IT Dept\AccessSupplyChain\Product Discount Uploads\”&rng.Value&“\uux”和Format(Now(),“yyyyymmdd hhmmss”)和“.txt”
打开输出为#2的文件路径
“使用UsedRange”时,您的按钮是否与数据位于同一页上?您的代码使用ActiveSheet
查找LastCol
等,但随后引用“折扣模板”
。如果按钮与数据不在同一张工作表上,它将无法使用此方法查看数据。在子命令button1\u Click()
中放置断点,查看是否调用了该按钮。代码设置rng=工作表(“折扣模板”)。范围(“B3”)
据我所知,该变量仅用于从第一张被称为“折扣模板”的表单中获取客户参考号。该变量随后不会用于脚本的任何其他部分,因为这是我从另一个解决方案中获取的。rng变量不是我提到的帮助文章的一部分。我已经注释了这行代码,并从文件路径中删除了它的用途,但这并没有改变任何东西。我在脚本的子命令按钮1\u Click()
点上切换了断点,这是最开始的?当我点击按钮时,它会跳入编辑器,顶部的代码行会突出显示。根据向下投票的定义,如果这样做的用户能够解释自己,我将不胜感激。如果我根本不使用VBA,也不能正确理解它,但通过解释我的步骤和显示所有代码来寻求帮助,那么您还需要什么?如果你不能理解我的要求,我认为你不理解某人不理解他们正在使用的代码的概念。你的按钮和数据在同一张表上吗?您的代码使用ActiveSheet
查找LastCol
等,但随后引用“折扣模板”
。如果按钮与数据不在同一张工作表上,它将无法使用此方法查看数据。在子命令button1\u Click()
中放置断点,查看是否调用了该按钮。代码设置rng=工作表(“折扣模板”)。范围(“B3”)
据我所知,该变量仅用于从第一张被称为“折扣模板”的表单中获取客户参考号。该变量随后不会用于脚本的任何其他部分,因为这是我从另一个解决方案中获取的。rng变量不是我提到的帮助文章的一部分。我已经注释了这行代码,并从文件路径中删除了它的用途,但这并没有改变任何东西。我在脚本的子命令按钮1\u Click()
点上切换了断点,这是最开始的?当我点击按钮时,它会跳入编辑器,顶部的代码行会高亮显示