个人操作使用记录

新手涉及到的教学或入门贴,推荐新手必看,版主维护
回复
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#451

帖子 TeliuTe » 2021-01-27 23:42

笔记本电脑内存换成4G,昨天又淘一个320G西数黑盘,安装了win7/Ubuntu20.04双系统,不拔网线还是慢的要命,安装界面里的几个skip貌似也没用,还是右上角关闭网络比较快,
iso里的文件名改了,两个引导文件都没有扩展名了,安装方式还是没有变,语言识别方面进步了,直接识别中文,可是重启后进入win7时间又差8个小时,多少年前的问题还没解决
--
4G内存奔腾双核跑20.04还是吃力,之前2G的时候跑14.04也是,搜了一下20.04的精简帖子很少,有空再折腾一下好了
85.0的Firefox不支持flashplayer了,84的版本提示依赖不满足,dpkg -i安装了再 -f install 本想着解决依赖,结果直接又升级到85了
--
下载75的版本安装上,语言包和手势都不支持,把flashpalyer下载解压到usr里
有个网云穿可以把家用电脑做成服务器,二级域名外网可访问,用来测试还是不错
--
找一个国内源下载老版本的Firefox: http://mirrors.163.com/ubuntu/pool/main/f/firefox/
firefox_75.0+build3-0ubuntu1_amd64.deb 07-Apr-2020 20:53 50M
顺便把语言包也下载下来: http://mirrors.163.com/ubuntu/pool/main ... _amd64.deb
firefox-locale-zh-hans_75.0+build3-0ubuntu1_amd..> 07-Apr-2020 20:53 501K
--
locale是本地化,zh是中文,hans是简体中文,hant是繁体中文
卸载系统自带的:sudo dpkg -P firefox-locale-zh-hans 再安装低版本的,安装好以后到右上角菜单、插件、语言里找
--
提示冲突就把冲突的检查拼写,hunspell-en-us卸载了
20.04的怎么还是x11,不是说换成w什么的了,搜狗的输入法状态栏也不能放到顶部,有点碍事,Fedora里貌似没这个问题

优化20.04
卸载tracker 卸载不用的内核 uname -a 查看当前内核,dpkg --get-selections | grep linux 查看安装的内核,找版本低的卸载了,不要看错了复制粘贴比较可靠,或者安装安装byobu,用sudo purge-old-kernels卸载旧内核,保留2个内核
附件
u20.04.png
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#452

帖子 TeliuTe » 2021-02-06 15:31

1、安装xampp,修改mysql的root密码后,phpmyadmin 不能登录,修改/opt/lampp/phpmyadmin/config.inc.php里的'config'改成'cookie'
2、用tar备份,还原的时候是绝对路径,还原完了再剪切就可以
3、启动xampp提示nestat没找着,安装net-tool
4、Ubuntu20.04里的搜索工具gnome-search-tool找不着,下载16.04里的,双击安装即可,貌似Ubuntu的文件搜索工具一直都不行,就这一个工具还用不了了,leafpad也没了,换一个mousepad;
5、discuzx换ip地址,更改/config/config_global.php 里的ip地址
6、登录dx,进后台管理,检查有没有原来的ip,“站长-UCenter设置”里面ip应该自动修改了,工具-更新缓存,然后进UCenter,如果是gbk会乱码,不用管乱码,输入正确密码和验证码登录,然后火狐按Alt+V编码换成utf8再换回简体中文,耐心等待即可,进应用里修改应用的ip地址为现在的即可,ucenter里也更新缓存,关闭浏览器,重启lampp服务,或关机重启服务器

--
把早先的uchome2.0翻出来还原回去,先把电脑IP地址改成网站的,不要用新ip访问,这样进去admin登录右上角设置、右上边高级管理,站点设置里把IP地址改一下,更新缓存,进左侧列表最下面的UCenter,进去把应用的IP地址改了,再去htdocs文件夹里把config.inc.php里的两处IP地址改了,更新缓存

升级到dx3.4发现有一些日志的图片不显示了,刷新下面的地址栏显示还是在访问之前的ip地址,进到phpmyadmin里打开discuzx数据库,按大小排列,找到最大的表就是日志的,在sql里执行替换命令,提前备份数据表
论坛里的图片不显示,找到论坛的表,也同样执行,在pma里用下面第二个查找替换应该更安全,比sql命令

代码: 全选

UPDATE `pre_home_blogfield` SET message=REPLACE(message,'10.0.5.250','10.0.6.101');
同样日志里的图片点击会出错,用pma里的搜索-查找和替换,%5C%22+target=%5C%22_blank 替换成空,点执行后,先预览,再次点击替换

