我已经搜索了一段时间,发现了一些无法正常工作的解决方案。我希望你们能帮助我。 我需要一个可以打开“选择文件”对话框的Makro。从选定的文件中,一张工作表(总是相同的名称,总是相同的位置)需要被复制到当前excel文件的第二个工作表中。 到目前为止,“选择文件”功能非常有效,我可以选择正确的文件,然后将其打开。不幸的是,这就是停止的地方。我看到打开的文件,仅此而已。什么也没有复制,剪贴板也没有任何内容。
这里是到目前为止使用的代码:
Public Sub Import()
Dim VarDateiPfad As Variant
Dim Source As Workbook
Dim FilterDestination As Workbook
'You choose the starting Folder for the "Select File" Dialog
ChDrive ("X:\") 'hier Laufwerk angeben
ChDir ("X:\X....") ' hier exakten Pfad angeben
'Starts the dialog and saves the link to the file
VarDateiPfad = Application.GetOpenFilename("Exceldateien,*.xls*", 1)
Workbooks.Open Filename:=VarDateiPfad, ReadOnly:=False
'Here seems to be where the problems occur
ActiveWorkbook.Sheets("X").UsedRange.Copy
ThisWorkbook.Sheets("Import").PasteSpecial xlValues
ActiveWorkbook.Close
整体代码看起来是否正确?也许有更好的方法吗?请帮我。 最好的祝福 乔治
答案 0 :(得分:0)
避免使用ActiveWorkbook
。而是将打开的工作簿设置为变量:
Dim WbToImport As Workbook
Set WbToImport = Workbooks.Open(Filename:=VarDateiPfad, ReadOnly:=False)
然后使用该变量直接访问工作簿。
WbToImport.Worksheets("X").UsedRange.Copy
ThisWorkbook.Worksheets("Import").Range("A1").PasteSpecial xlPasteValues
WbToImport.Close
使用此技术可以更可靠地复制正确的工作簿,因为ActiveWorkbook
可以是当前处于活动状态的任何工作簿。但这不一定是您刚刚打开的工作簿。
示例:
Option Explicit
Public Sub Import()
Dim FilterDestination As Workbook
Set FilterDestination = ThisWorkbook
'Legt Standard Verzeichnis des "Datei öffnen" Dialogs fest.
ChDrive ("X") 'hier Laufwerk angeben
ChDir ("X") ' hier exakten Pfad angeben
'Startet "Import" Dialog und legt ausgewählte Datei in "VarDateiPfad" ab
Dim VarDateiPfad As String
VarDateiPfad = Application.GetOpenFilename("Exceldateien,*.xls*", 1, "X")
Dim FilterSource As Workbook
Set FilterSource = Workbooks.Open(Filename:=VarDateiPfad, ReadOnly:=False)
FilterSource.Worksheets("X").UsedRange.Copy
FilterDestination.Worksheets("Import").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
FilterSource.Close
答案 1 :(得分:0)
你快到了。
Public Sub Import()
Dim VarDateiPfad As Variant
Dim Source As Workbook
Dim FilterDestination As Workbook
Set Source = ActiveWorkbook
'You choose the starting Folder for the "Select File" Dialog
ChDrive ("X:\") 'hier Laufwerk angeben
ChDir ("X:\X....") ' hier exakten Pfad angeben
'Starts the dialog and saves the link to the file
VarDateiPfad = Application.GetOpenFilename("Exceldateien,*.xls*", 1)
Workbooks.Open Filename:=VarDateiPfad, ReadOnly:=False
'Here seems to be where the problems occur
Sheets("X").Cells.Copy
Source.Activate
Sheets("Import").Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
答案 2 :(得分:0)
会发表评论,但没有足够的代表这样做,所以我会发表评论
FilterSource.Worksheets("X").UsedRange.Copy
FilterDestination.Worksheets("Import").Range("A1").PasteSpecial
您已经复制了一个选择范围,但没有告诉宏粘贴位置,所以这似乎是一个问题