2016年7月28日星期四

vba sheet copy, val copy.

Sub copyValToAnotherBook()
    Application.DisplayAlerts = False
    Dim srcSheet As Workbook
    Dim desSheet As Workbook
    Dim ws As Worksheet
    Dim vals As Variant
    '## Open both workbooks first:
    Set srcSheet = Workbooks.Open("C:\1\s.xlsx")
    Set desSheet = Workbooks.Open("C:\2\d.xlsx")
   
    '新規シート
    With ThisWorkbook
        Set ws = desSheet.Sheets.Add(After:=desSheet.Sheets(desSheet.Sheets.Count))
        ws.name = "news"
    End With
   Windows("s.xlsx").Activate
   srcSheet.Sheets("ss").Select
   srcSheet.Sheets("ss").Range("A1:B3").Select
   'Store the value in a variable:
   vals = srcSheet.Sheets("ss").Range("A1:B3").Value
    'Use the variable to assign a value to the other file/sheet:
    desSheet.Sheets("news").Range("A1:B3").Value = vals
   
    'Close x:
    srcSheet.Close
    desSheet.Save
   
    desSheet.Close
End Sub




Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.name = "Tempo"
End Sub




Sub CopyAllSheetsToAnotherBook()
    Dim srcSheet As Workbook
    Dim desSheet As Workbook
    Dim currentSheet As Worksheet
    Dim sheetIndex As Integer
    sheetIndex = 1
   
    Set srcSheet = Workbooks.Open("C:\1\s.xlsx")
    Set desSheet = Workbooks.Open("C:\2\d.xlsx")

    srcSheet.Activate
   
    For Each currentSheet In Worksheets
        Windows("s.xlsx").Activate
        currentSheet.Select
        currentSheet.Copy Before:=Workbooks("d.xlsx").Sheets(desSheet.Sheets.Count)
        sheetIndex = sheetIndex + 1
    Next currentSheet

End Sub




Sub CopyOneSheetToAnotherBook()
    Application.DisplayAlerts = False 'dont show Msg when exit
    Dim srcSheet   As Workbook
    Dim desSheet   As Workbook
    Dim currentSheet As Worksheet
    Dim sheetIndex As Integer
    sheetIndex = 1
   
    Set srcSheet = Workbooks.Open("C:\1\s.xlsx")
    Set desSheet = Workbooks.Open("C:\2\d.xlsx")

    Windows("s.xlsx").Activate
    Sheets("ss2").Select
    Sheets("ss2").Copy Before:=Workbooks("d.xlsx").Sheets(desSheet.Sheets.Count)
   
     srcSheet.Close
     desSheet.Save
   
     desSheet.Close
End Sub

java robot method

import static java.awt.event.KeyEvent.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
public class RobotUtil {
 private Robot robot;
  
 //strをコーピして,貼り付け
 public void pasteStr(String str) {
  //Ctrl + C (str)
  StringSelection selection = new StringSelection(str);
     Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
     clipboard.setContents(selection, null);
    
     //Ctrl + V
     robot.keyPress(KeyEvent.VK_CONTROL);
  robot.keyPress(KeyEvent.VK_V);
  robot.keyRelease(KeyEvent.VK_V);
  robot.keyRelease(KeyEvent.VK_CONTROL);
 }

