study520x 发表于 2019-6-5 20:16:36

[已解决]如何将输入的字符串变成每个字符写一列输入Excel?

本帖最后由 study520x 于 2019-6-12 20:03 编辑

学校导入选择题用的 比如说一大串标准答案ABCD
如何变成
A
B
C
D
竖排 每排就写一个字母 写入Excel?

现在一直用手工方法 好麻烦啊 求助各位大神 谢谢

1.查找? 替换^&+空格
说明:?为英文问号,一个问号代表一个汉字/英文字母,如输???则每3个字之间加空格

2.Ctrl+F3全部大写

3.粘贴到Excel

4.数据-分列-分隔符号

5.选中行复制,选择性粘贴,勾上转置

duxing 发表于 2019-6-6 09:08:26

很简单,加个回车符就可以了
        $x="a"
        $y="b"
        $s1=$x& @cr&$y
        ClipPut($s1)

afan 发表于 2019-6-6 10:18:44

Local $sSource = 'ABCD'
Local $sSRERe = StringRegExpReplace($sSource, '(?<=\w)', @CRLF)
MsgBox(0, '替换结果', $sSRERe)

study520x 发表于 2019-6-6 18:06:54

本帖最后由 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

               


study520x 发表于 2019-6-6 21:35:26

在论坛东抄西抄 作品完成了 :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

study520x 发表于 2019-6-7 01:04:34

看论坛例子抄的最终版 还是不明白为什么这样能换行
#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:10:20

本帖最后由 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-8 18:19:33

本帖最后由 chzj589 于 2019-6-10 15:38 编辑

study520x 发表于 2019-6-7 01:04
看论坛例子抄的最终版 还是不明白为什么这样能换行        Local $sSRERe = StringRegExpReplace($a, '(?<=\w)', @CRLF)      @CRLF



study520x 发表于 2019-6-8 18:36:12

chzj589 发表于 2019-6-8 18:19

#include
#include


我的已经做好了 只是不明白换行的原理是啥

chzj589 发表于 2019-6-8 18:48:27

study520x 发表于 2019-6-8 18:36
我的已经做好了 只是不明白换行的原理是啥

_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列


study520x 发表于 2019-6-9 14:13:02

chzj589 发表于 2019-6-8 18:48
_Excel_RangeDelete
删除指定工作表中一或多个单元格, 行或列

谢谢 不过答非所问:face (32):

ak47gglllk 发表于 2019-6-9 22:57:14

学习,学习,非常感谢

zhao_ming 发表于 2019-6-10 00:09:50

学习,学习,非常感谢
页: [1]
查看完整版本: [已解决]如何将输入的字符串变成每个字符写一列输入Excel?