首页 > 解决方案 > Csv 文件创建,如 unicodetext、endig .csv。VBA 无法打开、保存和关闭更改

问题描述

这是我在这里的第一个问题。我总是在谷歌上找到答案。但现在我迷路了。
我一直在尝试创建一个 CSV 文件。一切都很好,但后来我在出口中发现了一些西里尔字母。我用以下代码解决了这个问题:

Set shtToExport = ThisWorkbook.Worksheets("Text")  'Sheet to export as CSV
Set wbkExport = Application.Workbooks.Add
shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
Application.DisplayAlerts = False                  'Possibly overwrite without asking
wbkExport.SaveAs Filename:="C:\Users\" & Environ("username") & "\Desktop\AP Import.csv", FileFormat:=xlUnicodeText 

将文件另存为 Unicode 文本。这解决了我的西里尔字母问题,问号消失了。
在我尝试上传此文件之前,我很高兴。没啥事儿。
然后我打开 CSV 文件,关闭 Excel 后要求我保存,所以我做了,然后 MSG 框“如果您将其保存为 Unicode,您的工作簿中的某些功能可能会丢失”我按下是并尝试再次上传文件。它工作得很好。
但我无法在代码中使用上述 msgbox 关闭并保存。我试过了:

workbooks(AP Import.csv).save 
Workbooks(AP Import.csv).close SaveChanges = True

我想要的是打开 AP import.csv,保存,按是到 msgbox “......你将它保存为 Unicode 文本”但我不能用宏来做到这一点。我成功地获得了“想要将您的更改保存到...”但不是 unicode msg 框。我正在使用 Excel 2013

这是完整的代码:

Sub Test()
    '
    ' Test Macro

    Application.ScreenUpdating = False

    If IsEmpty(ThisWorkbook.Sheets("data").Range("A1")) Then
        MsgBox ("Vlož data z WebGate exportu")
        Exit Sub
    End If

    Dim wbkExport As Workbook
    Dim shtToExport As Worksheet

    Columns("S:W").Select
    Selection.Copy
    Sheets("Temp").Select
    Range("A1").Select
    ActiveSheet.Paste

    Range("F1").Select
    Sheets("data").Select
    Columns("E:E").Select
    Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("E:E,I:I").Select
    Range("I1").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Temp").Select
    Range("F1").Select
    ActiveSheet.Paste
    Range("H1").Select
    Sheets("data").Select
    Columns("L:O").Select

    Range("L:O,X:X,Z:Z").Select
    Range("Z1").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Temp").Select
    Range("H1").Select
    ActiveSheet.Paste
    Range("A2").Select

    ActiveWindow.SmallScroll Down:=357
    Range("A2:G800").Select

    Application.CutCopyMode = False
    Selection.Copy
    Sheets("To update").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("H2").Select
    Sheets("Temp").Select
    Range("N2").Select

    ActiveWindow.SmallScroll Down:=354
    Range("N2:Q800").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("To update").Select
    Range("H2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select

    Set shtToExport = ThisWorkbook.Worksheets("Text")  'Sheet to export as CSV
    Set wbkExport = Application.Workbooks.Add
    shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
    Application.DisplayAlerts = False                  'Possibly overwrite without asking
    wbkExport.SaveAs Filename:="C:\Users\" & Environ("username") & "\Desktop\AP Import.csv", FileFormat:=xlUnicodeText ' " & Date & "

    Application.DisplayAlerts = True

    ThisWorkbook.Close savechanges:=False
End Sub

标签: excelvba

解决方案


保存后添加:

wbkExport.Close

推荐阅读