 public RobotUtil() throws AWTException {
  this.robot = new Robot();
 }
 public RobotUtil(Robot robot) {
  this.robot = robot;
 }
 public void type(CharSequence characters) {
  int length = characters.length();
  for (int i = 0; i < length; i++) {
   char character = characters.charAt(i);
   type(character);
  }
 }
 public void type(char character) {
  switch (character) {
  case 'a':
   doType(VK_A);
   break;
  case 'b':
   doType(VK_B);
   break;
  case 'c':
   doType(VK_C);
   break;
  case 'd':
   doType(VK_D);
   break;
  case 'e':
   doType(VK_E);
   break;
  case 'f':
   doType(VK_F);
   break;
  case 'g':
   doType(VK_G);
   break;
  case 'h':
   doType(VK_H);
   break;
  case 'i':
   doType(VK_I);
   break;
  case 'j':
   doType(VK_J);
   break;
  case 'k':
   doType(VK_K);
   break;
  case 'l':
   doType(VK_L);
   break;
  case 'm':
   doType(VK_M);
   break;
  case 'n':
   doType(VK_N);
   break;
  case 'o':
   doType(VK_O);
   break;
  case 'p':
   doType(VK_P);
   break;
  case 'q':
   doType(VK_Q);
   break;
  case 'r':
   doType(VK_R);
   break;
  case 's':
   doType(VK_S);
   break;
  case 't':
   doType(VK_T);
   break;
  case 'u':
   doType(VK_U);
   break;
  case 'v':
   doType(VK_V);
   break;
  case 'w':
   doType(VK_W);
   break;
  case 'x':
   doType(VK_X);
   break;
  case 'y':
   doType(VK_Y);
   break;
  case 'z':
   doType(VK_Z);
   break;
  case 'A':
   doType(VK_SHIFT, VK_A);
   break;
  case 'B':
   doType(VK_SHIFT, VK_B);
   break;
  case 'C':
   doType(VK_SHIFT, VK_C);
   break;
  case 'D':
   doType(VK_SHIFT, VK_D);
   break;
  case 'E':
   doType(VK_SHIFT, VK_E);
   break;
  case 'F':
   doType(VK_SHIFT, VK_F);
   break;
  case 'G':
   doType(VK_SHIFT, VK_G);
   break;
  case 'H':
   doType(VK_SHIFT, VK_H);
   break;
  case 'I':
   doType(VK_SHIFT, VK_I);
   break;
  case 'J':
   doType(VK_SHIFT, VK_J);
   break;
  case 'K':
   doType(VK_SHIFT, VK_K);
   break;
  case 'L':
   doType(VK_SHIFT, VK_L);
   break;
  case 'M':
   doType(VK_SHIFT, VK_M);
   break;
  case 'N':
   doType(VK_SHIFT, VK_N);
   break;
  case 'O':
   doType(VK_SHIFT, VK_O);
   break;
  case 'P':
   doType(VK_SHIFT, VK_P);
   break;
  case 'Q':
   doType(VK_SHIFT, VK_Q);
   break;
  case 'R':
   doType(VK_SHIFT, VK_R);
   break;
  case 'S':
   doType(VK_SHIFT, VK_S);
   break;
  case 'T':
   doType(VK_SHIFT, VK_T);
   break;
  case 'U':
   doType(VK_SHIFT, VK_U);
   break;
  case 'V':
   doType(VK_SHIFT, VK_V);
   break;
  case 'W':
   doType(VK_SHIFT, VK_W);
   break;
  case 'X':
   doType(VK_SHIFT, VK_X);
   break;
  case 'Y':
   doType(VK_SHIFT, VK_Y);
   break;
  case 'Z':
   doType(VK_SHIFT, VK_Z);
   break;
  case '`':
   doType(VK_BACK_QUOTE);
   break;
  case '0':
   doType(VK_0);
   break;
  case '1':
   doType(VK_1);
   break;
  case '2':
   doType(VK_2);
   break;
  case '3':
   doType(VK_3);
   break;
  case '4':
   doType(VK_4);
   break;
  case '5':
   doType(VK_5);
   break;
  case '6':
   doType(VK_6);
   break;
  case '7':
   doType(VK_7);
   break;
  case '8':
   doType(VK_8);
   break;
  case '9':
   doType(VK_9);
   break;
  case '-':
   doType(VK_MINUS);
   break;
  case '=':
   doType(VK_EQUALS);
   break;
  case '~':
   doType(VK_SHIFT, VK_BACK_QUOTE);
   break;
  case '!':
   doType(VK_EXCLAMATION_MARK);
   break;
  case '@':
   doType(VK_AT);
   break;
  case '#':
   doType(VK_NUMBER_SIGN);
   break;
  case '$':
   doType(VK_DOLLAR);
   break;
  case '%':
   doType(VK_SHIFT, VK_5);
   break;
  case '^':
   doType(VK_CIRCUMFLEX);
   break;
  case '&':
   doType(VK_AMPERSAND);
   break;
  case '*':
   doType(VK_ASTERISK);
   break;
  case '(':
   doType(VK_LEFT_PARENTHESIS);
   break;
  case ')':
   doType(VK_RIGHT_PARENTHESIS);
   break;
  case '_':
   doType(VK_UNDERSCORE);
   break;
  case '+':
   doType(VK_PLUS);
   break;
  case '\t':
   doType(VK_TAB);
   break;
  case '\n':
   doType(VK_ENTER);
   break;
  case '[':
   doType(VK_OPEN_BRACKET);
   break;
  case ']':
   doType(VK_CLOSE_BRACKET);
   break;
  case '\\':
   doType(VK_BACK_SLASH);
   break;
  case '{':
   doType(VK_SHIFT, VK_OPEN_BRACKET);
   break;
  case '}':
   doType(VK_SHIFT, VK_CLOSE_BRACKET);
   break;
  case '|':
   doType(VK_SHIFT, VK_BACK_SLASH);
   break;
  case ';':
   doType(VK_SEMICOLON);
   break;
  case ':':
   doType(VK_COLON);
   break;
  case '\'':
   doType(VK_QUOTE);
   break;
  case '"':
   doType(VK_QUOTEDBL);
   break;
  case ',':
   doType(VK_COMMA);
   break;
  case '<':
   doType(VK_SHIFT, VK_COMMA);
   break;
  case '.':
   doType(VK_PERIOD);
   break;
  case '>':
   doType(VK_SHIFT, VK_PERIOD);
   break;
  case '/':
   doType(VK_SLASH);
   break;
  case '?':
   doType(VK_SHIFT, VK_SLASH);
   break;
  case ' ':
   doType(VK_SPACE);
   break;
  default:
   throw new IllegalArgumentException("Cannot type character " + character);
  }
 }
 private void doType(int... keyCodes) {
  doType(keyCodes, 0, keyCodes.length);
 }
 private void doType(int[] keyCodes, int offset, int length) {
  if (length == 0) {
   return;
  }
  robot.keyPress(keyCodes[offset]);
  doType(keyCodes, offset + 1, length - 1);
  robot.keyRelease(keyCodes[offset]);
 }

