(VBA 2010)SaveAs文件名

时间:2016-06-22 19:15:09

标签: vba excel-vba excel

在扫描仪填写了三个单元格之后,我需要帮助来弄清楚如何让vba在桌面上的文件夹中创建和保存文件。想象一下杂货店扫描仪,它会扫描产品。从条形码中提取三条信息然后放在三个单独的单元格中说A1 B1 C1,如何让VBA看到这些信息复制它并将其粘贴到保存的文件中?这就是我到目前为止所做的:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Range("A1").Value = "" And Not Range("B1").Value = "" And Not Range("C1").Value = "" Then

        Dim workbookName As String
        workbookName = "DiePunch.csv"
        ActiveCell.Range("A1:C1").Select
        Selection.Copy
        Workbooks.Add
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = Fa
        ActiveWorkbook.SaveAs Filename:="u:\CSV\Diepunch.csv", FileFormat:=xlCSV, CreateBackup:=False
        ActiveWorkbook.Save
        ActiveWindow.Close (SaveChange = False)
    End If

End Sub

2 个答案:

答案 0 :(得分:0)

如果您可以发布您的代码,我会更有帮助。

使用单元格(行,列)获取单元格中的值。我记得在VBA中创建一个文件是使用Freefile和Open,Print#,Close语法完成的。

(这几乎是可用的代码,但不是100%)

Dim intHandle as Integer
intHandle = FreeFile()
Open "Filename.txt" for output as intHandle
Print #intHandle, Excel.Cells(Row,Column).Value
Close intHandle

答案 1 :(得分:0)

这将完成工作

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Range("A1").Value = "" And Not Range("B1").Value = "" And Not Range("C1").Value = "" Then

    Dim workbookName As String
    workbookName = "whatever.xls"

    ThisWorkbook.SaveAs "C:\" & workbookName

End If

End Sub

您需要决定如何命名文件。如果您只选择workbookName为任何内容,则文件名将以增量保存,例如

workbookName(1).xls
workbookName(2).xls

等。