excel通过宏|vba导出数据为sql及图片导出到文件夹

这几天结尾一个项目,项目最后客户要导入数据,一个70多M的excel,数据五千多条,主要容量是因为excel内每条数据对应一个图片,导致excel过大,并且导入系统也不太显示。摸索几天,想到一个这样的方法。
用excel的宏拼接导出sql语句。自动导出excel的图片到外部的一个文件夹,然后上传到服务器。

Function clearChar(no As String)
    no = Replace(no, Chr(10), "")
    no = Replace(no, Chr(13), "")
    no = Replace(no, " ", "")
    no = Replace(no, "'", "\'")
    clearChar = no
End Function

Sub saveSql()
      Dim objSht  As Object
      Dim i, strTemp
   Dim today As String
   today = Year(Date) & Month(Date) & Day(Date)
   
   Open ThisWorkbook.Path & "\sql.txt" For Output As #1 '导出数据存放位置,excel所在目录下
   Print #1, "insert into sb_shangbiao(catid,status,no,time1,sbstate,title,sbcat,thumb,description,sbshiyong,price,sbcat2)values"
   Dim sheet As Integer
    For sheet = 1 To Worksheets.Count
        Set objSht = Sheets(sheet)
        
        i = 3
        Do
           strTemp = clearChar(objSht.Cells(i, 2).Text)
           
           If (strTemp = "") Then Exit Do '如果没有某个字段,就跳过
           
           strTemp = "(14,99,'" & strTemp & "','" & clearChar(objSht.Cells(i, 3)) & "','" & clearChar(objSht.Cells(i, 4)) & "','" & clearChar(objSht.Cells(i, 5)) & "','" & clearChar(objSht.Cells(i, 6) ) & "','/uploadfile/logo" & today & "/" & clearChar(objSht.Cells(i, 2)) & ".jpg','" & clearChar(objSht.Cells(i, 8)) & "','" & clearChar(objSht.Cells(i, 9)) & "','" & clearChar(objSht.Cells(i, 10)) & "','" & clearChar(objSht.Cells(i, 11)) & "'),"
           Print #1, strTemp
           i = i + 1
        Loop
        
        Set objSht = Nothing
   Next
   Close #1
   MsgBox "数据导出完毕!", vbInformation
End Sub



Sub saveImg()
    Dim objSht  As Object
    Dim i As Integer, minHeight As Integer, sh As Shape
    Dim FileName As String
    Dim today As String
   today = Year(Date) & Month(Date) & Day(Date)
   Dim folder As String
    
    Open ThisWorkbook.Path & "\log.txt" For Output As #1
    
    minHeight = ActiveSheet.Cells(1, 1).Height + ActiveSheet.Cells(2, 1).Height
    folder = ThisWorkbook.Path & "\sblogo" & today
    On Error Resume Next
    MkDir folder
    Dim sheet As Integer
    For sheet = 38 To Worksheets.Count
        Set objSht = Sheets(sheet)
        For i = 1 To objSht.Shapes.Count
            
            Set shp = objSht.Shapes(i)
            
             strTemp = sheet & "-" & i & "-" & clearChar(objSht.Cells(shp.TopLeftCell.Row, 2)) & "-" & shp.Height & "-" & objSht.Name
            Print #1, strTemp
           If shp.Top > minHeight And shp.Height > 0 And shp.Width > 0 Then
               
               FileName = folder & "\" & clearChar(objSht.Cells(shp.TopLeftCell.Row, 2)) & ".jpg"
      
            Print #1, FileName
                shp.Copy
    
                With objSht.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart '如果报错是因为图片不合法,具体原因未知
                    .Paste
                    .Export FileName, "jpg" 
    
                    .Parent.Delete
    
                End With
           
            End If

    
        Next
     '  Sleep 500
  Next
  Close #1
  MsgBox "图片导出完毕!", vbInformation
End Sub```

以前用Excel2003做了些,在网上还有不少粉丝,因一些功能在Excel2010中无法使用,故重新整理,欢迎指正; 本Excel中的Excel2010中测试表现出色; 运行前,要保证EXCEL没有禁用。 Michael Ho QQ: 9900060 ----------------------- 本Excel有以下功能: 插入图片1 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.会自动复制Sheet2到新工作簿,并插入你所选文件夹中的全部JPG图片到B列,对应的图片名自动填到C列; 3.图片的大小会自动适应Sheet2的B3单元格,因此可以在点击执行前调整Sheet2的B3单元格的大小来控制插入图片的大小。 -------- 插入图片2 1.点击执行后,会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 2.会自动复制Sheet3到新工作簿,并插入你所选文件夹中的全部JPG图片制作图册,对应的图片名自动填到图片下方; -------- 插入图片3 如果用户自己的Excel文件中有一列是型号,该可以插入指定文件夹里以型号命名的JPG图片到另一列; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+I (或在你的文件中手动执行,然后选择本EXCEL文件中的InsertPic3); 4.然后会出现文件夹选择窗,请选择你JPG图片所在文件夹(选择“文件夹”而不是选择文件); 5.在弹出的对话框中指定型号在第几列,图片要插入到第几列,以及从哪一行开始; 6.图片的大小会自动适应你设定的第一行要插入图片的单元格,因此提前调整那个单元格的大小可以控制插入图片的大小。 ------------- 删除活动工作表中所有图片 Ctrl+d 删除活动工作表里所有的JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+d (或在你的文件中手动执行,然后选择本EXCEL文件中的DelPic); ------------- 导出活动工作表中被选中的一张JPG图片 Ctrl+e 导出活动工作表中被选中的一张JPG图片,(不一定是本工作簿中的工作表); 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.请选中一张要导出图片; 4.在你的文件中按Ctrl+e (或在你的文件中手动执行,然后选择本EXCEL文件中的OutputOnePic); 5.在弹出的对话框中指定图片要保存的名字; 1.不管图片Excel中是否被缩放过,导出图片是按图片的原始尺寸进行保存。 2.在桌面上会自动新建一个"OutputPic"的文件夹导出图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ------------- 导出活动工作表中所有JPG图片 Ctrl+f 导出活动工作表中所有JPG图片,并且图片名自动使用指定列中的图片名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+f (或在你的文件中手动执行,然后选择本EXCEL文件中的OutputAllPic); 4.在弹出的对话框中指定图片所在列,图片名所在的列; 1.不管图片Excel中是否被缩放过,导出图片是按图片的原始尺寸进行保存; 2.在桌面上会自动新建一个"OutputPic"的文件夹,所有导出图片将会存在那个文夹里; 3.如果文件夹中已有相同名字的文件,则后面导出的文件会自动加上(v1), (v2), (v3)... ---------------- 对指定文件夹中的JPG图片进行重命名 Ctrl+r 利用活动工作表中的所有图片的旧名与新名的对照,对指定文件夹中JPG图片进行重命名; 1.打开本Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3.在你的文件中按Ctrl+r (或在你的文件中手动执行,然后选择本EXCEL文件中的RenamePic); 4.在弹出的对话框中指定图片旧名所在列和图片新名所在的列; 1.可以结合插入图片,将所有图片的旧名输入到Excel中,再在另一列中填上新图片名,然后使用该。 2.如果顺利运行,会在原来那个文件夹下面新建一个叫“New”的子文件夹,所有重命好名的图片会自动放入子文件夹里; 3.如果文件夹中已有相同名字的文件,则后面的文件会覆盖原来的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值