Excel 将图纸内容从选定文件复制到当前文件
我需要打开“选择文件”对话框,然后将所选文件中的一张工作表(始终相同的名称、相同的位置)复制到当前Excel文件中的第二张工作表中 到目前为止,我可以选择并打开该文件。这就是它停止的地方。没有复制任何内容,我的剪贴板中也没有任何内容 我搜索并找到了一些不起作用的解决方案 代码如下:Excel 将图纸内容从选定文件复制到当前文件,excel,vba,Excel,Vba,我需要打开“选择文件”对话框,然后将所选文件中的一张工作表(始终相同的名称、相同的位置)复制到当前Excel文件中的第二张工作表中 到目前为止,我可以选择并打开该文件。这就是它停止的地方。没有复制任何内容,我的剪贴板中也没有任何内容 我搜索并找到了一些不起作用的解决方案 代码如下: Public Sub Import() Dim VarDateiPfad As Variant Dim Source As Workbook Dim FilterDestination As Workbook '
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
这是我修复问题之前的最后一个版本:
Public Sub Import()
Dim VarDateiPfad As String
Dim FilterSource As Workbook
Dim FilterDestination As Workbook
Set FilterDestination = ActiveWorkbook
'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
VarDateiPfad = Application.GetOpenFilename("Exceldateien,*.xls*", 1, "X")
Set FilterSource = Workbooks.Open(Filename:=VarDateiPfad, ReadOnly:=False)
FilterSource.Worksheets("X").UsedRange.Copy
FilterDestination.Worksheets("Import").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Source.Close
避免使用
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
避免使用
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
你就快到了
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
你就快到了
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
将留下评论,但没有足够的代表这样做,所以我会留下一个答复
FilterSource.Worksheets("X").UsedRange.Copy
FilterDestination.Worksheets("Import").Range("A1").PasteSpecial
您复制了一个选择范围,但没有告诉宏要粘贴到哪里,因此这似乎是问题所在会留下评论,但没有足够的代表这样做,因此我将留下回复
FilterSource.Worksheets("X").UsedRange.Copy
FilterDestination.Worksheets("Import").Range("A1").PasteSpecial
您已经复制了一个选择范围,但没有告诉宏要粘贴到哪里,因此这似乎是问题所在注意:使用
是一种不好的做法。激活,如果应用,则不需要它。另请参阅我的答案,以避免使用ActiveWorkbook
和.Activate
,后者更可靠、更快。此外,OP已经很好地使用了此工作簿。您完全正确。这是一项拙劣的技术,受到嘲笑。另一方面,它又快又实用,初学者更容易理解。干杯,但这种方式初学者学习做它是一个糟糕的方式。最好向初学者传授好方法,否则很难改变他们的行为。非常感谢你们两位,我添加了一篇关于当前戏剧状态的帖子^^^注:使用。激活是一种不好的做法,如果你申请,你不需要它。另请参阅我的答案,以避免使用ActiveWorkbook
和.Activate
,后者更可靠、更快。此外,OP已经很好地使用了此工作簿。您完全正确。这是一项拙劣的技术,受到嘲笑。另一方面,它又快又实用,初学者更容易理解。干杯,但这种方式初学者学习做它是一个糟糕的方式。最好向初学者传授好的方法,否则很难改变他们的行为。非常感谢你们,我添加了一篇关于当前戏剧状态的帖子^^@G.M添加了一个example@G.M增加了一个例子