excel - 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
解决方案
保存后添加:
wbkExport.Close
推荐阅读
- spring-boot - 如何解决使用 Spring Boot 和 Hibernate 存储数据的问题?
- agents-jade - 为什么 Runtime.instance 总是给我错误
- arrays - python如何处理3D数组?
- spring-boot - Spring Security 5 似乎没有处理 OAuth2 访问令牌过期 - 要求用户再次登录
- php - PHP - 将新对象添加到每个对象数组
- python - AttributeError:“MeshPlotter”对象没有属性“tk”
- reactjs - 使用键时组件复制
- javascript - 如何在代码顶部定义公会以在其他功能中使用
- html - Html:BarbaJS 滑块过渡
- ubuntu - NGINX Ingress 创建 NodePort 而不是 LoadBalancer