 public void clickPos(int x,int y){
  robot.mouseMove(x, y);
  robot.mousePress(BUTTON1_MASK);
  robot.mouseRelease(BUTTON1_MASK);
  robot.delay(100);
 }

 //取得マウスの位置(x,y)
 public void printMousePostion(){
  int x = 0;
  int y = 0;
  int loopCnt = 0;
  while (true) {
   robot.delay(100);
   if (x == MouseInfo.getPointerInfo().getLocation().x && y == MouseInfo.getPointerInfo().getLocation().y) {
    loopCnt++;
   } else {
    x = MouseInfo.getPointerInfo().getLocation().x;
    y = MouseInfo.getPointerInfo().getLocation().y;
   }
   if (loopCnt > 30) {
    System.out.println("(" + x + ", " + y + ")");
    loopCnt=0;
   }
  }
 }
}

2016年7月20日星期三

VBA`ファイル操作

Sub doExcel(ByRef pathFile As String)
   
    Dim wb As Workbook
    Dim sheet_ZP, sheet_Work As Worksheet
       
    Dim lineNo, midLongth, i, No, maxLine, typeCol, lengthCol, resultCol, startLine, logLine As Integer
    Dim length, NX, retStr, startStr, endStr, midStr, itemName, MID_STR, NoStr As String
   
    typeCol = 4
    lengthCol = 16
    resultCol = 20
    startLine = 8
    itemNameCol = 2
   
    On Error Resume Next
    Set wb = Workbooks.Open(Filename:=pathFile)
    Set sheet_ZP = wb.Worksheets("挔昜崁栚")
    Set sheet_Work = wb.Worksheets("WORK")
    'sheet_Work.Columns("I:I").NumberFormatLocal = "@"
    'max line num of sheet
    'maxLine = sheet_ZP.Range("b65536").End(xlUp).Row
    maxLine = 400
    logLine = 1
    No = 0
    
     For lineNo = startLine To maxLine
        itemName = Trim(sheet_ZP.Cells(lineNo, itemNameCol).Value)
        If itemName = "" And sheet_ZP.Cells(lineNo, itemNameCol).MergeCells Then
            GoTo Continue
        ElseIf Not sheet_ZP.Cells(lineNo, itemNameCol).Borders(xlEdgeBottom).LineStyle = xlContinuous Then
            Exit For
        End If
       
        NX = getNX(sheet_ZP, sheet_Work, itemName)
       
        If NX = "NNNXXX" Then
            Worksheets("log").Cells(logLine, 1) = pathFile
            logLine = logLine + 1
        End If
       
        length = Trim(sheet_ZP.Cells(lineNo, lengthCol).Value)
       
        No = No + 1
       
       
        retStr = getRetStr(CStr(No), length, itemName, NX)
      
        sheet_ZP.Cells(lineNo, resultCol) = retStr
Continue:
     Next
     wb.Save
     wb.Close
End Sub
Sub test()
    Dim file As String
    file = "C:\1\挔昜愝寁彂_WAP0001_埗柤擖椡妋擣昜.xlsx"
    Call doExcel(file)
End Sub
Sub main()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim i As Integer
    Dim pf As String
   
    'Create an instance of the FileSystemObject
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Get the folder object
    'Set objFolder = objFSO.GetFolder("C:\1\zp_work")
   
    Set objFolder = objFSO.GetFolder("C:\1\t")
    'Set objFolder = objFSO.GetFolder("C:\1\wode")
    'loops through each file in the directory and prints their names and path
    For Each objFile In objFolder.Files
        If InStr(1, objFile.Path, "~", 1) = False Then
        pf = objFile.Path
             Call doExcel(pf)
        End If
    Next objFile
End Sub
Sub copyWork()
    Dim objFSO As Object
    Dim bkFolder, desFolder As Object
    Dim bkFile, desFile As Object
    Dim i As Integer
    Dim pf As String
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
   
    Set bkFolder = objFSO.GetFolder("C:\1\715\bk")
    Set desFolder = objFSO.GetFolder("C:\1\715\des")
    For Each desFile In desFolder.Files
        For Each bkFile In bkFolder.Files
       
            If Replace(bkFile.name, "bk_", "") = desFile.name Then
                 Workbooks(bkFile.Path).Worksheets(5).Copy After:=Workbooks(desFile.Path).Worksheets(6)
            End If
        Next bkFile
    Next desFile
End Sub
'C:\棲嶌嬈\pdf\0720
Sub copyWorkNG()
    Dim objFSO As Object
    Dim bkFolder, desFolder As Object
    Dim bkFile, desFile As Object
    Dim i As Integer
    Dim pf As String
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
   
    Set bkFolder = objFSO.GetFolder("C:\棲嶌嬈\pdf\0720")
    Set desFolder = objFSO.GetFolder("C:\1\720")
    For Each desFile In desFolder.Files
        If InStr(1, desFile.Path, "~", 1) = False Then
            'Workbooks("C:\1\720\2\WFP0310_幮夛暉巸朄恖尭柶妋擣徹_僠僃僢僋儕僗僩.xlsx").Worksheets("強尒0719").Copy After:=Workbooks(desFile.Path).Worksheets("WORK")
            Workbooks(desFile.Path).Worksheets(2).Copy After:=Workbooks(desFile.Path).Worksheets(3)
        End If
    Next desFile
End Sub

Sub countWork()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim i As Integer
    Dim pf As String
    Dim workCnt, zpCnt, iWB As Integer
    Dim itemName As String
   
    Dim wb As Workbook
    Dim sheet_ZP, sheet_Work As Worksheet
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\1\BK_20160715")
    iWB = 1
    For Each objFile In objFolder.Files
       
        If InStr(objFile.Path, "~") > 0 Then
            GoTo conobj
        End If
        On Error Resume Next
        Set wb = Workbooks.Open(Filename:=objFile.Path)
        Application.AskToUpdateLinks = False
        'ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
        Set sheet_ZP = wb.Worksheets("挔昜崁栚")
        Set sheet_Work = wb.Worksheets("WORK")
       
       
        workCnt = 0
        zpCnt = 0
       
        For lineNo = 8 To 400
             itemName = Trim(sheet_ZP.Cells(lineNo, 2).Value)
             If itemName = "" And sheet_ZP.Cells(lineNo, 2).MergeCells Then
                 GoTo ContinueZP
             ElseIf Not sheet_ZP.Cells(lineNo, 2).Borders(xlEdgeBottom).LineStyle = xlContinuous Then
                 Exit For
             End If
             zpCnt = zpCnt + 1
ContinueZP:
        Next
        lineNo = 0
        For lineNo = 4 To 400
             itemName = Trim(sheet_Work.Cells(lineNo, 1).Value)
             If itemName = "" Then
                 Exit For
             End If
             workCnt = workCnt + 1
        Next
        iWB = iWB + 1
       
        Workbooks("vba_0001.xlsm").Worksheets("log").Cells(iWB, 1) = objFile.name
        Workbooks("vba_0001.xlsm").Worksheets("log").Cells(iWB, 2) = zpCnt
        Workbooks("vba_0001.xlsm").Worksheets("log").Cells(iWB, 3) = workCnt
        wb.Close savechanges:=False
conobj:
    Next objFile
End Sub
Sub skeduleSheet()
    Dim wb As Workbook
    Dim sheet_ZP, sheet_Work As Worksheet
       
    Dim lineNo, midLongth, i, No, maxLine, typeCol, lengthCol, resultCol, startLine, logLine, lineD, lineS As Integer
    Dim length, NX, retStr, startStr, endStr, midStr, itemName, MID_STR, NoStr, pathFile, sName, dName As String
   
    typeCol = 4
    lengthCol = 16
    resultCol = 20
    startLine = 8
    itemNameCol = 2
    pathFile = ""
   
    On Error Resume Next
    Set wb = Workbooks.Open(Filename:="C:\1\挔昜崁栚悢.xlsx")
    Set sheet_d = wb.Worksheets("d")
    Set sheet_s = wb.Worksheets("s")
    'sheet_Work.Columns("I:I").NumberFormatLocal = "@"
    'max line num of sheet
    'maxLine = sheet_ZP.Range("b65536").End(xlUp).Row
    maxLine = 400
    logLine = 1
    No = 0
    
    For lineD = 1 To maxLine
        dName = Trim(sheet_d.Cells(lineD, 2).Value)
       
       
        For lineS = 2 To maxLine
            sName = Trim(sheet_s.Cells(lineS, 1).Value)
           
             If InStr(sName, dName) > 0 Then
                  sheet_d.Cells(lineD, 7) = sheet_s.Cells(lineS, 2).Value
                  sheet_d.Cells(lineD, 8) = sheet_s.Cells(lineS, 3).Value
              End If
           
        Next
       
     Next
  
  
  
  
End Sub
'
Function getNX(sheet_ZP, sheet_Work As Worksheet, ByVal val As String) As String
   
    If val = "埗柤廧強丂奜帤" Then
        MsgBox "埗柤廧強丂奜帤侾"
    End If
   
   
    Dim maxLine_sheet_ZP, maxLine_sheet_Work, startZp, startWork, iZP, iWork, iIsX As Integer
    Dim itemName_Work, ret, zhaiYaoNX As String
    maxLine_sheet_Work = sheet_Work.Range("b65536").End(xlUp).Row
    startZp = 8
    startWork = 4
   
    val = removeDig(val)
   
    getNX = "N"
   
    If InStr(1, val, "揈梫", 1) Then
       
        For iWork = startZp To maxLine_sheet_Work
            itemName_Work = Trim(sheet_Work.Cells(iWork, 1).Value)
            itemName_Work = removeDig(itemName_Work)
            If InStr(1, itemName_Work, "揈梫", 1) Then
               zhaiYaoNX = zhaiYaoNX + Trim(sheet_Work.Cells(iWork, 4).Value)
            End If
        Next
       
        If InStr(1, zhaiYaoNX, "N", 1) And InStr(1, zhaiYaoNX, "X", 1) Then
            getNX = "NNNXXX"
        ElseIf InStr(1, zhaiYaoNX, "X", 1) Then
            getNX = "X"
        ElseIf InStr(1, zhaiYaoNX, "N", 1) Then
            getNX = "N"
        End If
       
    Else
   
        For iWork = startZp To maxLine_sheet_Work
            itemName_Work = Trim(sheet_Work.Cells(iWork, 1).Value)
            itemName_Work = removeDig(itemName_Work)
            If InStr(1, val, itemName_Work, 1) Or InStr(1, itemName_Work, val, 1) Then
                NX = Trim(sheet_Work.Cells(iWork, 4).Value)
                If NX = "X" Then
                    getNX = "X"
                    Exit For
                End If
            End If
        Next
    End If
   
End Function
'暥帤楍偵悢帤傪嶍彍偡傞
Function removeDig(ByVal val As String) As String
    Dim re
    Set re = CreateObject("VBScript.RegExp")
   
    ' 惓婯昞尰僷僞乕儞傪僙僢僩
    re.pattern = "[侽-俋|0-9]+"
    ' 戞堦堷悢偑抲姺懳徾偺暥帤楍丄戞擇堷悢偑抲姺暥帤楍
    removeDig = re.Replace(val, "")
End Function
Function getRetStr(ByVal No As String, ByVal length As String, ByVal itemName As String, ByVal NX As String) As String
   
    Dim NoStr, retStr, midStr, endStr, MID_STR As String
   
    NoStr = Trim(str(No))
    retStr = ""
    endStr = ">"
    midStr = ""
    MID_STR = "?
      
    midLongth = length - 1 - Len(No)
   
    For i = 1 To midLongth
        midStr = midStr & MID_STR
    Next
   
    If midLongth < 0 Then
        endStr = ""
    End If
   
    retStr = NoStr & midStr & endStr
   
    If itemName = "埗柤廧強丂奜帤" Then
        MsgBox "埗柤廧強丂奜帤"
    End If
   
    If (midLongth < 0 And CInt(length) <= Len(NoStr)) Then
        If NX = "N" Then
            retStr = Left(itemName, length)
        Else
            retStr = Left("构构构", length)
        End If
    End If
    If NX = "N" Then
        retStr = StrConv(retStr, vbWide)
    End If
   
    getRetStr = retStr
End Function