EXCEL能不能在不開啟檔案的情況下,拷貝裡面的內容?

時間 2022-01-01 16:54:28

1樓:江蘺

Sub資料彙總

()Dim

thisPath

AsString

DimwbName

AsString

Dimwb

AsObject

DimwbSheet

AsWorksheet

'把需要合併的工作簿放在乙個資料夾下面

thisPath

="檔案路徑"

DimlastRow

AsInteger

,lastCol

AsInteger

,lastCell

AsString

wbName

=Dir

(thisPath

&"*.csv"

)'獲取檔案資料,複製資料到總表

DoWhile

wbName

<>""Setwb=

GetObject

(thisPath

&wbName

)wbSheet=wb

.Worksheets(1

)With

wbSheet

'獲取當前工作簿活動單元格範圍

lastRow=.

Range

("A65536"

).End

(xlUp

).Row

lastCol=.

Range

("DD"

&lastRow

).End

(xlToLeft

).Column

lastCell=.

Range

("DD"

&lastRow

).End

(xlToLeft

).Address

'複製資料到總表

Range

("A"

&Range

("A1048576"

).End

(xlUp

).Row+1

).Resize

(lastRow-1

,lastCol

).Value=.

Range

("A2:"

&lastCell

).Value

EndWith

'關閉工作簿wb.

Close

False

wbName

=Dir

Loop

EndSub

使用getobject函式可以實現你想要的功能

2樓:吳棋仁

用ADO

Public

SubGetData

(SourceFile

AsVariant

,SourceSheet

AsString

,SourceRange

AsString

,TargetRange

AsRange

,Header

AsBoolean

,UseHeaderRow

AsBoolean

)' 30-Dec-2007, working in Excel 2000-2007

DimrsCon

AsObject

DimrsData

AsObject

DimszConnect

AsString

DimszSQL

AsString

DimlCount

AsLong

' Create the connection string.

IfHeader

=False

Then

IfVal(.

Version

)<12Then

szConnect

="Provider=Microsoft.Jet.OLEDB.4.0;"

&"Data Source="

&SourceFile

&";"

&"Extended Properties=""Excel 8.0;HDR=No"";"

Else

szConnect

="Provider=Microsoft.ACE.OLEDB.12.0;"

&"Data Source="

&SourceFile

&";"

&"Extended Properties=""Excel 12.0;HDR=No"";"

EndIf

Else

IfVal(.

Version

)<12Then

szConnect

="Provider=Microsoft.Jet.OLEDB.4.0;"

&"Data Source="

&SourceFile

&";"

&"Extended Properties=""Excel 8.0;HDR=Yes"";"

Else

szConnect

="Provider=Microsoft.ACE.OLEDB.12.0;"

&"Data Source="

&SourceFile

&";"

&"Extended Properties=""Excel 12.0;HDR=Yes"";"

EndIf

EndIf

IfSourceSheet=""

Then

' workbook level name

szSQL

="SELECT * FROM "

&SourceRange$&

";"Else

' worksheet level name or range

szSQL

="SELECT * FROM ["

&SourceSheet$&

"$"&

SourceRange$&

"];"

EndIf

OnError

GoTo

SomethingWrong

SetrsCon

=CreateObject

("ADODB.Connection"

)Set

rsData

=CreateObject

("ADODB.Recordset"

)rsCon

.Open

szConnect

rsData

.Open

szSQL

,rsCon,0

,1,1

' Check to make sure we received data and copy the data

IfNot

rsData

.EOF

Then

IfHeader

=False

Then

TargetRange

.Cells(1

,1).CopyFromRecordset

rsData

Else

'Add the header cell in each column if the last argument is True

IfUseHeaderRow

Then

ForlCount=0

TorsData

.Fields

.Count-1

TargetRange

.Cells(1

,1+lCount

).Value

=rsData

.Fields

(lCount

).Name

Next

lCount

TargetRange

.Cells(2

,1).CopyFromRecordset

rsData

Else

TargetRange

.Cells(1

,1).CopyFromRecordset

