我对vba比较陌生。
我正在努力让这个代码发挥作用。
Sub EksportAsCSV_DK()
Const Delim As String = ";" 'afgrænser (delimiter)
Dim strFileName As String
Dim rngOmr As Range
Dim y As Long 'tæller
Dim x As Long 'tæller
Dim strTemp As String 'streng til de enkelte rækker
Dim lRows As Long 'antal rækker
Dim lCols As Long 'antal kolonner
Dim lFno As Long 'fil nummer
Sheets("in").Select
Range("A1:Q24").Select
strFileName = Application.GetSaveAsFilename(fileFilter:="CSV-Fil(*.csv), *.csv")
Set rngOmr = Selection.CurrentRegion
lFno = FreeFile
lRows = rngOmr.Rows.Count
lCols = rngOmr.Columns.Count
Open strFileName For Output As #lFno
For x = 1 To lRows
strTemp = ""
For y = 1 To lCols
strTemp = strTemp & rngOmr(x, y).Text
If y < lCols Then
strTemp = strTemp & Delim
Else
Print #lFno, strTemp
End If
Next
Next
Close #lFno
Sheets("User page").Select
End Sub
主要问题是,从A1到Q17的机器软件被锁定。第2行是空白的,也许正因为如此,它忽略了从第2行到第24行的任何内容,这是我需要的最大值。
我还想要名为";在";在保存的CSV文件中。
由于行为空,用于lRows的计数返回1而不是24,这是正确的。假设您通过声明A来固定范围:Q24lRows不需要是动态的,它应该始终是24,所以您可以将其更改为lRows=24。或者,如果代码中的范围稍后将更改为动态范围,则可以使用不同的方法来查找最后一个行号。如果我的数据有缺口(假设我在A列(,我通常使用:
Range("A1048576").select
Selection.End(xlUp).Select
lRows = ActiveCell.Row
另一种选择是使用specialcells(最后一个单元格(,我通常会记录这样的内容,然后编辑它
保存为csv文件:
ActiveWorkbook.SaveAs Filename:="C:UsersstuarDocumentsin.csv", _
FileFormat:=xlCSV, CreateBackup:=False`
`