代码: 全选

UPDATE `pre_home_blogfield` SET `message` = REPLACE(`message`, '%5C%22+target=%5C%22_blank', '') WHERE `message` LIKE '%%5C%22+target=%5C%22_blank%' COLLATE utf8mb4_bin
附件
update.png
头像
astolia
论坛版主
帖子: 6450
注册时间: 2008-09-18 13:11

Re: 个人操作使用记录

#453

帖子 astolia » 2021-02-06 20:11

TeliuTe 写了: 2021-01-27 23:42 可是重启后进入win7时间又差8个小时,多少年前的问题还没解决
不大可能解决的。一个时间戳,各自表述,谁都没有义务冒着搞坏向下兼容性的风险去迁就对方,只有让用户自己承担风险修改配置/注册表
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#454

帖子 TeliuTe » 2021-02-09 14:37

想把服务器里的discuzx升级到3.4,没有显示器用的ssh命令,需要把原来的config、data、uc_server、uc_client文件夹替换掉,
把upload文件夹打包,发现20.04里只有xz没有gz选项,把utility里的update.php复制到upload/install里,用命令行打包 tar -cvpzf upload.tar.gz ./upload/
用ftp传到服务器里,解压出来 tar -xvpzf ./upload.tar.gz -C ./

替换的时候mv出现问题,老是提示目录非空,mv ./upload/* ./htdocs/
试了 -i 、-f 选项还是提示非空,只好用cp命令, /bin/cp -avpf ./upload/* ./htdocs/
要是文件多的话,cp命令就很麻烦了,还是想用mv命令..

执行 teliute.org/install/update.php 按提示删除锁定文件,刷新,等待数据库更新完成
去https://www.dismall.com/thread-957-1-1.html里,下载更新文件 replacedismall.zip,解压放到根目录运行后,进后台应用插件,更新和启用插件

20.04硬盘灯长亮,iotop是jbd1-6太高,修改fstab重启无效,搜到论坛里卸载snapd解决,一个安装包管理工具
discuzx日志相册列表分页数在后台-全局-空间设置-分页数设置里修改

测试discuzx网站,发现一个网云穿的内网穿透,win/Ubuntu下都有客户端,win下的简单,安装好登录就可以用了
Ubuntu下载64位版本,属性里打勾运行权限,先要到网页控制台去设置:i.xiaomy.net/,配置一条免费隧道,名称填写一个支持中文,内网网址填本机固定ip或127.0.0.1,端口网页是80其他按自己的服务端填写,免费隧道1M带宽每个月要激活一次;
然后,打开终端,输入命令 ./wyc_linux_64 ,令牌到刚才的网页控制台里复制,过来粘贴即可,里面还有一个外网端口也要用,运行成功以后,输入二级域名:端口,就可以访问了;

想起来之前6元买过一个花生壳的二级域名,刚好也试一试,同样也有Ubuntu的客户端,下载安装安装完有一个SN码,复制,打开网页控制台:http://b.oray.com 用SN码登录,初始密码是admin,登录以后提示绑定账号,绑定之前申请的账号即可
进入控制台,第一个内网穿透,选择一个映射类型,貌似确定之后,类型就不能修改,网页选择http,外网域名选择之前的二级域名,输入内网网址,端口同上,点确定,就可以通过上面的二级域名来访问了,带宽也是1M,1G/月;
登录网址后,左边点“内网穿透”,右边上面是体验版内网穿透,下边有一个新增映射,点加号进入,默认的普通TCP,不使用模板,域名选择花生壳的二级域名,外网端口用默认的动态端口,内网主机输入自己电脑的ip地址,端口输入80,默认关闭加速,点确定,在Ubuntu里输入 sudo phddns start,即可通过外网访问这个电脑的服务器,输入phddns status可以查看这个客户端的sn,默认密码admin。
在网页浏览器中新增一条映射,在本地电脑上运行客户端
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#455

帖子 TeliuTe » 2021-02-11 16:01

Ubuntu16.04 局域网没问题,有时能上网有时又不能上网,把nm删除,ping自己,ping其他电脑都可用,就是ping不通网关
16.04还是在interfaces里设置,18.04是netplan,貌似有点跟不上了,
eth0也改成enp2s0,改ip改gw改dns改netmask,能试的都试了一遍,还是不行,可是重启一下又能用了,好奇怪。。
后面看有一个帖子说可能是路由上绑定的缘故,进去看了下没绑定,先绑定上,又点了点其他的
原来是在“家长控制”里设了时间段,好久之前设置的,时间长了就给忘记了,关闭,一切正常了

ssh
默认系统安装了客户端openssh-client,用 dpkg -l | grep ssh 查看已安装的程序
安装服务端:sudo apt-get install openssh-server
查看sshd服务状态:ps -e | grep ssh
ssh连接: ssh xx.xx.xx.xx 或者 ssh 用户名@xx.xx.xx.xx

ufw 防火墙
安装 gufw: sudo apt-get install gufw
状态:允许,相当于 sudo ufw enable ,查看状态:ufw status
默认规则:允许传出,拒绝传入,也就是允许访问别人,不允许别人访问自己
添加规则:允许别人访问自己的xampp网络服务器网站,sudo ufw allow http
添加规则:允许别人ssh连接自己的计算机,sudo ufw allow ssh
输入命令后,自动添加到规则当中,可以查看 sudo cat /etc/ufw/user.rules
附件
kz.png
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#456

帖子 TeliuTe » 2021-02-13 14:01

想着下载dx里的静态网页,wget试了试不大会用了,-r 只能下载网页文件,不能下载相应的图片: wget -c -np -r -x -l 2 -k -L -p http://10.0.5.101/blog-2-52232.html

又试了下kompozer,16.04里已经找不到,把之前下载的文件安装一下试试,deb突然不跟软件中心关联了,安装gdebi现在居然要几百兆的依赖,变化真大
试了下Ubuntu20.04里居然可以安装成功,左侧栏里没图标,需要的文件列表如下,KompoZer安装完左侧的收藏栏里不显示图标,貌似18.04就没有了,16.04里还有,不知何故:
语言包: http://kompozer.sourceforge.net/l10n/la ... zer-0.8b3/

代码: 全选

kompozer_0.8_b3.dfsg.1-0.1ubuntu1_amd64.deb
kompozer-0.8b3.zh-CN.xpi
kompozer-data_0.8_b3.dfsg.1-0.1ubuntu2_all.deb
libidl0_0.8.14-0.2ubuntu2_amd64.deb
libidl-common_0.8.14-0.2ubuntu2_all.deb
libpng12-0_1.2.46-3ubuntu4.2_amd64.deb
multiarch-support_2.27-3ubuntu1_amd64.deb
顺便到16.04里把leafpad下载下来,没什么依赖安装完就可以用,奇怪为什么18.04以后的源里就没有了

dpkg安装命令 sudo dpkg -i xxx.deb
dpkg卸载命令 sudo dpkg -P xx
修复破损依赖关系 sudo apt-get -f install
自动清理 sudo apt autoremove

格式工厂转换的时候,提示“[libx264 @ 000000000012e540] height not divisible by 2 ”,是高度必须是2的倍数,网查宽度必须是32的倍数,把视频大小改成480×350就可以转换了
附件
kz1.png
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#457

帖子 TeliuTe » 2021-02-14 22:01

尝试把dx校园网里的日志保存成网页,设想是伪静态然后wget下载,可是wget老是下载不了图片文件,还是用笨办法:复制 - 粘贴 - 保存的方法,好在不是很多
试了下用wps文字也可以保存成网页,又试了下 kompozer也可以,可以把复制的内容按原样粘贴,查看源代码还是有大量格式代码,文件大小20K左右,可以接受不想再去精简优化
还需要添加导航链接,页面信息等,sed的替换范例看不懂了,发现rpl要直观许多,20.04里的参数-x -R都没有了不知何故,把 man rpl 里的范例参考一下可以使用
用Fedora练习了一下: https://teliute.org/linux/Tefedora/index.html
最早有ms office的教程,后来学Ubuntu又做了ooo的教程一直想做wps的,放假把课程整理一下,只有文字和表格的,幻灯片后面看有没有什么契机或想法:
wps文字: https://teliute.org/mix/Tewps/index.html
wps表格: https://teliute.org/mix/TeEt/index.html

rpl 替换多行文本,find用于列出当前及子文件夹的html文件,作为rpl的参数
-de 保留原文件时间戳,使用转义字符,也就是\n将转换为换行,显示为两行文本
rpl [参数] '查找字符' '替换字符' (文件名)

代码: 全选

find ./ -name '*.html' | xargs rpl -de  '<title>' '\n<link rel="stylesheet" href="../css/css.css" type="text/css" />\n  <link rel="Shortcut  Icon" href="../css/qcqy.ico" /><title>'
rpl 似乎不能替换成空字符,也就是不能删除掉,可以替换成空格

代码: 全选

find ./ -name '*.html' | xargs rpl -de  'background-color: rgb(255, 255, 255);' ''
添加html描述

代码: 全选

find ./ -name '*.html' | xargs rpl -de  '</head>' '\n<meta name="description" content="TeliuTe系列教程之 Fedora 基础入门教程" />\n</head>'
mygit.sh 的脚本,先pull回来更新一下,多个电脑上可能进度不同,先同步一下,然后push上传本次代码

代码: 全选

#!/bin/bash
cd /home/teliute/mygit/
git pull teliute master
git add -A .
git commit -a -m "`date` $1"
转换当前文件夹及子文件夹的中文文件名为utf8编码

代码: 全选

 convmv -f gbk -t utf-8 -r --notest ./
cd 进入带空格文件名的文件夹,空格前面加个反斜杠

代码: 全选

cd program/Flash\ 8/
Ubuntu16.04使用自动清理命令后,sudo pm-hibernate 休眠命令也没了,重新安装一个包就可以了 sudo apt install pm-utils
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#458

帖子 TeliuTe » 2021-02-26 11:05

crontab -e 修改用户的计划任务,sudo gedit /etc/crontab 修改系统级
格式 分钟 小时 日期 月份 周 命令
取值 0~59 0~23 1~31 1~12 0~7 需要执行的命令

命令:crontab -e ,crontab 保存时会进行语法检查
格式如上,范例如下:
# m h dom mon dow command
00 10 * * 6-7 sudo shutdown -h 10:05
#周六、日早上10点关机,因为BIOS里自动开机是每天执行

00 20 * * * /opt/lampp/lampp stop
#每天20:00点停止XAMPP

02 20 * * * sudo shutdown -h 20:05
#每天20:02分执行关机命令,20:05分关机

20 09 * * 1-5 /opt/lampp/lampp start
#每天9:20开启XAMPP

30 09 * * 1-5 /opt/lampp/lampp start
#每天9:30重复开启XAMPP,防止第一次没启动成功

#奇怪,init 0 的关机命令不能执行,改成shutdown命令


服务重启
/etc/init.d/crond restart
service crond restart

putty 中文显示方框,在窗口左侧列表找到window - Appearnace ,里面的字体change 为新宋体,save一下
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#459

帖子 TeliuTe » 2021-02-28 13:59

华宇拼音自造词
1、从名单表格中复制姓名,粘贴到记事本,
2、从记事本复制,
3、拼音输入条,右键“辅助工具-批量造词”
4、粘贴到批量造词窗口中,
5、工具栏上点“生成/检查拼音”,提示词条有错误,点“否”,保留为注释
6、注释以分号;开头或井号#,找到后修改拼音,一般是多音字,比如“孙一朝”

代码: 全选

;孙一朝	sun'yi'chao|zhao	100000
7、去掉分号,留下正确的拼音,多音字的拼音删除

代码: 全选

孙一朝	sun'yi'zhao	100000
8、工具栏 - 导入至词库 - 用户词库
9、输入时,长句子至少要输入4个字母,brys:白日依山尽

gsmartcontrol 硬盘smart窗口界面工具,graphical user interface for smartctl,
teliute@TeliuTe:~$ sudo smartctl -A /dev/sda | grep "^193"
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 686

If the Load cycle count (which is in the last column) exceeds 1000, you're probably affected by the idle3 timer problem.
如果加载周期计数(位于最后一列中)超过1000,您可能受到idle3计时器问题的影响。
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#460

帖子 TeliuTe » 2021-03-04 22:12

挺奇怪的wps小册子打印PDF文档,已经显示双面打印,可是打的时候依然没有提示换页,而是一股脑把所有内容都单面打出来,只好先把小册子导出为PDF,然后再奇数页偶数页打印,在打印偶数页时,要勾上“逆序打印”,这样也可以实现,多了一步稍微麻烦一些,还有PDF导出的损耗,似乎都可以接受
PDF虚拟打印机doro老是记不住单词,越着急越想不起来,只好又拿U盘去拷贝过来

wps/word 文字转换表格在“插入 - 表格”面板里,把Excel里的日期粘贴到word表格里,先把日期复制到记事本,再把记事本复制到word,再用文字转表格,再复制表格 - 粘贴到word表格

淘了一条USB转sata硬盘数据线,2.0的接口慢一点也可以接受,服务器tar备份的6.8G文件,U盘拷贝老是丢失文件,ext4分区格式也不行,刚好试试数据线这个

Ubuntu20.04播放wmv、rmvb 安装一个:

代码: 全选

sudo apt install ubuntu-restricted-extras
下列【新】软件包将被安装:
  chromium-codecs-ffmpeg-extra gstreamer1.0-plugins-ugly gstreamer1.0-vaapi
  liba52-0.7.4 libaribb24-0 libavcodec-extra libavcodec-extra58 libmpeg2-4
  libopencore-amrnb0 libopencore-amrwb0 libsidplay1v5 libva-wayland2
  ubuntu-restricted-addons ubuntu-restricted-extras
Chrome 使用鼠标手势,crxMouse Chrome Gestures 可以添加手势,xp下安装直接拖放到扩展页面chrome://extensions/,还有一种解压缩加载的方式
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#461

帖子 TeliuTe » 2021-03-06 21:45

Python
1.一行写多句,用分号分隔,空行,print() 必须带括号:a=0; b=1; c=2; print(a,b,c); print()
2.一句写多行,括号可以回车换行到下一行接着写,函数里不能用,还可以用行尾反斜杠

代码: 全选

print("hello,\
word.")
3.双引号必须配对,括号必须配对,绿色是字符串,紫色是关键字,红色是注释#开头
4.语句块最后必须是冒号,回车换行缩进相同:

代码: 全选

for i in "abc":
    print(i)
5.列表用方括号,类似于数组,变量=列表是引用,修改变量会修改列表值,从变量名称上看不出是列表,print出来有方括号
字典定义用大括号,一对键值逗号分隔,取值用方括号,赋值用[键]=值,方法包括items() keys() value()
6.函数定义,注意最后的冒号: def 函数名():
7.变量定义时必须赋值,区分大小写,先申明后使用
8.程序先保存后运行,编辑器窗口、运行窗口shel
9.Ubuntu里的idle似乎没有中文语言包,在哪里翻译?貌似idle是python里带的,可能跟python一块翻译
--
1.读取文件需要导入os模块:import os 如果后面有as可以用别名来代替,貌似还有个不用加的
2.读取文件 变量=open(文件名,"r")打开,然后用close()方法关闭文件
3.读取文件为字符串,用 变量.read(),行读取用 变量.readlines()
--
1.调试可以在shell窗口点debug-debuger,进入后,打勾右边四项
2.编辑器窗口正常运行程序,此时debuger窗口暂停在第一行
3.点over运行一个模块或函数,step会进入函数内逐行运行
4.编辑器窗口反白显示即将运行的行
5.在编辑器窗口,一行里点右键,set断点或clear断点
6.在debuger窗口点go会正常运行,直到碰到断点暂停下来
7.debuger窗口下边有变量的值
==================================
vscode
1、WinXP好像不支持,下载n个版本,要么系统不支持,要么不是有效的win32有效程序
2、32位win7还可以,需要在硬盘上再安装一个32位win7也好
3、安装完以后,点左边中间最后一个图标,搜索Chinese安装中文扩展,搜索open 安装open in browser还有一个default,关闭重新打开
4、新建文件,保存类型选HTML,输入英文感叹号,选第一个,自动输入HTML头部文件
5、hello world,输入单词自动提示,按回车补全,

代码: 全选

   <script>
        document.write("hello world!")
    </script>
6、在HTML文件里点右键,选择“在浏览器中打开”或者“open in default browser”,快捷键Alt+B
=================================
JavaScript变量起名(xuanfengge.com)首字母小写,驼峰式命名,匈牙利命名
类型 变量命名前缀 举例
Array 数组 a aList,aGroup
Boolean 逻辑 b bChecked,bHasLogin
Function 函数 f fGetHtml,fInit
Integer 数字 n nPage,nTotal
Object 对象 o oButton,oDate
Regular Expression 正则 r rDomain,rEmail
String 字符 s sName,sHtml

$:表示Jquery对象
例如:$Content,$Module,一种比较广泛的Jquery对象变量命名规范。
fn:表示函数
例如:fnGetName,fnSetAge;
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#462

帖子 TeliuTe » 2021-08-01 21:54

2021第六届全国学生“学宪法讲宪法”宪法卫士活动学生手机微信操作指南: https://mp.weixin.qq.com/s/m_JDa3goEjn4zIsjBto_rQ
教育部青少年普法网: https://qspfw.moe.gov.cn
学生/教师登录: https://user.qspfw.moe.gov.cn/user/#/user/login
管理员/班主任登录: https://cloud.qspfw.moe.gov.cn/
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#463

帖子 TeliuTe » 2021-08-03 21:02

存几个宏文件,
1.是提取指定文件、指定单元格内容到新表

代码: 全选

Sub copyall()
Dim n% '定义变量,
'这种字符叫做类型声明字符,附加到变量名上,指出变量的数据类型。
'%是Integer
'&是Long
'$是String
'#是Double
n = 1
For i = 1 To 4 '把这个数字改成你的文件总数
    Set excel_Book = Workbooks.Open("E:\excel\00" & i & ".xlsx") '文件路径地址为E:盘,excel文件夹下的001-004.xlsx,上面for循环要4个文件
    'SET是定义一个有属性和方法的对象
    Set excel_Sheet = excel_Book.Worksheets("sheet1")'表的名称,一般是sheet1
    excel_Sheet.Range("b2:b7").Copy ThisWorkbook.Worksheets("Sheet1").Cells(1, n)'前面的range是要复制过来的内容多少
    n = n + 1'n是列号,复制一次,就到下一列继续复制
    excel_Book.Close False 'Close是保存后直接退出,True会弹出对话框问你是否保存,true表示退出时保存改变,那false就是相反的意思了,即退出时不保存。
Next
Set excel_Sheet = Nothing '赋为 Nothing 会释放该对象所关联的所有系统及内存资源
Set excel_Book = Nothing
End Sub
2.是工资条的,用宏录制出来的,需要手动点选单元格,然后再运行宏,每次把上面一行的内容复制,插入粘贴到当前位置

代码: 全选

Sub Macro3()
'
' Macro3 Macro
' 宏由 teliute.org 录制,时间: 2021-8-1

    ActiveCell.Offset(-2, 0).Range("A1:B1").Select
    'activecell 活动单元格,offset 偏移(行,列),range范围,select 选中
    '将活动单元格置于,上两行,同一列,范围是a1-b1,选中
    Selection.Copy '复制
    ActiveCell.Offset(2, 0).Range("A1").Select
    '将活动单元格重新置于刚才的位置,-2和2抵消
    Selection.Insert Shift:=xlDown '插入复制的单元格,下移
End Sub
3.是指定给宏按钮

代码: 全选

1.在开发工具面板右边,找到窗体工具组,点击按钮。旧版是在工具栏点右键,打勾“窗体”。
2.wps画完一个按钮,直接弹出“选择宏...”,指定一个即可,msoffice里在按钮上点右键,指定宏...
3.选择一个宏名称,空白处点击取消编辑状态,点击按钮,即可运行宏
4.按钮点右键,在编辑状态,可以修改按钮的名称、大小、移动位置这些
5.有些个人版的wps有问题,换另外版本或者企业版即可,比如wps10.1.0.5740+vba2019
4.打开/遍历指定文件夹下的所有文件dir函数

代码: 全选

Sub myDir()
    'Application.SendKeys "^g ^a {del}", True'清除立即窗口,但是后面的显示也会被清除,直接复制到立即窗口里运行
    Dim myFile As String, sf As String '文件名
    Dim count As Integer '序数词
    sf = vbCrLf'这是回车换行符,不是Ctrl,记录一下这个常量
    myFile = Dir("C:\xls\" & "*.xls") 'dir打开路径下的第一个文件,加文件名限制一下,xls包含xlsx,不加按系统默认
    
    count = count + 1       '记录文件的个数
    sf = sf & count & "、" & myFile'将文件名赋值给字符串保存一下
    Do While myFile <> "" '不为空的时候就是还有文件,继续读取
        myFile = Dir        '继续读入第二个文件,这时候Dir函数不用写路径
        If myFile = "" Then
            Exit Do         '为空读不到文件,就退出
        End If
        count = count + 1 '文件数+1
        sf = sf & vbCrLf & count & "、" & myFile '上一个文件名+回车符+序数+顿号+当前文件名
    Loop
    Debug.Print sf '显示到立即窗口
End Sub
5.打开多个文件,提取里面的指定单元格的内容(如,姓名、性别、联系方式),到当前表格中,姓名从文件名来提取

代码: 全选

Sub myDir1()
    Dim myFile As String, sf As String '文件名
    Dim count As Integer, m As Integer, n As Integer  '序数词,计数
    Dim excel_Book As Object, excel_Sheet As Object '工作簿和工作表对象
    
    m = 1: n = 1 '标记单元格坐标,用于cells里,第一个单元格A1
    
    myFile = Dir("C:\xls\" & "*.xls") 'dir打开路径下的第一个文件,加文件名限制一下,xls包含xlsx,不加按系统默认
    
    Set excel_Book = Workbooks.Open("C:\xls\" & myFile) '打开上面的文件,可惜只是文件名,没有路径
    Set excel_Sheet = excel_Book.Worksheets("样本") '表的名称,貌似也可以用数字索引,一般是sheet1
    
    'ThisWorkbook.Worksheets("Sheet1").Cells(m, n).Value = myFile
    'excel_Sheet.Range("b2:b7").Copy ThisWorkbook.Worksheets("Sheet1").Cells(m, n) '前面的range是要复制过来的内容多少
    
    'ThisWorkbook.Worksheets("sheet1").Cells(m, n).Value = Left(myFile, (Application.WorksheetFunction.Find(".", myFile) - 1))
    ThisWorkbook.Worksheets("sheet1").Cells(m, n).Value = Left(myFile, InStr(myFile, ".") - 1)
    'find 用于查找指定字符的位置,还可以用instr函数
    
    n = n + 1 '继续同一行下一列赋值,Range(cells(1,i),cells(1,j)).select
    excel_Sheet.Range("C3").Copy ThisWorkbook.Worksheets("Sheet1").Cells(m, n) '前面的range是要复制过来的内容多少
    '复制C3单元格的值过来,也就是性别,能否只复制值?
    
    n = n + 1 '继续同一行下一列的单元格,也就是联系方式
    excel_Sheet.Range("S38").Copy ThisWorkbook.Worksheets("Sheet1").Cells(m, n) '前面的range是要复制过来的内容多少
    
    m = m + 1 '该下一行了,获取姓名、性别、联系方式完毕
    '当前打开vba的工作簿里的sheet1工作表里的单元格(m,n)单元格赋值
    'm = m + 1: n = n + 1 'n是列号,复制一次,就到下一列继续复制
    
    excel_Book.Close False
    '关闭打开的文件,Close是保存后直接退出,True会弹出对话框问你是否保存
    
    Do While myFile = "" '不为空的时候就是还有文件
        myFile = Dir        '继续读入第二个文件,这时候不用写路径
        If myFile = "" Then
            Exit Do         '为空读不到文件,就退出
        End If
        '继续下一个表格的数据提取,写入到当前表格中。。。
        count = count + 1 '文件数+1
        sf = sf & vbCrLf & count & "、" & myFile '上一个文件名+回车符+序数+顿号+文件名
    Loop
    Debug.Print sf '显示到立即窗口
End Sub
6.批量抓取指定文件夹下的,所有工作簿中的指定表格的指定单元格的内容,按行储存到当前包含宏的工作簿中

代码: 全选

Option Explicit

Sub myDir1()
    Dim fso As Object, f As Object, ff As Object
    Dim m As Integer, n As Integer '单元格的坐标
    Dim excel_Book As Object, excel_Sheet As Object '工作簿和工作表对象
    
    m = 1: n = 1 '标记单元格坐标,用于cells里,第一个单元格A
    
    '设置获取文件夹里的文件名,貌似可以用打开对话框来获取路径
    Set fso = CreateObject("scripting.filesystemobject")
    Set ff = fso.getfolder("c:\xls\") '(ThisWorkbook.Path)
    
    For Each f In ff.Files 'f是完整路径的文件名,f.Name只是文件名,不含路径
        'Workbooks.Open f
        Set excel_Book = Workbooks.Open(f) 'C:\xls\xxx.xls
        Set excel_Sheet = excel_Book.Worksheets("样本") '表的名称,貌似也可以用数字索引,一般是sheet1
    
        ThisWorkbook.Worksheets("sheet1").Cells(m, n).Value = Left(f.Name, InStr(f.Name, ".") - 1)
        '取姓名,把文件名里的姓名取出来,然后赋值给当前文件的单元格里面,这里不用打开工作簿就能执行
        'ThisWorkbook是包含宏的工作簿,里的工作表
        
        n = n + 1 '继续同一行下一列赋值,Range(cells(1,i),cells(1,j)).select
        excel_Sheet.Range("C3").Copy ThisWorkbook.Worksheets("Sheet1").Cells(m, n) '前面的range是要复制过来的内容多少
        '取性别C3,复制C3单元格的值过来,也就是性别,能否只复制值?
        
        n = n + 1 '继续同一行下一列的单元格,取联系方式,所在的单元格S38
        excel_Sheet.Range("S38").Copy ThisWorkbook.Worksheets("Sheet1").Cells(m, n)
        '前面的range是要复制过来的内容多少
        
        excel_Book.Close False
        '关闭打开的文件,Close是保存后直接退出,True会弹出对话框问你是否保存
        
        m = m + 1: n = 1 '跳到下一行的第一个单元格
        
        'Debug.Print f'调试,输出到立即窗口
    Next
    
    Exit Sub
        
End Sub
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#464

帖子 TeliuTe » 2021-08-06 12:46

7.VBA批量导出工作表里的所有图片到指定文件夹,图片以它左边一格内容作为文件名

代码: 全选

'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '给sleep用的

Sub exportpic()
'宏存放到GenPhoto1.xls里,要处理的带图片的文件1.xlsx,放在相同文件夹下,xls文件不产生临时文件$同名
'图片文件里,第一列放文件名,图片放在第二列
'图片的左上角要跟左边的文件名单元格对齐,也就是要在同一行里
'因为要根据图片的位置,找它左边的单元格里的文件名

Set fso = CreateObject("scripting.filesystemobject")
Set ff = fso.getfolder(ThisWorkbook.Path) '当前文件夹下
Dim m As Integer, n As Integer'存放文件名所在的单元格坐标
Dim ShpW As Single, ShpH As Single
Dim LAR As Boolean

For Each f In ff.Files
    m = 1: n = 1 '保存的文件名(身份证号),存放在一个单元格里,这个单元格的行列
    If f = "" Then Exit For

    If f.Name <> "GenPhoto1.xls" Then '宏的这个文件不处理,用文件名排除
        Workbooks.Open f
    
        For Each p In ActiveSheet.Shapes
            Debug.Print p.Name & vbCrLf '调试,回车换行符,用本地窗口也可以查看
        
                '保存图片的高和宽
                ShpH = p.Height
                ShpW = p.Width
                
                ' 解锁宽高比,如果锁定
                If p.LockAspectRatio Then LAR = True: p.LockAspectRatio = msoFalse'冒号是两句,后一句是取消图片的“锁定纵横比”

                '恢复图片的原始大小100%
                  p.ScaleHeight 1, msoTrue
                  p.ScaleWidth 1, msoTrue
                

                ' 计算缩放比率,等导出图片了,还要再把原图片缩放回去,以免修改了表格
                ScaleH = ShpH / p.Height
                ScaleW = ShpW / p.Width

                ' Relock the aspect ratio if originally locked
                If LAR Then p.LockAspectRatio = msoFalse

                pname = Cells(CInt(Right(p.TopLeftCell.Address, 1)), n) & ".jpg"
                '图片所在的单元格,行数不超过9,右取1位数
                'Cint 字符串数字,转换为数值型整型数字
                'p.TopLeftCell 形状shape(就是p)的左上角所在的单元格地址$B$1($列$行)
                'n是列,表格标题是A、B、C...,这个地方有点绕,n
                'Cells(m,n),是指第m行,第n列,它用的纯数字坐标系,不是Range的(字母+数字)系
                
                p.CopyPicture '复制图片
                
                With ActiveSheet.ChartObjects.Add(0, 0, p.Width, p.Height).Chart
                '创建一个空图表对象
                    .ChartArea.Select
                    
                    .Paste
                    .Export ThisWorkbook.Path & "\Photo\" & pname, "JPG" '图片保存到.\photo文件夹下
                    .Parent.Delete
                End With
                
                '又回到了单元格原来的图片大小
                p.ScaleHeight ScaleH, msoTrue
                p.ScaleWidth ScaleW, msoTrue
                
                'Stop
                'Sleep 5000 '暂停5000毫秒,即5秒
          
        Next
        ActiveWorkbook.Close False '关闭打开的工作簿,不保存直接退出
    End If
Next
MsgBox "完成!!"
End Sub

头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 个人操作使用记录

#465

帖子 TeliuTe » 2021-08-14 9:09

吐槽:昨天看学生打*苗,信息录入还是手工往里面敲,从早上到下午大半天的时间耗着,开发这个软件的人就没有想到批量导入吗,打疫苗3分钟排队3小时,这是哪个星星开发的软件,大夏天的外面晒的要死,里面闷热闷热,又是农忙家长大老远的跑来,结果*苗来了小组还在上一个地方完成了才能过来。
----------------------------------------------------
第二针快许多,半个小时就搞定了,忘记要填表了,提前填好一张当样板就好许多,然后也没有提前拿名单,排好队这样的,忘记带几支笔了,然后填表的时候有点着急,记的在电子表格里有个邮件导出,可以把信息自动填写到域里面,这样学生签个字就可以了,有时间看一下,添加到Excel的课程里,那个域名快到期,如果不打折就买个新的吧。
回复