![](/img/trans.png)
[英]Copy data from several workbooks with greek \ unicode caracters in one workbook
[英]How to copy, transposing and consolidate data from several workbooks to the original active workbook?
我是新手,開始在 VBA 中邁出第一步。 我想創建一個宏來打開 CSV 文件並要求從第一個文件中選擇一個范圍(我需要 select 一個列向量,並且該范圍將與宏相同),從該列向量中提取數據並將其粘貼為原始活動工作簿中的行向量(轉置數據)。 我已經嘗試了很多東西,但我認為我缺少一些知識。 我想也許我需要在數組中創建一個數組,因為A(i)
有多個元素,它本身就是一個數組。 這是我寫的:
Option Explicit
Option Base 1
Sub x()
Dim FileNames() As Variant, nw As Integer
Dim i As Integer, A() As Variant
Dim tWB As Workbook, aWB As Workbook
Set tWB = ThisWorkbook
Dim UserRange As Range
FileNames = Application.GetOpenFilename("CSV Files (*.csv*),*.csv*", , , , True)
nw = UBound(FileNames)
Application.ScreenUpdating = False
ReDim A(nw) As Variant
Set UserRange = Application.InputBox("Select range", "Range Selection", , , , , , 8)
For i = 1 To nw
Workbooks.Open FileNames(i)
Set aWB = ActiveWorkbook
A(i) = aWB.Sheets(1).Range("UserRange")
tWB.Activate
tWB.Sheets(1).Range.Cells(i, 1) = WorksheetFunction.Transpose(A)
aWB.Close SaveChanges:=False
Next i
End Sub
謝謝你,我真的很感謝你的幫助
您的項目分為 4 個部分,從技術上講,需要 4 個問題,我不會在這里回答,因為在這個論壇中,一個線程應該只處理一個問題。
Range
object 綁定到一個工作表。 您不能在每張工作表中指定“相同”范圍。 在調用 InputBox 時,您也沒有打開工作表。 可以為每張工作表指定相同的范圍地址,但不能從 InputBox 中獲取。 我懷疑您應該輸入一個列 ID(如“C”)或一個列號(如 3),或者最有可能的是一個列標題(如“APPL”),然后讓下一部分在每個打開的文件中查找該列。Application.ScreenUpdating = False
永遠不會看到打開的文件。 你不需要Activate
任何東西。 事實上,您不需要變量aWB
,因為您使用的是ActiveWorkbook
。 但考慮指定一個工作表。 你的循環很好,但還沒有完成。 讓它運行,調試。在關閉之前打印每個工作簿/工作表的名稱,以便您可以在需要時提出問題。Arr = UserRange.Value
(其中Arr
是 Variant - 不是A()
),然后tWB.Workheets(1).Cells(1, 1).Value = Application.Transpose(Arr)
。 這里沒有指定行。 您可能需要指定 A 列下的第一個空白單元格,這是第四個問題的主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.