rsData

EndIf

EndIf

Else

MsgBox

"No records returned from : "

&SourceFile

,vbCritical

EndIf

' Clean up our Recordset object.

rsData

.Close

SetrsData

=Nothing

rsCon

.Close

SetrsCon

=Nothing

Exit

SubSomethingWrong

:MsgBox

"The file name, Sheet name or Range is invalid of : "

&SourceFile

,vbExclamation

,"Error"

OnError

GoTo

0EndSub

3樓:JimYoung

新建乙個新的excel檔案,用VBA

首先遍歷資料夾下的所有excel檔案,然後直接通過vba填充公式,Excel公式可以不開啟檔案而直接獲取裡面的任意單元格的任意資訊。

這就是思路。

4樓:yunke

基本步驟思路:

1、將要呼叫的工作薄統一放在乙個資料夾裡,假設該資料夾名稱為「資料」

2、將彙總工作簿與「資料」資料夾放在同一目錄裡

3、將「資料」資料夾內的所有Excel檔案的檔名提取到彙總工作簿的A列(見Sub提取資料夾內檔名()

4、開始批量迴圈提取每乙個excel檔案指定資料(見Sub批量提取() 和 Sub 取值())

Sub提取資料夾內檔名

()Dim

myPath

Dimn

AsInteger

DimmyFile

AsString

myPath

=ThisWorkbook

.Path

&"\資料"

'把檔案路徑定義給變數n=

2myFile

=Dir

(myPath

&"\*.*")Do

While

myFile

<>""Cells(n

,1)=

myFile

'從A2開始存放檔名

myFile

=Dir

'找尋下乙個檔案n=

n+1Loop

EndSub

Sub批量提取

()'呼叫Sub 取值

'假設你每次都是從「2016」工作表的 "C2:I2" 區域中複製資料到彙總表

取值ThisWorkbook

.Path

&"\資料"

,"2016"

,"C2:I2"

EndSub

Sub取值(路徑

AsString

,工作表

AsString

,單元格

AsString

)Dim

rngAs

Range

Dimnfile

AsString

Dimi

AsInteger

Fori=2

To42

' 假設你的excel檔案的數量有41個,存放到A42了

nfile

=Cells(i

,1)Set

rng=

Cells(i

,3).Resize

(Range

(單元格

).Rows

.Count

,Range

(單元格

).Columns

.Count

)With

rng.

FormulaArray

="='"&路徑

&"\["

&nfile

&"]"

&工作表

&"'!"

&單元格

.Value=.

Value

EndWith

Next

iEndSub

Eminem能不能在電視上說nigger?

stan 不能,但是你可以去b站上看他2001年在洛杉磯和dr dre的那場演唱會,還有xzibit三個人唱的 bit ch please2,在副歌那塊唱嗨了,我清清楚楚的聽到他說這個詞了哈哈哈 副歌原本是nate dogg唱的,所以有這個詞 山德士的炸雞 他不會說出黑鬼這個詞,他的師傅Dr.Dre...

電腦能不能在真空環境下執行?

我看見映紅的天 材料學1.散熱不是大問題,水冷即可。我這裡的水冷是蒸發式,將液態水分批次排入真空。在真空,電腦的溫度會使之迅速沸騰,同時吸收大量熱。這類似於高原水的沸點會降低至90 2.最大的問題是非固態的又無包裹元件的沸騰,和固態元件的昇華。我猜電腦應該沒有裸露的液態元件 不是學電子工程的。但是可...

孩子能不能在家裡玩輪滑鞋?

盧公尺和大紳士 家裡的家具比較多,容易磕磕碰碰,如果一定要在家裡玩,注意準備出一塊盡量大的空地,最好要有可以扶著的地方。不然就還是穿好護具去室外玩吧。 深海 球王貝利小時候在胡同裡踢自製的足球。如果你孩子特別的痴迷輪滑,沒有條件去場地練習,且他會自己想辦法為自己創造條件的話,就睜乙隻眼閉乙隻眼吧,盡...