[已解决]如何将输入的字符串变成每个字符写一列输入Excel?
本帖最后由 study520x 于 2019-6-12 20:03 编辑学校导入选择题用的 比如说一大串标准答案ABCD
如何变成
A
B
C
D
竖排 每排就写一个字母 写入Excel?
现在一直用手工方法 好麻烦啊 求助各位大神 谢谢
1.查找? 替换^&+空格
说明:?为英文问号,一个问号代表一个汉字/英文字母,如输???则每3个字之间加空格
2.Ctrl+F3全部大写
3.粘贴到Excel
4.数据-分列-分隔符号
5.选中行复制,选择性粘贴,勾上转置
很简单,加个回车符就可以了
$x="a"
$y="b"
$s1=$x& @cr&$y
ClipPut($s1) Local $sSource = 'ABCD'
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
MsgBox(0, '替换结果', $sSRERe)
本帖最后由 study520x 于 2019-6-6 19:14 编辑
@afan @duxing谢谢2 3楼英语60道选择题 3楼的比较方便
然后我写好了 想弄个gui 可以在框里输入$sSource 按确定按钮然后可以执行下面的操作该怎么做 代码如下
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Form2", 406, 295, 207, 127)
$Input1 = GUICtrlCreateInput("Input1", 104, 72, 225, 21)
$Button1 = GUICtrlCreateButton("确定", 136, 168, 145, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
#include <MsgBoxConstants.au3>
Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = 'ABCD'
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit
在论坛东抄西抄 作品完成了 :face (13):求大神帮忙优化一下 那个输入框 每行十个字母就自动换行 最多六行 成品如下
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2_1 = GUICreate("标准答案导入辅助", 407, 296, 207, 127)
$Input1 = GUICtrlCreateInput("", 48, 32, 305, 128)
$Button1 = GUICtrlCreateButton("确定", 131, 187, 145, 65)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$r2=GUICtrlRead($Input1)
Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = $r2
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit
EndSwitch
WEnd
看论坛例子抄的最终版 还是不明白为什么这样能换行
#include <Excel.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <string.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("标准答案", 191, 241, 820, 716)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 195, 190, $ES_WANTRETURN)
GUICtrlSetFont(-1, 16, 400, 0, "微软雅黑")
$Button1 = GUICtrlCreateButton("标准答案", 0, 192, 192, 48)
GUICtrlSetFont(-1, 16, 400, 0, "微软雅黑")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$a = GUICtrlRead($Edit1)
$b = StringLen($a)
;For $i = 1 To Round($b / 30)
;If $i = 1 Then
; $a = _StringInsert($a, @CRLF, $i * 30)
; Else
;$a = _StringInsert($a, @CRLF, $i * 30 + ($i - 1))
;EndIf
; Next
Local $oExcel = _Excel_Open()
Local $oWorkbook1 = _Excel_BookOpen($oExcel, @ScriptDir & "\1.xls")
Local $sSource = $a
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
ClipPut ( $sSRERe )
ClipGet ( )
$oExcel.ActiveSheet.Range("F3").PasteSpecial
MsgBox(0, "", "标准答案已复制",1)
$oWorkbook1.Save()
$oExcel.Quit
EndSwitch
WEnd
本帖最后由 study520x 于 2019-6-8 00:52 编辑
发现还有个问题 就是每科的答案长度不一样 如何 导入前先删除F3 这个单元格往下列的数据再导入呢?Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\标准答案.xls")
Local $sRange = "F3:F62"
_Excel_RangeDelete($oWorkbook.ActiveSheet, $sRange, $xlShiftUp)
这个F3:F62能用什么替代不?
本帖最后由 chzj589 于 2019-6-10 15:38 编辑
study520x 发表于 2019-6-7 01:04
看论坛例子抄的最终版 还是不明白为什么这样能换行 Local $sSRERe = StringRegExpReplace($a, '(?<=\w)', @CRLF) @CRLF
chzj589 发表于 2019-6-8 18:19
#include
#include
我的已经做好了 只是不明白换行的原理是啥 study520x 发表于 2019-6-8 18:36
我的已经做好了 只是不明白换行的原理是啥
_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列
chzj589 发表于 2019-6-8 18:48
_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列
谢谢 不过答非所问:face (32): 学习,学习,非常感谢 学习,学习,非常感谢
页:
[1]