2015-03-17 2 views
0

У меня на CSV-файле есть CSV-файл. Имя файла очень длинный и включает в себя специальные символы, такие как скобки и т.д .:VBA Импорт длинных имен файлов

[ABCD 012015] ACCT 1117 - Section A10 Grades-20150316_1937-comma_separated.csv 

где первые 36 символов имени файла являются константой. Остальная часть имени файла изменяется на каждый экземпляр загрузки. Я попытался VBA импортировать файл в Access с DoCmd.TransferText, и я получаю ошибки. Я обнаружил, что существует ограничение на длину имени файла, которое может обрабатывать DoCmd.TransfertText. Итак, мне нужно сначала переименовать файл вручную, затем я могу использовать VBA. Переименование файла относительно просто с VBA, но я хотел бы использовать информацию, указанную в исходном имени файла, такую ​​как раздел A10 (что сделало бы его уникальным, так как есть другие разделы с надписью A01, A02 и т. Д.) И переименовать. csv-файл как A10.csv, поэтому это означает поиск строки AND, заменяющей ее. Поскольку раздел может быть другим, как написать код и переименовать файл, а затем импортировать его с помощью VBA? Итак, пока у меня есть биты и куски, но не могу поставить их вместе:

Name OldPathName As NewPathName 

DoCmd.TransferText acImport, "AME_Grades", strTable, strPathFile, blnHasFieldNames 

Я использую спецификацию импорта AME_Grades, чтобы сделать его чище в таблице Access. Любые предложения? TIA

+0

Что вы пробовали до сих пор? Вы можете использовать команду FileCopy;) См.: Https://msdn.microsoft.com/en-us/library/2s1c774y%28v=vs.90%29.aspx –

+0

Я пробовал некоторые snipplets кода здесь и там, но ничего всесторонним. Вы предлагаете помощь. Спасибо. Но как это отличается от NAME OldPathName как NewPathName? – NGusCar

+0

Кроме того, я думаю, что мне больше нужен способ (метод), чтобы извлечь номер раздела из имени файла. Это поможет убедиться, что файл импортирован как уникальная таблица в Access с текстом DoCmd.Transfertext. – NGusCar

ответ

0

Я предлагаю использовать FileCopy function, прежде чем вы начнете импортировать данные из файла csv в MS Access.

Dim OldPathName As String, NewPathName As String 
OldPathName = "FullPathToVeryVeryLonLongLongFileName.csv" 
NewPathName = "FullPathToShortFileName.csv" 
FileCopy OldPathName, NewPathName 
DoCmd.TransferText acImport, "AME_Grades", strTable, NewPathName, blnHasFieldName 
+0

Спасибо! Я ценю этот код. Я попробовал и работал, но я также нашел нечто более сложное. – NGusCar

+0

Я пытаюсь опубликовать свой код, но это не так легко, как я думал. – NGusCar

Смежные вопросы