精华内容
下载资源
问答
  • VBA 复制粘贴很多数据比较慢怎么办

    千次阅读 2020-08-26 23:59:35
    VBA复制几十万行太慢怎么办?怎么提升效率其实之前讲过啦~ 比如创建一个20万行*20列的数据,复制到另一张表,怎么样创建比较快呢? 要是想着循环20万次,每次都赋值一次到单元格,那可就太慢了,最好就是先循环...

    今天继续讲讲练习啦~

    这几天的内容实在有点水,主要是杂七杂八事比较多,耽误了蛮多时间,后面争取多找找资料,写点干货

    VBA复制几十万行太慢怎么办?怎么提升效率其实之前讲过啦~

    比如创建一个20万行*20列的数据,复制到另一张表,怎么样创建比较快呢?

    要是想着循环20万次,每次都赋值一次到单元格,那可就太慢了,最好就是先循环赋值给数组,再讲数组的值赋值给单元格,这样几秒钟就可以搞定咯~

    Sub myCreate()
    
        '在sheets(1)上随机生成20万*20列的数据(大概3-4秒完成)
        '基本思路是先将值赋值给数组,数组再直接赋值给range区域
        Dim myArray(1 To 200000, 1 To 20)
        Dim myRng As Range
        For i = 1 To 200000
            For j = 1 To 20
                myArray(i, j) = Rnd
            Next
        Next
        Set Rng = Sheets(1).Range(Cells(2, 1), Cells(200001, 20))
        Rng.Value = myArray
    End Sub
    
    Sub myPaste()
        '粘贴先设置个Variant,在复制过去(大概3-4秒完成)
        Dim x As Variant
        Dim myRng As Range
        Set myRng = Sheets(2).Range("a2")
        Set x = Sheets(1).Range("A2:T200001")
        x.Copy myRng
    End Sub

     

    展开全文
  • vba实现粘贴复制功能

    千次阅读 2021-02-06 22:22:00
    Sub 复制粘贴() '第1种 复制粘贴的方法--利用range的copy Range("C13:C21").Copy Range("F13") '第2种 Range("C13:C21").Copy Range("F13").Select ActiveSheet.Paste End Sub 学习了几天VBA,突然觉得啊,只有...

    vba实现粘贴复制功能

    Sub 复制粘贴()
    
    '第1种  复制粘贴的方法--利用range的copy
    Range("C13:C21").Copy Range("F13")
    
    '第2种  复制粘贴的方法--利用sheet的复制粘贴方法
    Range("C13:C21").Copy
    Range("F13").Select
    ActiveSheet.Paste
    End Sub

     

    学习了几天VBA,突然觉得啊,只有想不到的,没有做不到的。这话怎么讲呢?根据需求去学习很快,有些功能只有你想用的时候才最棒!


    展开全文
  • VBA学习之复制粘贴

    千次阅读 2019-09-30 23:30:05
    1 建立测试文件夹 每张表的内容如下: 在文件夹里建立5个相同内容的副本: 2 百度网上代码进行试用 ...Worksheets(Array("C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test.xlsx",x_ "C:\...

    2019/9/30

    1 建立测试文件夹

    每张表的内容如下:
    在这里插入图片描述
    在文件夹里建立5个相同内容的副本:

    在这里插入图片描述

    2 百度网上代码进行试用

    代码1(原代码链接):

    Sub MoveSheets()
     
    '在下面Array中列出所有需要复制的工作表的名称
    '换行符为:空格+_
    
    Worksheets(Array("C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test.xlsx",x_
      "C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test - 副本.xlsx", "C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test - 副本(2).xlsx",  _
      "C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test - 副本(3).xlsx", _
      "C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test - 副本(4).xlsx",  _
      "C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\test - 副本(5).xlsx")).Copy
     
    Set wbNew = ActiveWorkbook
     
    With wbNew
     
        ActiveWorkbook.SaveAs Filename:="C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\" & "合并.xlsx"
     
        .Close
     
    End With
     
    End Sub
    
    

    出现错误
    在这里插入图片描述
    时间:2019/10/5
    发现自己对上面代码中的工作表错理解为工作簿

    Sub MoveSheets()
     
    '在下面Array中列出所有需要复制的工作表的名称
    '换行符为:空格+_
    
    Worksheets(Array("Sheet1", "Sheet2")).Copy
     
    Set wbNew = ActiveWorkbook
     
    With wbNew
     
        ActiveWorkbook.SaveAs Filename:="C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\" & "合并.xlsx"
     
        .Close
     
    End With
     
    End Sub
    

    上面这段代码的实际作用:选择自己想要的sheet(工作表)复制粘贴到一个新的工作簿

    学习目标1

    将一个文件夹中的所有工作簿复制粘贴到一个新的工作簿中

    学习链接1
    学习链接2

    成功!!!
    重复上面步骤

    Public Sub 一键获取本文件夹工作表()
    
    Application.ScreenUpdating = False
    
    Dim f As String, i As Integer '定义变量
    
    Dim wb As Excel.Workbook  '定义工作簿,也就是最后合并的表格
    
    Dim sh, sh1 As Excel.Worksheet '定义工作表
    
    Set sh1 = ThisWorkbook.Worksheets("导入清单")  'sh1为导入清单sheet
    
    If Range("a65536").End(xlUp).Row > 1 Then 'A列最后一个有数据的单元所在的行数orA65535单元格向上,最后一个非空的单元格的行号
    
    sh1.Range("a2:b" & Range("a65536").End(xlUp).Row).Clear
    
    End If
    
    f = Dir(ThisWorkbook.Path & "\*xls*") '获取地址
    
    Do While f <> "" '地址不为空时执行,<>在VBA在是不等于的意思
    
    If f <> ThisWorkbook.Name Then
    
    Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)
    
    For i = 1 To Sheets.Count
    
    sh1.Range("a" & sh1.Range("a65536").End(xlUp).Row + 1) = wb.Name '导入清单sheet工作簿名称
    
    sh1.Range("b" & sh1.Range("b65536").End(xlUp).Row + 1) = Sheets(i).Name '导入清单sheet中工作表名称
    
    Next
    
        Worksheets.Copy Before:=Workbooks(ThisWorkbook.Name).Sheets(1)
    
        wb.Close True
    
        End If
    
        f = Dir
    
    Loop
    
    sh1.Select
    
    Application.ScreenUpdating = True
    
    MsgBox "已为您成功导入" & Sheets.Count - 1 & "张工作表" '提示框内容
    
    End Sub
    

    学习目标2

    将所有工作簿中的工作表复制粘贴到同一个sheet中
    学习链接3

    'VBA for merge excel files,.just support for Excel 2007
    'Excel 2003 need change the codes
    'Author:naiveloafer
    'Date:2012-04-29
    Sub naiveloafer()
    Dim fs, f, f1, fc, s, x, rowss, columnss
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("C:\Users\gui\Desktop\工作\VBA学习\数据\复制粘贴测试\") '复制对象的路径
    Set fc = f.Files
    x = 1
     
    For Each f1 In fc
     
    If Right(f1.Name, 4) = "xlsx" Then
    Workbooks.Open (f1.Path)
    rowss = Workbooks(f1.Name).Sheets(1).Range("A65536").End(xlUp).Row
    columnss = Workbooks(f1.Name).Sheets(1).Columns.Count
     
    Workbooks(f1.Name).Sheets(1).Range("A1:z" & CStr(rowss)).Copy
    Workbooks(1).Activate
    Workbooks(1).Sheets(1).Range("A" & CStr(x) & ":z" & CStr(x + rowss)).Select
    Workbooks(1).Sheets(1).Paste
    Application.CutCopyMode = False
     
    x = x + rowss
    Workbooks(f1.Name).Close savechanges:=False
    End If
     
    Next
     
    End Sub
    
    
    展开全文
  • VBA复制粘贴自动筛选后的内容

    万次阅读 2017-06-28 00:30:01
    VBA复制粘贴自动筛选后的内容: Sub sx() If Dir("D:\VBA\xx.xls") <> "" Then Workbooks.Open Filename:="D:\VBA\xx.xls" Else GoTo ERR End If Range("A1").Select With Selection

    VBA复制粘贴自动筛选后的内容:

    Sub sx()
        If Dir("D:\VBA\xx.xls") <> "" Then
            Workbooks.Open Filename:="D:\VBA\xx.xls"
        Else
            GoTo ERR
        End If
        Range("A1").Select
        With Selection
                      .AutoFilter Field:=1, Criteria1:=0
                      .SpecialCells(xlCellTypeVisible).Copy Sheets("Temp").Range("A1")
        End With
        
    ERR: MsgBox "发现非法数据存在,程序终止!", 16
    End Sub


    展开全文
  • VBA窗体中实现右键菜单功能, 主要是常用的复制粘贴、剪切的实现
  • 自动复制粘贴vba脚本 自动复制粘贴vba脚本 自动复制粘贴vba脚本 自动复制粘贴vba脚本
  • VBA复制粘贴效率问题

    2011-09-05 19:39:00
    其中关于复制粘贴这块,想随便唠叨几句。 由于需要的特殊性,我们需要对每个单元格进行拷贝粘贴,28天即28行,102个KPI即102列,在加上KPI的title,时间列和cluster列,共29行,104列 开始的时候使用Range.Copy 和...
  • 可完成以下项目: 1.支持EXCEL VBA处理批量粘贴动作 2.支持对象窗体运行 3.高效处理大批量文件粘贴工作
  • EXCEL vba 循环复制 粘贴 另存为 新的文件VBA代码 分别设置单元格内容 With Workbooks(ThisWorkbook.Name) Application.EnableEvents = False Application.ScreenUpdating = False Application.DisplayAlerts = ...
  • 本期主要讲讲单元格复制粘贴等操作。 一、复制粘贴固定区域的单元格 因为以下内容都是复制单个或者固定区域的单元格内容,就不多说了,备注上面都有说明。 Option Explicit Sub CopyRange() '复制单元格内容...
  • excel vba复制黏贴 Using VBA to program Excel isn't as popular as it once was. However, there are still plenty of programmers who prefer it when working with Excel. If you are one of those people, this...
  • Sub VBA小程序_遍历所有工作表_复制粘贴为数值() Dim sht As Worksheet For Each sht In Worksheets sht.Activate sht.Cells.Copy sht.Cells.PasteSpecial Paste:=xlPasteValues Cells(1, 1).Select Next ...
  • Copy + Paste大法,其实自己个录个宏就行的 Range("C18").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ...
  • VBA 拷贝并粘贴内容

    千次阅读 2020-08-25 23:32:31
    由于有点学习得比较仓促,很多内容运用得不熟练,现在开始呢对部分问题试着自己解决一下,今天先来个简单的,后面慢慢加大难度。... sheet1功能: ...(3)把sheet2的数据复制到sheet1的显示区域。 (4)把复.
  • vba中excel和word复制粘贴

    千次阅读 2016-05-07 13:16:50
    先上代码:  Application.ScreenUpdating = False '关闭屏幕刷新' ...这个东西搞了我一上午,好在解决了,至于什么原因,等以后对vba再熟悉了再补上。 如果有大神看见,帮我评论一下原因。
  • VBA - 粘贴为数值型

    千次阅读 2017-03-26 16:42:26
    Private Sub PasteValue() '粘贴为数值型 Application.ScreenUpdating = False '关闭屏幕刷新 '循环选择的可见区域 For Each r In Selection.SpecialCells(xlCellTypeVisible... ' 复制 -> 粘贴为数值型 r.Copy r.P
  • VBA,excel中选择特定内容复制粘贴

    万次阅读 2017-11-11 15:50:37
    粘贴到sheet2的A:A列最下面: Sheets( "sheet2" ). Select Range ( "A1" ). Select Selection . End (xlDown). Select Range ( "A" & Range ( "A1" ). End (xlDown). Row + 1 ). Select ...
  • 怎么用VBA实现以身份证号在文件夹中找到照片,复制到指定文件夹并重命名
  • VBA用Copy方法进行复制粘贴,往往会导致粘贴的数据没有了行高和列宽。那么,当我们要进行复制粘贴时,如何保证粘贴的数据保留原有的格式(包括行高列宽都不能变)。 笔者以一个模板设计为例进行说明。 模板表如图1 所...
  • 这个功能,可以让你自己用Excel做出一些小型的系统来。方便你根据自己的情况做出自动添加某数据行的效果。
  • 如下代码:将工作簿 测试(1)的第一个工作表的A1:T10000区域的数据,复制粘贴到工作簿 测试 的第一个工作表的A1:T10000区域 Sub GetData_2() Dim WB As Workbook, WB_1 As Workbook Set WB = Workbooks.Open("C...
  • 最重要的一点,原来复制单元格竟然可以用赋值语句来完成,简直是神操作啊。Option Explicit '1 单元格输入 Sub t1() Range("a1") = "a" &amp; "b" Range("b1")...
  • ' 复制本文档所有内容至一个新建的文档中 ' ' Selection.WholeStory Selection.Copy Documents.Add DocumentType:=wdNewBlankDocument Selection.PasteAndFormat (wdPasteDefault) End Sub ...
  • 心得(4):怎么利用VBA选定excel中的特定区域或者特定的点,并得到它的值 问题:1.如何选定excel中特定的点或者区域;2.如何按方向(自上而下,自左而右。) 解决: 选取特定的点: 结果如下: 除了上述的方式...
  • 复制指定目录下excel工作簿中同名工作表,该代码将在相同目录下创建汇总工作簿,各工作簿中同名工作表将被分别复制到汇总工作簿的不同表中(汇总工作簿中各工作表以分工作簿名命名)。 所有要汇总的工作簿在同一个...
  • '将“剪贴板”中的内容粘贴到工作表上。 '表达式.Paste(Destination, Link) '表达式 一个代表 Worksheet 对象的变量。 Sub 粘贴() Range("B1:B6").Copy Range("c9") '这一句等于下面两句,但下面两句也有...
  • 在输入法上,当输入法设为英文的时候,复制下来的东西考到记事本上,汉字就成了乱码,因为汉字是两个字符,英文是1个。... 希望出现此类问题的朋友注意,把输入法设为中文状态复制粘贴就不会出现乱码了。
  • VBA窗体右键复制粘贴功能实现

    千次阅读 2016-06-18 23:28:02
    VBA学的不精,为了自用,做了一个窗体,里面的文本框Textbox需要用到右键复制粘贴的功能。 在网上找了许多例子,有太多复杂的东西,没看懂,抄到自己的软件里的时候,总是报错。 后来我在网上找到了一个可以用的。...
  • '在下面Array中列出所有需要复制的工作表的名称 Worksheets(Array("工作表1", "工作表11", "工作表22", "工作表32")).Copy Set wbNew = ActiveWorkbook With wbNew  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,932
精华内容 1,172
关键字:

vba复制粘贴