我知道這篇文章看起來與其他許多職位似乎非常相似。我已經學習了C++和C#,他們都只做足夠小的工作,並且我不能很好地理解VBA以使這個宏發生。從文本文件導入數據到主文件(改變目標目錄) - Excel
我剛剛下了100個需要導入到主文件的文件。我無法修改源文件,但主文件只需要選擇列。
這個宏的工作幾乎完美我只需要能夠爲每個正在使用的宏實例選擇新的文件路徑。我發現,似乎用這樣的事情很多職位:
以先製作一個文件路徑到一個變量,然後將它傳遞給ActiveSheet.QueryTables.Add命令。我可能只是錯過了一些東西,但是我所不瞭解的所有例子之間有很多變數。看起來vba的msdn頁面比用於C#的msdn頁面更不直觀。無論是我還是我根本無法理解他們沒有采取我需要的補救措施。
使用宏工具我做了下面的大部分代碼。大約一個小時的工作允許我用活動單元替換硬編碼單元。
Sub InputDataFromTextFile()
'
' InputDataFromTextFile Macro
'
' Keyboard Shortcut: Ctrl+t
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;E:\Dropbox\College 2016-2017\Research\Buffered Solutions\pH10\With PDADMAC\30.CSV" _
, Destination:=ActiveCell)
.Name = "30"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 1, 9)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
我將不勝感激任何和所有可能的幫助。無論如何,非常感謝你的時間。
你引用的例子看起來很簡單。如果還沒有,還應閱讀[Application.GetOpenFilename方法](https://msdn.microsoft.com/en-us/library/office/ff834966.aspx)上的MSDN文章。把它作爲一個單獨的宏寫下來,然後擺弄它,看看它是如何工作的。你遇到了什麼具體問題。 –
代碼引用輪胎,當我使用它時選擇一個打開的表格。我並不真的需要這個,因爲我寫的代碼只是在一個目標上打開一個文件。我只需要做到這一點,目標是由用戶選擇而不是硬編碼。我遇到的問題是,他用來將目標重定向到一個選定的「FileName」的變量被寫入很多代碼部分,以至於我無法確定如何才能讓出我需要的東西。我剛剛嘗試了大約一小時,並且昨晚大部分時間。 – hotmaildotcom1
這個問題解決了嗎?請注意:你可以回答你自己的問題。另外,你是否真的想爲每個剛好不到100個文件的對話框彈出文件選擇器?考慮循環一個目錄,用戶只需選擇一次文件夾選擇器。 – Parfait