您好,所以我完成了程序部分,该部分计算并导出带有结果的csv。 (最终约有1600个csv文件),每个文件只有1列,介于20到0行之间。我希望我的MS Access VBA程序将它们结合在一起成为一个更大的CSV。因此,相同的标头仅在新文件的顶部一次。
到目前为止,我拥有的程序似乎在尝试导入Reg的那部分掉了。文件号。
Dim db As DAO.Database
Set db = CurrentDb
MTH = Format(Date, "mmm")
UserInput = InputBox("Enter Country Code")
Dim strSourcePath As String
Dim strDestPath As String
Dim strFile As String
Dim strData As String
Dim x As Variant
Dim Cnt As Long
Dim r As Long
Dim c As Long
Dim wks As Excel.Worksheet
Application.Echo False
'Change the path to the source folder accordingly
strSourcePath = "Q:\CCNMACS\AWD" & CTRY
If Right(strSourcePath, 1) <> "\" Then strSourcePath = strSourcePath & "\"
'Change the path to the destination folder accordingly
strDestPath = "Q:\CCNMACS\AWDFIN"
If Right(strDestPath, 1) <> "\" Then strDestPath = strDestPath & "\"
strFile = Dir(strSourcePath & "*.csv")
Do While Len(strFile) > 0
Cnt = Cnt + 1
If Cnt = 1 Then
r = 1
Else
r = Cells(Rows.Count, "A").End(xlUp).Row + 1
End If
Open strSourcePath & strFile For Input As #1
If Cnt > 1 Then
Line Input #1, strData
End If
Do Until EOF(1)
Line Input #1, strData
x = Split(strData, ",")
For c = 0 To UBound(x)
wks.Cells(r, c + 1).Value = Trim(x(c)) 'Error is here: Run time error '91': Object variable or With Block variable not set
Next c
r = r + 1
Loop
Close #1
Name strSourcePath & strFile As strDestPath & strFile
strFile = Dir
Loop
Application.Echo True
If Cnt = 0 Then _
MsgBox "No CSV files were found...", vbExclamation
答案 0 :(得分:5)
您的问题并不完全确定您要尝试的操作,但是如果我理解正确,您只需要在彼此的末尾附加几个文件,即可使“一个大CSV” 。
如果是这样,那么有多种方法可以比使用VBA轻松得多。 .CSV
文件只是纯文本文件,每个字段用逗号分隔,文件扩展名为.CSV
。
我个人会使用Notepad++(我想它可以执行此操作;它可以执行其他所有操作),或者甚至更容易,我会使用Windows 命令提示符。
假设您有一个包含文件的文件夹:
File1.csv
File2.csv
File3.csv
...etc
打开Windows命令提示符。 (一种方法是使用 Windows键+ R ,然后键入cmd
并按Enter。)
使用cd
(与ChDir
相同)将目录更改为文件位置。
(例如,您可以使用cd c:\users\myFolder
,
然后按 Enter )
要将文件夹中的所有CSV
合并为一个,可以使用如下命令:
copy *.csv combinedfile.csv
就是这样!
已创建一个名为combinedfile.csv
的文件。您可以在Excel或文本编辑器(如记事本)中打开以对其进行仔细检查并在必要时进行手动调整。
很显然,可以使用多种方法来更改命令,例如,如果只希望以单词File
开头的文件,则可以使用:
copy file*.csv combinedFile.csv
答案 1 :(得分:0)
这应该做您想要的。
int Np( int mn, list<int>a, int c )
{
int size = a.size(), rst = 0, maxI = 0;
std::list<int>::iterator it;
while( size > c )
{
a.sort();
maxI += a.back();
a.pop_back();
rst = 0;
for( auto ele : a )
{
rst += ele;
cout << rst << endl;
}
if( (rst - maxI) == mn or (maxI - rst) == mn or (maxI + rst) == mn )
{
return mn;
}
size--;
}
return rst;
}
有关此主题的其他详细信息,请参见下面的链接。
https://anthonysmoak.com/2018/04/10/how-to-fix-an-import-specification-error-in-microsoft-access/
https://www.oakdome.com/programming/MSAccess_ExportSpecifications_TransferText_To_CSV.php